{"version":3,"sources":["bundle.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","fn","marquee","x","this","each","extend","defaults","b","y","E","d","toLowerCase","addEventListener","F","hasOwnProperty","push","join","l","pause","allowCss3Support","css","data","trigger","resume","toggle","destroy","clearTimeout","timer","find","addBack","unbind","html","isFunction","attr","speed","duration","parseInt","width","v","direction","gap","duplicated","wrapInner","h","margin-right","float","clone","appendTo","k","height","removeAttr","margin-bottom","q","startVisible","_completeDuration","m","document","body","createElement","g","Math","floor","random","A","B","style","animation","z","delayBeforeStart","css3easing","C","D","w","_originalDuration","trim","transform","filter","append","animate","easing","pauseOnCycle","setTimeout","bind","pauseOnHover","jQuery","2","global","factory","define","amd","root","undefined","window","S2","select2","requirejs","undef","hasProp","obj","prop","hasOwn","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","j","part","normalizedBaseParts","baseParts","split","map","config","starMap","nodeIdCompat","jsSuffixRegExp","test","replace","charAt","slice","concat","splice","makeRequire","relName","forceSync","args","aps","arguments","req","apply","makeNormalize","makeLoad","depName","value","defined","callDep","waiting","defining","main","splitPrefix","prefix","index","indexOf","substring","makeRelParts","makeConfig","makeMap","handlers","Object","prototype","relParts","plugin","parts","relResourceName","pr","id","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","alt","cfg","_defined","_$","$","console","error","getMethods","theClass","proto","methods","methodName","Utils","Extend","ChildClass","SuperClass","BaseConstructor","constructor","__hasProp","key","__super__","Decorate","DecoratorClass","DecoratedClass","unshift","Array","argCount","calledConstructor","ctr","decoratedMethods","superMethods","displayName","superMethod","decoratedMethod","originalMethod","Observable","listeners","on","event","params","_type","invoke","len","generateChars","chars","toString","func","context","_convertData","originalKey","keys","dataLevel","hasScroll","el","$el","overflowX","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","\\","&","<",">","\"","'","/","String","match","appendMany","$element","$nodes","jquery","substr","$jqNodes","node","add","__cache","GetUniqueElementId","element","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","Results","options","dataAdapter","render","$results","get","clear","empty","displayMessage","hideLoading","$message","message","className","hideMessages","remove","$options","results","children","sort","item","$option","option","position","$dropdown","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","inArray","showLoading","loadingMore","loading","disabled","text","$loading","prepend","attrs","role","aria-selected","matches","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","val","label","template","$children","child","$child","$childrenContainer","class","container","$container","isOpen","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","addClass","mousewheel","bottom","deltaY","isAtTop","isAtBottom","preventDefault","stopPropagation","evt","$this","originalEvent","removeClass","offsetDelta","result","content","display","innerHTML","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","which","update","_attachCloseHandler","_detachCloseHandler","activeElement","contains","$target","target","$select","closest","off","isEnabled","isDisabled","SingleSelection","$rendered","selectionContainer","selection","formatted","MultipleSelection","$remove","parent","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","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","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","translation","_cache","loadPath","path","translations","Ⓐ","A","À","Á","Â","Ầ","Ấ","Ẫ","Ẩ","Ã","Ā","Ă","Ằ","Ắ","Ẵ","Ẳ","Ȧ","Ǡ","Ä","Ǟ","Ả","Å","Ǻ","Ǎ","Ȁ","Ȃ","Ạ","Ậ","Ặ","Ḁ","Ą","Ⱥ","Ɐ","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ⓑ","B","Ḃ","Ḅ","Ḇ","Ƀ","Ƃ","Ɓ","Ⓒ","C","Ć","Ĉ","Ċ","Č","Ç","Ḉ","Ƈ","Ȼ","Ꜿ","Ⓓ","D","Ḋ","Ď","Ḍ","Ḑ","Ḓ","Ḏ","Đ","Ƌ","Ɗ","Ɖ","Ꝺ","DZ","DŽ","Dz","Dž","Ⓔ","E","È","É","Ê","Ề","Ế","Ễ","Ể","Ẽ","Ē","Ḕ","Ḗ","Ĕ","Ė","Ë","Ẻ","Ě","Ȅ","Ȇ","Ẹ","Ệ","Ȩ","Ḝ","Ę","Ḙ","Ḛ","Ɛ","Ǝ","Ⓕ","F","Ḟ","Ƒ","Ꝼ","Ⓖ","G","Ǵ","Ĝ","Ḡ","Ğ","Ġ","Ǧ","Ģ","Ǥ","Ɠ","Ꞡ","Ᵹ","Ꝿ","Ⓗ","H","Ĥ","Ḣ","Ḧ","Ȟ","Ḥ","Ḩ","Ḫ","Ħ","Ⱨ","Ⱶ","Ɥ","Ⓘ","I","Ì","Í","Î","Ĩ","Ī","Ĭ","İ","Ï","Ḯ","Ỉ","Ǐ","Ȉ","Ȋ","Ị","Į","Ḭ","Ɨ","Ⓙ","J","Ĵ","Ɉ","Ⓚ","K","Ḱ","Ǩ","Ḳ","Ķ","Ḵ","Ƙ","Ⱪ","Ꝁ","Ꝃ","Ꝅ","Ꞣ","Ⓛ","L","Ŀ","Ĺ","Ľ","Ḷ","Ḹ","Ļ","Ḽ","Ḻ","Ł","Ƚ","Ɫ","Ⱡ","Ꝉ","Ꝇ","Ꞁ","LJ","Lj","Ⓜ","M","Ḿ","Ṁ","Ṃ","Ɱ","Ɯ","Ⓝ","N","Ǹ","Ń","Ñ","Ṅ","Ň","Ṇ","Ņ","Ṋ","Ṉ","Ƞ","Ɲ","Ꞑ","Ꞥ","NJ","Nj","Ⓞ","O","Ò","Ó","Ô","Ồ","Ố","Ỗ","Ổ","Õ","Ṍ","Ȭ","Ṏ","Ō","Ṑ","Ṓ","Ŏ","Ȯ","Ȱ","Ö","Ȫ","Ỏ","Ő","Ǒ","Ȍ","Ȏ","Ơ","Ờ","Ớ","Ỡ","Ở","Ợ","Ọ","Ộ","Ǫ","Ǭ","Ø","Ǿ","Ɔ","Ɵ","Ꝋ","Ꝍ","Œ","Ƣ","Ꝏ","Ȣ","Ⓟ","P","Ṕ","Ṗ","Ƥ","Ᵽ","Ꝑ","Ꝓ","Ꝕ","Ⓠ","Q","Ꝗ","Ꝙ","Ɋ","Ⓡ","R","Ŕ","Ṙ","Ř","Ȑ","Ȓ","Ṛ","Ṝ","Ŗ","Ṟ","Ɍ","Ɽ","Ꝛ","Ꞧ","Ꞃ","Ⓢ","S","ẞ","Ś","Ṥ","Ŝ","Ṡ","Š","Ṧ","Ṣ","Ṩ","Ș","Ş","Ȿ","Ꞩ","Ꞅ","Ⓣ","T","Ṫ","Ť","Ṭ","Ț","Ţ","Ṱ","Ṯ","Ŧ","Ƭ","Ʈ","Ⱦ","Ꞇ","Ꜩ","Ⓤ","U","Ù","Ú","Û","Ũ","Ṹ","Ū","Ṻ","Ŭ","Ü","Ǜ","Ǘ","Ǖ","Ǚ","Ủ","Ů","Ű","Ǔ","Ȕ","Ȗ","Ư","Ừ","Ứ","Ữ","Ử","Ự","Ụ","Ṳ","Ų","Ṷ","Ṵ","Ʉ","Ⓥ","V","Ṽ","Ṿ","Ʋ","Ꝟ","Ʌ","Ꝡ","Ⓦ","W","Ẁ","Ẃ","Ŵ","Ẇ","Ẅ","Ẉ","Ⱳ","Ⓧ","X","Ẋ","Ẍ","Ⓨ","Y","Ỳ","Ý","Ŷ","Ỹ","Ȳ","Ẏ","Ÿ","Ỷ","Ỵ","Ƴ","Ɏ","Ỿ","Ⓩ","Z","Ź","Ẑ","Ż","Ž","Ẓ","Ẕ","Ƶ","Ȥ","Ɀ","Ⱬ","Ꝣ","ⓐ","a","ẚ","à","á","â","ầ","ấ","ẫ","ẩ","ã","ā","ă","ằ","ắ","ẵ","ẳ","ȧ","ǡ","ä","ǟ","ả","å","ǻ","ǎ","ȁ","ȃ","ạ","ậ","ặ","ḁ","ą","ⱥ","ɐ","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ⓑ","b","ḃ","ḅ","ḇ","ƀ","ƃ","ɓ","ⓒ","c","ć","ĉ","ċ","č","ç","ḉ","ƈ","ȼ","ꜿ","ↄ","ⓓ","d","ḋ","ď","ḍ","ḑ","ḓ","ḏ","đ","ƌ","ɖ","ɗ","ꝺ","dz","dž","ⓔ","e","è","é","ê","ề","ế","ễ","ể","ẽ","ē","ḕ","ḗ","ĕ","ė","ë","ẻ","ě","ȅ","ȇ","ẹ","ệ","ȩ","ḝ","ę","ḙ","ḛ","ɇ","ɛ","ǝ","ⓕ","f","ḟ","ƒ","ꝼ","ⓖ","g","ǵ","ĝ","ḡ","ğ","ġ","ǧ","ģ","ǥ","ɠ","ꞡ","ᵹ","ꝿ","ⓗ","h","ĥ","ḣ","ḧ","ȟ","ḥ","ḩ","ḫ","ẖ","ħ","ⱨ","ⱶ","ɥ","ƕ","ⓘ","i","ì","í","î","ĩ","ī","ĭ","ï","ḯ","ỉ","ǐ","ȉ","ȋ","ị","į","ḭ","ɨ","ı","ⓙ","j","ĵ","ǰ","ɉ","ⓚ","k","ḱ","ǩ","ḳ","ķ","ḵ","ƙ","ⱪ","ꝁ","ꝃ","ꝅ","ꞣ","ⓛ","l","ŀ","ĺ","ľ","ḷ","ḹ","ļ","ḽ","ḻ","ſ","ł","ƚ","ɫ","ⱡ","ꝉ","ꞁ","ꝇ","lj","ⓜ","m","ḿ","ṁ","ṃ","ɱ","ɯ","ⓝ","n","ǹ","ń","ñ","ṅ","ň","ṇ","ņ","ṋ","ṉ","ƞ","ɲ","ʼn","ꞑ","ꞥ","nj","ⓞ","o","ò","ó","ô","ồ","ố","ỗ","ổ","õ","ṍ","ȭ","ṏ","ō","ṑ","ṓ","ŏ","ȯ","ȱ","ö","ȫ","ỏ","ő","ǒ","ȍ","ȏ","ơ","ờ","ớ","ỡ","ở","ợ","ọ","ộ","ǫ","ǭ","ø","ǿ","ɔ","ꝋ","ꝍ","ɵ","œ","ƣ","ȣ","ꝏ","ⓟ","p","ṕ","ṗ","ƥ","ᵽ","ꝑ","ꝓ","ꝕ","ⓠ","q","ɋ","ꝗ","ꝙ","ⓡ","r","ŕ","ṙ","ř","ȑ","ȓ","ṛ","ṝ","ŗ","ṟ","ɍ","ɽ","ꝛ","ꞧ","ꞃ","ⓢ","s","ß","ś","ṥ","ŝ","ṡ","š","ṧ","ṣ","ṩ","ș","ş","ȿ","ꞩ","ꞅ","ẛ","ⓣ","t","ṫ","ẗ","ť","ṭ","ț","ţ","ṱ","ṯ","ŧ","ƭ","ʈ","ⱦ","ꞇ","ꜩ","ⓤ","u","ù","ú","û","ũ","ṹ","ū","ṻ","ŭ","ü","ǜ","ǘ","ǖ","ǚ","ủ","ů","ű","ǔ","ȕ","ȗ","ư","ừ","ứ","ữ","ử","ự","ụ","ṳ","ų","ṷ","ṵ","ʉ","ⓥ","v","ṽ","ṿ","ʋ","ꝟ","ʌ","ꝡ","ⓦ","w","ẁ","ẃ","ŵ","ẇ","ẅ","ẘ","ẉ","ⱳ","ⓧ","x","ẋ","ẍ","ⓨ","y","ỳ","ý","ŷ","ỹ","ȳ","ẏ","ÿ","ỷ","ẙ","ỵ","ƴ","ɏ","ỿ","ⓩ","z","ź","ẑ","ż","ž","ẓ","ẕ","ƶ","ȥ","ɀ","ⱬ","ꝣ","Ά","Έ","Ή","Ί","Ϊ","Ό","Ύ","Ϋ","Ώ","ά","έ","ή","ί","ϊ","ΐ","ό","ύ","ϋ","ΰ","ώ","ς","’","BaseAdapter","query","generateResultId","SelectAdapter","select","is","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","transport","success","failure","$request","ajax","then","fail","request","isArray","status","_request","abort","url","delay","_queryTimeout","Tags","tags","createTag","insertTag","tag","wrapper","checkChildren","toUpperCase","_removeOldTags","page","Tokenizer","tokenizer","dropdown","createAndSelect","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","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","scrollLeft","ev","$window","isCurrentlyAbove","hasClass","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","errorLoading","inputTooLong","overChars","inputTooShort","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","_processTranslations","debug","stripDiacritics","matcher","original","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","sorter","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","languageParts","baseLanguage","languageData","ex","warn","set","camelKey","camelCase","convertedData","Options","fromElement","InputCompat","upperCaseLetter","letter","excludedData","dir","dataset","attributes","attributeName","dataName","dataValue","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","attachEvent","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","changed","nodeName","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","detachEvent","disconnect","removeEventListener","removeData","thisMethods","instanceOptions","instance","3","./modules/init-ajax-form","./modules/init-area-accordion","./modules/init-fare-calculator","./modules/init-marquee","./modules/init-navigation","./modules/init-news-listing","./modules/init-route-search","./modules/init-select2","./modules/init-view-height","4","bindEvents","$ajaxFormContainer","_jquery2","default","submit","form","currentTarget","serialize","done","_jquery","__esModule","ready","5","click","$accordion","$accordionContent","slideUp","slideDown","6","_interopRequireDefault","$fareCalculator","change","_initSelect2","_initSelect","./init-select2","7","$marqueeText","jquery.marquee","8","$burgerNav","$navItems","$navWithSubItems","$navBackButton","toggleClass","matchMedia","siblings","9","$newsListing","$newsLoadMoreBtn","maxArticles","10","$routeSearch","RedirectUrl","location","href","11","bindDropdowns","defineProperty","12","setDocHeight","setProperty"],"mappings":"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CVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,KACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAAU,IACVC,IAA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","file":"../src/bundle.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i');var h=b.find(\".js-marquee\").css({\"margin-right\":a.gap,\"float\":\"left\"});a.duplicated&&h.clone(!0).appendTo(b);b.wrapInner('
');\nc=b.find(\".js-marquee-wrapper\");if(v){var k=b.height();c.removeAttr(\"style\");b.height(k);b.find(\".js-marquee\").css({\"float\":\"none\",\"margin-bottom\":a.gap,\"margin-right\":0});a.duplicated&&b.find(\".js-marquee:last\").css({\"margin-bottom\":0});var q=b.find(\".js-marquee:first\").height()+a.gap;a.startVisible&&!a.duplicated?(a._completeDuration=(parseInt(q,10)+parseInt(k,10))/parseInt(k,10)*a.duration,a.duration*=parseInt(q,10)/parseInt(k,10)):a.duration*=(parseInt(q,10)+parseInt(k,10))/parseInt(k,10)}else{var m=\nb.find(\".js-marquee:first\").width()+a.gap;var n=b.width();a.startVisible&&!a.duplicated?(a._completeDuration=(parseInt(m,10)+parseInt(n,10))/parseInt(n,10)*a.duration,a.duration*=parseInt(m,10)/parseInt(n,10)):a.duration*=(parseInt(m,10)+parseInt(n,10))/parseInt(n,10)}a.duplicated&&(a.duration/=2);if(a.allowCss3Support){h=document.body||document.createElement(\"div\");var g=\"marqueeAnimation-\"+Math.floor(1E7*Math.random()),A=[\"Webkit\",\"Moz\",\"O\",\"ms\",\"Khtml\"],B=\"animation\",d=\"\",r=\"\";h.style.animation&&\n(r=\"@keyframes \"+g+\" \",p=!0);if(!1===p)for(var z=0;z\"+h+\"\");E(c[0],\"AnimationIteration\",function(){b.trigger(\"finished\")});\nE(c[0],\"AnimationEnd\",function(){w();b.trigger(\"finished\")})}else c.animate(t,a.duration,a.easing,function(){b.trigger(\"finished\");a.pauseOnCycle?b.timer=setTimeout(w,a.delayBeforeStart):w()});b.data(\"runningStatus\",\"resumed\")};b.bind(\"pause\",l.pause);b.bind(\"resume\",l.resume);a.pauseOnHover&&(b.bind(\"mouseenter\",l.pause),b.bind(\"mouseleave\",l.resume));p&&a.allowCss3Support?w():b.timer=setTimeout(w,a.delayBeforeStart)}})};f.fn.marquee.defaults={allowCss3Support:!0,css3easing:\"linear\",easing:\"linear\",\ndelayBeforeStart:1E3,direction:\"left\",duplicated:!1,duration:5E3,gap:20,pauseOnCycle:!1,pauseOnHover:!1,startVisible:!1}})(jQuery);\n\n},{}],2:[function(require,module,exports){\n(function (global){\n/*!\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 = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n }\n else {\n jQuery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null)(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('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if ($.inArray(options, thisMethods) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],3:[function(require,module,exports){\n'use strict';\n\nrequire('./modules/init-view-height');\n\nrequire('./modules/init-navigation');\n\nrequire('./modules/init-marquee');\n\nrequire('./modules/init-select2');\n\nrequire('./modules/init-fare-calculator');\n\nrequire('./modules/init-ajax-form');\n\nrequire('./modules/init-area-accordion');\n\nrequire('./modules/init-route-search');\n\nrequire('./modules/init-news-listing');\n\n},{\"./modules/init-ajax-form\":4,\"./modules/init-area-accordion\":5,\"./modules/init-fare-calculator\":6,\"./modules/init-marquee\":7,\"./modules/init-navigation\":8,\"./modules/init-news-listing\":9,\"./modules/init-route-search\":10,\"./modules/init-select2\":11,\"./modules/init-view-height\":12}],4:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _jquery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery2.default)(document).ready(function () {\n var $ajaxFormContainer = (0, _jquery2.default)('.js-ajax-form');\n\n if ($ajaxFormContainer.length) {\n bindEvents();\n }\n});\n\nfunction bindEvents() {\n var $ajaxFormContainer = (0, _jquery2.default)('.js-ajax-form');\n\n $ajaxFormContainer.submit(function (e) {\n e.preventDefault();\n\n var form = (0, _jquery2.default)(e.currentTarget);\n _jquery2.default.ajax({\n type: form.attr('method'),\n url: form.attr('action'),\n data: form.serialize()\n }).done(function (data) {\n $ajaxFormContainer.replaceWith(data);\n bindEvents();\n });\n });\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],5:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _jquery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar $areaAccordions = (0, _jquery2.default)('.js-area-accordion');\nvar $areaAccordionHeaders = $areaAccordions.find('.js-header');\n\n$areaAccordionHeaders.click(function (event) {\n var $this = (0, _jquery2.default)(event.currentTarget);\n\n var $accordion = $this.parents('.js-area-accordion');\n var $accordionContent = $accordion.find('.js-content');\n\n var isActive = $accordion.hasClass('is-active');\n\n if (isActive) {\n $accordion.removeClass('is-active');\n $accordionContent.slideUp();\n } else {\n $accordion.addClass('is-active');\n $accordionContent.slideDown();\n }\n});\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],6:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _jquery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _initSelect = require('./init-select2');\n\nvar _initSelect2 = _interopRequireDefault(_initSelect);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery2.default)(document).ready(function () {\n var $fareCalculator = (0, _jquery2.default)('.js-fare-calculator');\n\n if ($fareCalculator.length) {\n bindEvents();\n }\n});\n\nfunction bindEvents() {\n var $fareCalculator = (0, _jquery2.default)('.js-fare-calculator');\n\n $fareCalculator.find('select').change(function (e) {\n var $this = (0, _jquery2.default)(e.currentTarget);\n\n var $nextDropdowns = $fareCalculator.find('select').slice($fareCalculator.find('select').index($this) + 1);\n\n $nextDropdowns.val('');\n\n $fareCalculator.submit();\n });\n\n $fareCalculator.submit(function (e) {\n e.preventDefault();\n\n var form = (0, _jquery2.default)(e.currentTarget);\n _jquery2.default.ajax({\n type: form.attr('method'),\n url: form.attr('action'),\n data: form.serialize()\n }).done(function (data) {\n $fareCalculator.replaceWith(data);\n bindEvents();\n (0, _initSelect2.default)();\n });\n });\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./init-select2\":11}],7:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _jquery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nrequire('jquery.marquee');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar $marqueeText = (0, _jquery2.default)('.js-marquee');\n\n(0, _jquery2.default)(document).ready(function () {\n\n if ($marqueeText.length) {\n $marqueeText.marquee();\n }\n});\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"jquery.marquee\":1}],8:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _jquery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar $fixedHeader = (0, _jquery2.default)('.js-fixed-header');\nvar $burgerNav = (0, _jquery2.default)('.js-burger-nav');\nvar $navItems = (0, _jquery2.default)('.js-nav-items');\nvar $navWithSubItems = (0, _jquery2.default)('.js-has-sub > a');\nvar $navBackButton = (0, _jquery2.default)('.js-sub-back a');\nvar $body = (0, _jquery2.default)('body');\n\nfunction calculateHeaderHeight() {\n var headerHeight = $fixedHeader.outerHeight(true);\n\n $body.css('padding-top', headerHeight + 'px');\n}\n\n$burgerNav.click(function (event) {\n var $this = (0, _jquery2.default)(event.currentTarget);\n\n $this.find('.burger-icon').toggleClass('is-active');\n $navItems.toggleClass('is-open-mob');\n});\n\n$navWithSubItems.click(function (event) {\n if (matchMedia('(min-width: 768px)').matches) {\n return;\n }\n\n event.preventDefault();\n\n var $this = (0, _jquery2.default)(event.currentTarget);\n\n var $subNav = $this.siblings('.js-sub');\n $subNav.addClass('is-active');\n});\n\n$navBackButton.click(function (event) {\n event.preventDefault();\n\n var $this = (0, _jquery2.default)(event.currentTarget);\n\n var $subNav = $this.closest('.js-sub');\n\n $subNav.removeClass('is-active');\n});\n\n//$(document).ready(calculateHeaderHeight);\n//$(window).resize(calculateHeaderHeight);\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],9:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _jquery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery2.default)(document).ready(bindEvents);\n\nfunction bindEvents() {\n var $newsListing = (0, _jquery2.default)('.js-news-listing');\n var $newsLoadMoreBtn = (0, _jquery2.default)('.js-news-load-more');\n\n $newsLoadMoreBtn.click(function (event) {\n _jquery2.default.ajax({\n type: 'POST',\n url: '/umbraco/surface/news/rendernewslisting',\n data: {\n maxArticles: $newsLoadMoreBtn.data('load-more')\n }\n }).done(function (data) {\n $newsListing.replaceWith(data);\n bindEvents();\n });\n });\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],10:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _jquery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _initSelect = require('./init-select2');\n\nvar _initSelect2 = _interopRequireDefault(_initSelect);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery2.default)(document).ready(function () {\n var $routeSearch = (0, _jquery2.default)('.js-route-search');\n\n if ($routeSearch.length) {\n bindEvents();\n }\n});\n\nfunction bindEvents() {\n var $routeSearch = (0, _jquery2.default)('.js-route-search');\n\n $routeSearch.find('select').eq(0).change(function (e) {\n var $this = (0, _jquery2.default)(e.currentTarget);\n\n var $nextDropdowns = $routeSearch.find('select').slice($routeSearch.find('select').index($this) + 1);\n\n $nextDropdowns.val('');\n\n $routeSearch.submit();\n });\n\n $routeSearch.submit(function (e) {\n e.preventDefault();\n\n var form = (0, _jquery2.default)(e.currentTarget);\n _jquery2.default.ajax({\n type: form.attr('method'),\n url: form.attr('action'),\n data: form.serialize()\n }).done(function (data) {\n if (data.RedirectUrl !== undefined) {\n window.location.href = data.RedirectUrl;\n return;\n }\n\n $routeSearch.replaceWith(data);\n bindEvents();\n (0, _initSelect2.default)();\n });\n });\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./init-select2\":11}],11:[function(require,module,exports){\n(function (global){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = bindDropdowns;\n\nvar _jquery = (typeof window !== \"undefined\" ? window['$'] : typeof global !== \"undefined\" ? global['$'] : null);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _select = require('select2');\n\nvar _select2 = _interopRequireDefault(_select);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _select2.default)(_jquery2.default);\n\n(0, _jquery2.default)(document).ready(function () {\n bindDropdowns();\n});\n\nfunction bindDropdowns() {\n (0, _jquery2.default)('select').select2({\n width: '100%'\n });\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"select2\":2}],12:[function(require,module,exports){\n'use strict';\n\n$(document).ready(function () {\n setDocHeight();\n addEventListener('resize', setDocHeight);\n addEventListener('orientationchange', setDocHeight);\n});\n\nfunction setDocHeight() {\n document.documentElement.style.setProperty('--vh', window.innerHeight / 100 + 'px');\n}\n\n},{}]},{},[3]);\n"]}