{"version":3,"file":"select2-DFoZIcXd.js","sources":["../../../node_modules/select2/dist/js/select2.js"],"sourcesContent":["/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n ''\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option--selectable');\n\n var $selected = $options.filter('.select2-results__option--selected');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && selectedIds.indexOf(id) > -1)) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n\n var attrs = {\n 'role': 'option'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option--selectable',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.hasClass('select2-results__option--selected')) {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option--selectable',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted')\n .attr('aria-selected', 'false');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '' +\n ''\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--single');\n\n $selection.html(\n '' +\n '' +\n '' +\n ''\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--multiple');\n\n $selection.html(\n ''\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n\n this.$selection.on(\n 'keydown',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n evt.stopPropagation();\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '
  • ' +\n '' +\n '' +\n '
  • '\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n .attr('id') + '-choice-';\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display')\n .append(formatted)\n .attr('id', selectionId);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n\n var $remove = $selection.find('.select2-selection__choice__remove');\n\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n $rendered.append($selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n\n var placeholderTitle = placeholder.title ||\n placeholder.text ||\n $placeholder.text();\n\n this.$selection.find('.select2-selection__rendered').attr(\n 'title',\n placeholderTitle\n );\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered')\n .attr('id');\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n ''\n );\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n\n decorated.call(this, container, $container);\n\n self.$search.attr('aria-describedby', selectionId);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection\n .find('.select2-selection__choice').last();\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '100%';\n\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n '../utils'\n], function (Utils) {\n function SelectionCSS () { }\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n\n return $selection;\n };\n\n return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n\n var data = Array.prototype.map.call(\n this.$element[0].querySelectorAll(':checked'),\n function (selectedElement) {\n return self.item($(selectedElement));\n }\n );\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (\n data.element != null && data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if (\n data.element != null &&\n data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n if (\n this.tagName.toLowerCase() !== 'option' &&\n this.tagName.toLowerCase() !== 'optgroup'\n ) {\n return;\n }\n\n var $option = $(this);\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $(option);\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n var option = $option[0];\n\n if (option.tagName.toLowerCase() === 'option') {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if (option.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n $option.append($children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !Array.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if (separators.indexOf(termChar) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '' +\n '' +\n ''\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery'\n], function ($) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown[0].classList\n .contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList\n .contains('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n '../utils'\n], function (Utils) {\n function DropdownCSS () { }\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n '../utils'\n], function (Utils) {\n function TagsSearchHighlight () { }\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results\n .find(\n '.select2-results__option--selectable' +\n ':not(.select2-results__option--selected)'\n );\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n },\n removeItem: function () {\n return 'Remove item';\n },\n search: function() {\n return 'Search';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/selectionCss',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n './dropdown/dropdownCss',\n './dropdown/tagsSearchHighlight',\n\n './i18n/en'\n], function ($,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, SelectionCSS, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n DropdownCSS, TagsSearchHighlight,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n TagsSearchHighlight\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'jquery',\n './defaults',\n './utils'\n], function ($, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n\n return false;\n };\n\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n this._observer = null;\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '' +\n '' +\n '' +\n ''\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container[0].classList\n .add('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n"],"names":["factory","jQuery","S2","fn","select2","amd","requirejs","require","define","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","Object","prototype","hasOwnProperty","aps","slice","jsSuffixRegExp","hasProp","obj","prop","call","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","i","j","part","baseParts","split","map","starMap","length","nodeIdCompat","test","replace","charAt","concat","splice","join","makeRequire","relName","forceSync","args","arguments","push","apply","makeLoad","depName","value","callDep","Error","splitPrefix","prefix","index","indexOf","substring","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","n","pr","p","exports","e","module","id","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","alt","setTimeout","cfg","_defined","define2","S22","_$","$","console","error","Utils","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","this","constructor","key","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","Array","argCount","calledConstructor","displayName","m","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","on","event","trigger","params","_type","invoke","len","generateChars","chars","Math","floor","random","toString","bind","func","context","_convertData","data","originalKey","keys","dataLevel","k","toLowerCase","hasScroll","el","$el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","String","match","__cache","GetUniqueElementId","element","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","copyNonInternalCssClasses","dest","src","destinationClasses","trim","filter","clazz","sourceClasses","replacements","Results","$element","options","dataAdapter","render","$results","get","attr","clear","empty","displayMessage","hideLoading","$message","message","append","className","hideMessages","find","remove","$options","results","sort","item","$option","option","children","position","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","each","classList","add","showLoading","loading","disabled","text","loadingMore","$loading","prepend","document","createElement","attrs","role","matches","window","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","val","label","template","$children","c","child","$child","$childrenContainer","class","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","hasClass","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","preventDefault","stopPropagation","evt","$this","originalEvent","removeClass","destroy","offsetDelta","result","content","display","innerHTML","$2","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","which","update","_attachCloseHandler","_detachCloseHandler","activeElement","contains","body","$select","target","closest","off","isEnabled","isDisabled","SingleSelection","html","$rendered","selectionContainer","selection","formatted","MultipleSelection","parent","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","isDefaultPrevented","$previousChoice","last","searchRemoveChoice","msie","documentMode","disableInputEvents","type","handleSearch","searchHadFocus","input","term","css","width","SelectionCSS","selectionCssClass","addClass","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","extend","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","querySelectorAll","selectedElement","select","tagName","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","defaults","q","transport","success","failure","$request","ajax","then","fail","_request","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","_removeOldTags","page","wrapper","checkChildren","toUpperCase","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","substr","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","appendTo","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","search","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","amdLanguageBase","autocomplete","dropdownAutoWidth","original","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","jquery","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","addedNodes","removedNodes","some","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","removeData","thisMethods","instanceOptions","instance","jQuery2","root","require$$0"],"mappings":"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IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,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","x_google_ignoreList":[0]}