{"version":3,"sources":["webpack:///./node_modules/select2/dist/js/select2.full.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/vue3-select2-component/src/Select2.vue","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./node_modules/vue3-select2-component/src/Select2.vue?efd9"],"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","normalizedBaseParts","baseParts","split","map","starMap","length","nodeIdCompat","test","replace","charAt","concat","splice","join","makeRequire","relName","forceSync","args","arguments","push","apply","makeNormalize","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","undefined","alt","setTimeout","cfg","_defined","_$","$","console","error","Utils","getMethods","theClass","proto","methods","methodName","m","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","this","constructor","key","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","Array","argCount","calledConstructor","ctr","displayName","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","on","event","trigger","params","_type","invoke","len","generateChars","chars","randomChar","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","appendMany","$element","$nodes","jquery","substr","$jqNodes","node","add","append","__cache","GetUniqueElementId","element","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","Results","options","dataAdapter","render","$results","get","attr","clear","empty","displayMessage","hideLoading","$message","message","className","hideMessages","find","remove","$options","results","sort","item","$option","option","children","position","$dropdown","$resultsContainer","sorter","highlightFirstItem","$selected","filter","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","each","inArray","showLoading","loadingMore","loading","disabled","text","$loading","prepend","document","createElement","attrs","matches","window","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","role","val","label","template","$children","c","child","$child","$childrenContainer","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","addClass","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","preventDefault","stopPropagation","evt","$this","originalEvent","removeClass","destroy","offsetDelta","result","content","display","innerHTML","KEYS","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","which","update","_attachCloseHandler","_detachCloseHandler","activeElement","contains","body","$target","target","$select","closest","$all","off","$selectionContainer","isEnabled","isDisabled","SingleSelection","html","$rendered","selectionContainer","selection","formatted","MultipleSelection","$remove","parent","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","multipleSelections","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","isDefaultPrevented","$previousChoice","prev","searchRemoveChoice","msie","documentMode","disableInputEvents","type","handleSearch","searchHadFocus","resizeSearch","input","term","css","width","minimumWidth","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","extend","translation","_cache","loadPath","path","translations","diacritics","BaseAdapter","query","generateResultId","SelectAdapter","select","is","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","defaults","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","success","failure","$request","ajax","then","fail","_request","isFunction","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","wrapper","checkChildren","optionText","toUpperCase","paramsTerm","checkText","_removeOldTags","page","trim","Tokenizer","tokenizer","dropdown","createAndSelect","$existingOptions","tokenData","separators","termChar","partParams","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","loadingMoreOffset","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","hasClass","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","errorLoading","inputTooLong","overChars","inputTooShort","remainingChars","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","original","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","languageParts","baseLanguage","languageData","ex","warn","set","camelKey","camelCase","convertedData","Options","fromElement","InputCompat","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","camelDataName","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","computedStyle","getComputedStyle","_syncA","_syncS","_syncSubtree","attachEvent","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","addEventListener","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","changed","nodeName","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","detachEvent","disconnect","removeEventListener","removeData","syncCssClasses","$dest","$src","adapter","classes","adapted","replacements","CompatUtils","_containerAdapter","clazz","containerCssAdapter","_cssAdapter","_dropdownAdapter","dropdownCssAdapter","_isInitialized","InputData","_currentData","_valueSeparator","getSelected","allData","values","oldMatcher","wrappedMatcher","doesMatch","AttachContainer","StopPropagation","stoppedEvents","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","fixHooks","mouseHooks","special","version","setup","handler","onmousewheel","getLineHeight","getPageHeight","teardown","elem","$elem","$parent","parseInt","settings","adjustOldDeltas","normalizeOffset","orgEvent","delta","deltaX","absDelta","offsetX","offsetY","fix","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaMode","lineHeight","pageHeight","max","abs","shouldAdjustOldDeltas","getBoundingClientRect","boundingRect","clientX","clientY","deltaFactor","nullLowestDelta","dispatch","handle","unmousewheel","unbind","thisMethods","instanceOptions","instance","$find","addToUnscopables","FIND","SKIPS_HOLES","forced","callbackfn","class","required","_arrayLikeToArray","arr","arr2","_arrayWithoutHoles","arrayLikeToArray","_iterableToArray","iter","Symbol","iterator","from","_unsupportedIterableToArray","o","minLen","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_defineProperty","defineProperty","enumerable","configurable","writable","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","source","forEach","getOwnPropertyDescriptors","defineProperties","emits","props","modelValue","default","Boolean","watch","setOption","deep","setValue","mounted","$emit","beforeUnmount","__exports__"],"mappings":"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AAU,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,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,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,I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","file":"js/chunk-01b4a44c.258be34d.js","sourcesContent":["/*!\n * Select2 4.0.13\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 // Append an array of jQuery nodes to a given element.\n Utils.appendMany = function ($element, $nodes) {\n // jQuery 1.7.x does not support $.fn.append() with an array\n // Fall back to a jQuery object collection using $.fn.add()\n if ($.fn.jquery.substr(0, 3) === '1.7') {\n var $jqNodes = $();\n\n $.map($nodes, function (node) {\n $jqNodes = $jqNodes.add(node);\n });\n\n $nodes = $jqNodes;\n }\n\n $element.append($nodes);\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.\n // If an id already exists, it simply returns it.\n\n var select2Id = element.getAttribute('data-select2-id');\n if (select2Id == null) {\n // If element has id, use it.\n if (element.id) {\n select2Id = element.id;\n element.setAttribute('data-select2-id', select2Id);\n } else {\n element.setAttribute('data-select2-id', ++id);\n select2Id = id.toString();\n }\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 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[aria-selected]');\n\n var $selected = $options.filter('[aria-selected=true]');\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 = $.map(selected, function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option[aria-selected]');\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 && $.inArray(id, selectedIds) > -1)) {\n $option.attr('aria-selected', 'true');\n } else {\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.className = 'select2-results__option';\n\n var attrs = {\n 'role': 'option',\n 'aria-selected': 'false'\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 delete attrs['aria-selected'];\n attrs['aria-disabled'] = 'true';\n }\n\n if (data.id == null) {\n delete attrs['aria-selected'];\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 delete attrs['aria-selected'];\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 var $label = $(label);\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 });\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.attr('aria-selected') == 'true') {\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('[aria-selected]');\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('[aria-selected]');\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.addClass('select2-results__option--highlighted');\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[aria-selected]',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.attr('aria-selected') === 'true') {\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[aria-selected]',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted');\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('[aria-selected]');\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.addClass('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\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.addClass('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 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\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\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 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 $selection.append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\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 Utils.appendMany($rendered, $selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n '../utils'\n], function (Utils) {\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.addClass('select2-selection__placeholder')\n .removeClass('select2-selection__choice');\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 if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n '' +\n '×' +\n ''\n );\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.find('.select2-selection__rendered').prepend($remove);\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 $search = $(\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\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 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.$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.$searchContainer\n .prev('.select2-selection__choice');\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.$selection.find('.select2-selection__rendered')\n .append(this.$searchContainer);\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 = '';\n\n if (this.$search.attr('placeholder') !== '') {\n width = this.$selection.find('.select2-selection__rendered').width();\n } else {\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/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 ($.inArray(name, relayEvents) === -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 ($.inArray(name, preventableEvents) === -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 data = [];\n var self = this;\n\n this.$element.find(':selected').each(function () {\n var $option = $(this);\n\n var option = self.item($option);\n\n data.push(option);\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 ($(data.element).is('option')) {\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 ($.inArray(id, val) === -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 ($(data.element).is('option')) {\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 && $.inArray(id, val) === -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 var $option = $(this);\n\n if (!$option.is('option') && !$option.is('optgroup')) {\n return;\n }\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 Utils.appendMany(this.$element, $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 $option = $(option);\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 if ($option.is('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.is('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 ($.inArray(item.id, existingIds) >= 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 Utils.appendMany($option, $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 ($.isFunction(this._request.abort)) {\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 || !$.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 ($.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 var term = $.trim(params.term);\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 ($.inArray(termChar, separators) === -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 '../utils'\n], function ($, Utils) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\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.removeClass('select2-search--hide');\n } else {\n self.$searchContainer.addClass('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.removeClass('select2');\n $dropdown.addClass('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.hasClass('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown.hasClass('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\n .removeClass('select2-dropdown--below select2-dropdown--above')\n .addClass('select2-dropdown--' + newDirection);\n this.$container\n .removeClass('select2-container--below select2-container--above')\n .addClass('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/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 };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n 'require',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\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\n './i18n/en'\n], function ($, require,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, 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\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 if (options.query != null) {\n var Query = require(options.amdBase + 'compat/query');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Query\n );\n }\n\n if (options.initSelection != null) {\n var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n InitSelection\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\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 (\n options.dropdownCssClass != null ||\n options.dropdownCss != null ||\n options.adaptDropdownCssClass != null\n ) {\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\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 (\n options.containerCssClass != null ||\n options.containerCss != null ||\n options.adaptContainerCssClass != null\n ) {\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n ContainerCSS\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 ($.trim(params.term) === '') {\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 amdBase: './',\n amdLanguageBase: './i18n/',\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 (!$.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 'require',\n 'jquery',\n './defaults',\n './utils'\n], function (require, $, 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 if ($element && $element.is('input')) {\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n this.options.dataAdapter = Utils.Decorate(\n this.options.dataAdapter,\n InputCompat\n );\n }\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.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 ($.inArray(key, excludedData) > -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.addClass('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 if (this.$element[0].attachEvent) {\n this.$element[0].attachEvent('onpropertychange', this._syncA);\n }\n\n var observer = window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n ;\n\n if (observer != null) {\n this._observer = new observer(function (mutations) {\n self._syncA();\n self._syncS(null, mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n } else if (this.$element[0].addEventListener) {\n this.$element[0].addEventListener(\n 'DOMAttrModified',\n self._syncA,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeInserted',\n self._syncS,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeRemoved',\n self._syncS,\n false\n );\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 ($.inArray(name, nonRelayEvents) !== -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.addClass('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container.removeClass('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container.removeClass('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container.addClass('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container.removeClass('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.TAB ||\n (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER) {\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 (evt, mutations) {\n var changed = false;\n var self = this;\n\n // Ignore any mutation events raised for elements that aren't options or\n // optgroups. This handles the case when the select element is destroyed\n if (\n evt && evt.target && (\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n )\n ) {\n return;\n }\n\n if (!mutations) {\n // If mutation events aren't supported, then we can only assume that the\n // change affected the selections\n changed = true;\n } else 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 changed = true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n changed = true;\n } else if ($.isArray(mutations)) {\n $.each(mutations, function(evt, mutation) {\n if (self._isChangeMutation(evt, mutation)) {\n // We've found a change mutation.\n // Let's escape from the loop and continue\n changed = true;\n return false;\n }\n });\n }\n return changed;\n };\n\n Select2.prototype._syncSubtree = function (evt, mutations) {\n var changed = this._isChangeMutation(evt, 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.hasClass('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container.hasClass('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.addClass('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 ($.isArray(newVal)) {\n newVal = $.map(newVal, 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 this.$container.remove();\n\n if (this.$element[0].detachEvent) {\n this.$element[0].detachEvent('onpropertychange', this._syncA);\n }\n\n if (this._observer != null) {\n this._observer.disconnect();\n this._observer = null;\n } else if (this.$element[0].removeEventListener) {\n this.$element[0]\n .removeEventListener('DOMAttrModified', this._syncA, false);\n this.$element[0]\n .removeEventListener('DOMNodeInserted', this._syncS, false);\n this.$element[0]\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\n }\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.removeClass('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.addClass('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('select2/compat/utils',[\n 'jquery'\n], function ($) {\n function syncCssClasses ($dest, $src, adapter) {\n var classes, replacements = [], adapted;\n\n classes = $.trim($dest.attr('class'));\n\n if (classes) {\n classes = '' + classes; // for IE which returns object\n\n $(classes.split(/\\s+/)).each(function () {\n // Save all Select2 classes\n if (this.indexOf('select2-') === 0) {\n replacements.push(this);\n }\n });\n }\n\n classes = $.trim($src.attr('class'));\n\n if (classes) {\n classes = '' + classes; // for IE which returns object\n\n $(classes.split(/\\s+/)).each(function () {\n // Only adapt non-Select2 classes\n if (this.indexOf('select2-') !== 0) {\n adapted = adapter(this);\n\n if (adapted != null) {\n replacements.push(adapted);\n }\n }\n });\n }\n\n $dest.attr('class', replacements.join(' '));\n }\n\n return {\n syncCssClasses: syncCssClasses\n };\n});\n\nS2.define('select2/compat/containerCss',[\n 'jquery',\n './utils'\n], function ($, CompatUtils) {\n // No-op CSS adapter that discards all classes by default\n function _containerAdapter (clazz) {\n return null;\n }\n\n function ContainerCSS () { }\n\n ContainerCSS.prototype.render = function (decorated) {\n var $container = decorated.call(this);\n\n var containerCssClass = this.options.get('containerCssClass') || '';\n\n if ($.isFunction(containerCssClass)) {\n containerCssClass = containerCssClass(this.$element);\n }\n\n var containerCssAdapter = this.options.get('adaptContainerCssClass');\n containerCssAdapter = containerCssAdapter || _containerAdapter;\n\n if (containerCssClass.indexOf(':all:') !== -1) {\n containerCssClass = containerCssClass.replace(':all:', '');\n\n var _cssAdapter = containerCssAdapter;\n\n containerCssAdapter = function (clazz) {\n var adapted = _cssAdapter(clazz);\n\n if (adapted != null) {\n // Append the old one along with the adapted one\n return adapted + ' ' + clazz;\n }\n\n return clazz;\n };\n }\n\n var containerCss = this.options.get('containerCss') || {};\n\n if ($.isFunction(containerCss)) {\n containerCss = containerCss(this.$element);\n }\n\n CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);\n\n $container.css(containerCss);\n $container.addClass(containerCssClass);\n\n return $container;\n };\n\n return ContainerCSS;\n});\n\nS2.define('select2/compat/dropdownCss',[\n 'jquery',\n './utils'\n], function ($, CompatUtils) {\n // No-op CSS adapter that discards all classes by default\n function _dropdownAdapter (clazz) {\n return null;\n }\n\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 ($.isFunction(dropdownCssClass)) {\n dropdownCssClass = dropdownCssClass(this.$element);\n }\n\n var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');\n dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n var _cssAdapter = dropdownCssAdapter;\n\n dropdownCssAdapter = function (clazz) {\n var adapted = _cssAdapter(clazz);\n\n if (adapted != null) {\n // Append the old one along with the adapted one\n return adapted + ' ' + clazz;\n }\n\n return clazz;\n };\n }\n\n var dropdownCss = this.options.get('dropdownCss') || {};\n\n if ($.isFunction(dropdownCss)) {\n dropdownCss = dropdownCss(this.$element);\n }\n\n CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);\n\n $dropdown.css(dropdownCss);\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/compat/initSelection',[\n 'jquery'\n], function ($) {\n function InitSelection (decorated, $element, options) {\n if (options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `initSelection` option has been deprecated in favor' +\n ' of a custom data adapter that overrides the `current` method. ' +\n 'This method is now called multiple times instead of a single ' +\n 'time when the instance is initialized. Support will be removed ' +\n 'for the `initSelection` option in future versions of Select2'\n );\n }\n\n this.initSelection = options.get('initSelection');\n this._isInitialized = false;\n\n decorated.call(this, $element, options);\n }\n\n InitSelection.prototype.current = function (decorated, callback) {\n var self = this;\n\n if (this._isInitialized) {\n decorated.call(this, callback);\n\n return;\n }\n\n this.initSelection.call(null, this.$element, function (data) {\n self._isInitialized = true;\n\n if (!$.isArray(data)) {\n data = [data];\n }\n\n callback(data);\n });\n };\n\n return InitSelection;\n});\n\nS2.define('select2/compat/inputData',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function InputData (decorated, $element, options) {\n this._currentData = [];\n this._valueSeparator = options.get('valueSeparator') || ',';\n\n if ($element.prop('type') === 'hidden') {\n if (options.get('debug') && console && console.warn) {\n console.warn(\n 'Select2: Using a hidden input with Select2 is no longer ' +\n 'supported and may stop working in the future. It is recommended ' +\n 'to use a `