mirror of
https://github.com/flarum/framework.git
synced 2025-02-17 12:12:52 +08:00
1 line
1.1 MiB
1 line
1.1 MiB
{"version":3,"sources":["webpack://flarum.core/webpack/bootstrap","webpack://flarum.core/./node_modules/@babel/runtime/helpers/es6/inheritsLoose.js","webpack://flarum.core/./src/common/Model.js","webpack://flarum.core/./src/common/Component.js","webpack://flarum.core/./src/common/components/Button.js","webpack://flarum.core/./src/common/utils/ItemList.js","webpack://flarum.core/./node_modules/@babel/runtime/core-js/object/assign.js","webpack://flarum.core/./src/common/helpers/icon.js","webpack://flarum.core/./src/common/helpers/listItems.js","webpack://flarum.core/./node_modules/@babel/runtime/helpers/es6/defineProperty.js","webpack://flarum.core/./src/common/utils/extractText.js","webpack://flarum.core/./src/common/utils/extract.js","webpack://flarum.core/./src/common/models/Group.js","webpack://flarum.core/./src/common/components/Modal.js","webpack://flarum.core/./node_modules/@babel/runtime/core-js/object/keys.js","webpack://flarum.core/./src/common/utils/computed.js","webpack://flarum.core/./src/common/components/Dropdown.js","webpack://flarum.core/./src/common/helpers/avatar.js","webpack://flarum.core/./node_modules/spin.js/spin.js","webpack://flarum.core/./src/common/components/LoadingIndicator.js","webpack://flarum.core/./src/common/helpers/username.js","webpack://flarum.core/./src/common/components/Alert.js","webpack://flarum.core/./src/common/components/LinkButton.js","webpack://flarum.core/./node_modules/@babel/runtime/helpers/es6/assertThisInitialized.js","webpack://flarum.core/./src/common/components/Separator.js","webpack://flarum.core/./node_modules/core-js/library/modules/_core.js","webpack://flarum.core/./src/common/utils/humanTime.js","webpack://flarum.core/./src/common/components/Badge.js","webpack://flarum.core/./src/common/components/FieldSet.js","webpack://flarum.core/./src/common/utils/classList.js","webpack://flarum.core/(webpack)/buildin/global.js","webpack://flarum.core/./src/common/components/GroupBadge.js","webpack://flarum.core/./src/common/components/SelectDropdown.js","webpack://flarum.core/./src/common/utils/string.js","webpack://flarum.core/./src/common/helpers/highlight.js","webpack://flarum.core/./node_modules/core-js/library/modules/_wks.js","webpack://flarum.core/./node_modules/core-js/library/modules/_global.js","webpack://flarum.core/./src/common/utils/ScrollListener.js","webpack://flarum.core/./src/common/extend.js","webpack://flarum.core/./src/common/components/Switch.js","webpack://flarum.core/./node_modules/core-js/library/modules/_descriptors.js","webpack://flarum.core/./node_modules/core-js/library/modules/_hide.js","webpack://flarum.core/./node_modules/core-js/library/modules/_export.js","webpack://flarum.core/./src/common/models/User.js","webpack://flarum.core/./src/common/components/Checkbox.js","webpack://flarum.core/./src/common/helpers/humanTime.js","webpack://flarum.core/./src/common/models/Discussion.js","webpack://flarum.core/./node_modules/@babel/runtime/core-js/json/stringify.js","webpack://flarum.core/./src/common/utils/SubtreeRetainer.js","webpack://flarum.core/./src/common/components/Navigation.js","webpack://flarum.core/./src/common/utils/RequestError.js","webpack://flarum.core/./node_modules/core-js/library/modules/_iterators.js","webpack://flarum.core/./node_modules/core-js/library/modules/_fails.js","webpack://flarum.core/./node_modules/core-js/library/modules/_an-object.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-dp.js","webpack://flarum.core/./node_modules/core-js/library/modules/_has.js","webpack://flarum.core/./node_modules/lodash-es/_arrayPush.js","webpack://flarum.core/./node_modules/lodash-es/_root.js","webpack://flarum.core/./node_modules/lodash-es/_Symbol.js","webpack://flarum.core/./node_modules/lodash-es/_getRawTag.js","webpack://flarum.core/./node_modules/lodash-es/_objectToString.js","webpack://flarum.core/./node_modules/lodash-es/_baseGetTag.js","webpack://flarum.core/./node_modules/lodash-es/isObjectLike.js","webpack://flarum.core/./node_modules/lodash-es/_baseIsArguments.js","webpack://flarum.core/./node_modules/lodash-es/isArguments.js","webpack://flarum.core/./node_modules/lodash-es/isArray.js","webpack://flarum.core/./node_modules/lodash-es/_isFlattenable.js","webpack://flarum.core/./node_modules/lodash-es/_baseFlatten.js","webpack://flarum.core/./node_modules/lodash-es/flattenDeep.js","webpack://flarum.core/./src/common/Application.js","webpack://flarum.core/./src/common/models/Notification.js","webpack://flarum.core/./src/common/models/Post.js","webpack://flarum.core/./src/common/models/Forum.js","webpack://flarum.core/./src/common/utils/mapRoutes.js","webpack://flarum.core/./src/common/utils/Drawer.js","webpack://flarum.core/./src/common/Session.js","webpack://flarum.core/./src/common/Store.js","webpack://flarum.core/./src/common/utils/stringToColor.js","webpack://flarum.core/./src/common/Translator.js","webpack://flarum.core/./src/common/components/RequestErrorModal.js","webpack://flarum.core/./src/common/components/AlertManager.js","webpack://flarum.core/./src/common/components/ModalManager.js","webpack://flarum.core/./src/common/utils/patchMithril.js","webpack://flarum.core/./src/common/utils/formatNumber.js","webpack://flarum.core/./src/common/utils/anchorScroll.js","webpack://flarum.core/./node_modules/core-js/library/modules/_is-object.js","webpack://flarum.core/./node_modules/core-js/library/modules/_shared-key.js","webpack://flarum.core/./node_modules/core-js/library/modules/_to-integer.js","webpack://flarum.core/./node_modules/core-js/library/modules/_to-iobject.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-keys.js","webpack://flarum.core/./node_modules/core-js/library/modules/_defined.js","webpack://flarum.core/./node_modules/core-js/library/modules/_to-object.js","webpack://flarum.core/./src/common/components/Select.js","webpack://flarum.core/./src/common/components/Placeholder.js","webpack://flarum.core/./src/common/utils/abbreviateNumber.js","webpack://flarum.core/./src/common/helpers/fullTime.js","webpack://flarum.core/./src/common/helpers/userOnline.js","webpack://flarum.core/./src/common/components/SplitDropdown.js","webpack://flarum.core/./src/common/utils/evented.js","webpack://flarum.core/./node_modules/@babel/runtime/helpers/es6/extends.js","webpack://flarum.core/(webpack)/buildin/module.js","webpack://flarum.core/./src/common/utils/mixin.js","webpack://flarum.core/./src/common/extend/Model.js","webpack://flarum.core/./src/common/extend/PostTypes.js","webpack://flarum.core/./src/common/extend/Routes.js","webpack://flarum.core/./src/common/index.js","webpack://flarum.core/./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://flarum.core/./node_modules/core-js/library/modules/_iter-define.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-create.js","webpack://flarum.core/./node_modules/core-js/library/modules/_property-desc.js","webpack://flarum.core/./node_modules/core-js/library/modules/_dom-create.js","webpack://flarum.core/./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://flarum.core/./node_modules/core-js/library/modules/_uid.js","webpack://flarum.core/./node_modules/core-js/library/modules/_library.js","webpack://flarum.core/./node_modules/core-js/library/modules/_shared.js","webpack://flarum.core/./node_modules/core-js/library/modules/_cof.js","webpack://flarum.core/./node_modules/core-js/library/modules/_iobject.js","webpack://flarum.core/./node_modules/mithril/mithril.js","webpack://flarum.core/./src/common/utils/liveHumanTimes.js","webpack://flarum.core/./src/common/compat.js","webpack://flarum.core/./src/common/helpers/punctuateSeries.js","webpack://flarum.core/./node_modules/lodash-es/_freeGlobal.js","webpack://flarum.core/./node_modules/@babel/runtime/core-js/get-iterator.js","webpack://flarum.core/./node_modules/@babel/runtime/core-js/object/create.js","webpack://flarum.core/./node_modules/@babel/runtime/core-js/object/define-property.js","webpack://flarum.core/./node_modules/core-js/library/modules/_classof.js","webpack://flarum.core/./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack://flarum.core/./node_modules/core-js/library/modules/core.get-iterator.js","webpack://flarum.core/./node_modules/core-js/library/modules/_string-at.js","webpack://flarum.core/./node_modules/core-js/library/modules/es6.string.iterator.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-gpo.js","webpack://flarum.core/./node_modules/core-js/library/modules/_iter-create.js","webpack://flarum.core/./node_modules/core-js/library/modules/_redefine.js","webpack://flarum.core/./node_modules/core-js/library/modules/_iter-step.js","webpack://flarum.core/./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://flarum.core/./node_modules/core-js/library/modules/es6.array.iterator.js","webpack://flarum.core/./node_modules/core-js/library/modules/web.dom.iterable.js","webpack://flarum.core/./node_modules/core-js/library/fn/get-iterator.js","webpack://flarum.core/./node_modules/core-js/library/fn/json/stringify.js","webpack://flarum.core/./node_modules/core-js/library/modules/_html.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-dps.js","webpack://flarum.core/./node_modules/core-js/library/modules/es6.object.create.js","webpack://flarum.core/./node_modules/core-js/library/fn/object/create.js","webpack://flarum.core/./node_modules/core-js/library/modules/es6.object.define-property.js","webpack://flarum.core/./node_modules/core-js/library/fn/object/define-property.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-pie.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-gops.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-assign.js","webpack://flarum.core/./node_modules/core-js/library/modules/es6.object.assign.js","webpack://flarum.core/./node_modules/core-js/library/fn/object/assign.js","webpack://flarum.core/./node_modules/core-js/library/modules/_to-primitive.js","webpack://flarum.core/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://flarum.core/./node_modules/core-js/library/modules/_a-function.js","webpack://flarum.core/./node_modules/core-js/library/modules/_ctx.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-sap.js","webpack://flarum.core/./node_modules/core-js/library/modules/_to-absolute-index.js","webpack://flarum.core/./node_modules/core-js/library/modules/_to-length.js","webpack://flarum.core/./node_modules/core-js/library/modules/_array-includes.js","webpack://flarum.core/./node_modules/core-js/library/modules/_object-keys-internal.js","webpack://flarum.core/./node_modules/core-js/library/modules/es6.object.keys.js","webpack://flarum.core/./node_modules/core-js/library/fn/object/keys.js","webpack://flarum.core/./node_modules/jquery.hotkeys/jquery.hotkeys.js","webpack://flarum.core/./node_modules/bootstrap/js/transition.js","webpack://flarum.core/./node_modules/bootstrap/js/tooltip.js","webpack://flarum.core/./node_modules/bootstrap/js/modal.js","webpack://flarum.core/./node_modules/bootstrap/js/dropdown.js","webpack://flarum.core/./node_modules/bootstrap/js/affix.js","webpack://flarum.core/./node_modules/m.attrs.bidi/bidi.js","webpack://flarum.core/./node_modules/m.attrs.bidi/bidi.js-exposed","webpack://flarum.core/./node_modules/moment/moment.js","webpack://flarum.core/./node_modules/moment/moment.js-exposed","webpack://flarum.core/./node_modules/mithril/mithril.js-exposed","webpack://flarum.core/./node_modules/jquery/dist/jquery.js","webpack://flarum.core/./node_modules/jquery/dist/jquery.js-exposed","webpack://flarum.core/./node_modules/jquery/dist/jquery.js-exposed?28a1","webpack://flarum.core/./src/admin/components/HeaderPrimary.js","webpack://flarum.core/./src/admin/components/SessionDropdown.js","webpack://flarum.core/./src/admin/components/HeaderSecondary.js","webpack://flarum.core/./src/admin/components/Page.js","webpack://flarum.core/./src/admin/components/DashboardWidget.js","webpack://flarum.core/./src/admin/components/StatusWidget.js","webpack://flarum.core/./src/admin/components/DashboardPage.js","webpack://flarum.core/./src/admin/utils/saveSettings.js","webpack://flarum.core/./src/admin/components/BasicsPage.js","webpack://flarum.core/./src/admin/components/EditGroupModal.js","webpack://flarum.core/./src/admin/components/PermissionDropdown.js","webpack://flarum.core/./src/admin/components/SettingDropdown.js","webpack://flarum.core/./src/admin/components/PermissionGrid.js","webpack://flarum.core/./src/admin/components/PermissionsPage.js","webpack://flarum.core/./src/admin/components/SettingsModal.js","webpack://flarum.core/./src/admin/components/EditCustomCssModal.js","webpack://flarum.core/./src/admin/components/EditCustomHeaderModal.js","webpack://flarum.core/./src/admin/components/EditCustomFooterModal.js","webpack://flarum.core/./src/admin/components/UploadImageButton.js","webpack://flarum.core/./src/admin/components/AppearancePage.js","webpack://flarum.core/./src/admin/components/AddExtensionModal.js","webpack://flarum.core/./src/admin/components/LoadingModal.js","webpack://flarum.core/./src/admin/components/ExtensionsPage.js","webpack://flarum.core/./src/admin/components/MailPage.js","webpack://flarum.core/./src/admin/routes.js","webpack://flarum.core/./src/admin/components/AdminLinkButton.js","webpack://flarum.core/./src/admin/components/AdminNav.js","webpack://flarum.core/./src/admin/AdminApplication.js","webpack://flarum.core/./src/admin/components/Widget.js","webpack://flarum.core/./src/admin/compat.js","webpack://flarum.core/./src/admin/index.js","webpack://flarum.core/./admin.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_inheritsLoose","subClass","superClass","_core_js_object_create__WEBPACK_IMPORTED_MODULE_0___default","constructor","__proto__","Model","data","store","this","freshness","Date","exists","id","attribute","attributes","pushData","innerKey","getIdentifier","pushAttributes","save","options","_this","type","relationships","model","Array","map","oldData","copyData","request","meta","app","_babel_runtime_core_js_object_assign__WEBPACK_IMPORTED_MODULE_1___default","method","url","forum","apiEndpoint","then","payload","pushPayload","response","lazyRedraw","delete","_this2","remove","deferred","resolve","promise","JSON","parse","_babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_0___default","transform","hasOne","relationship","getById","hasMany","transformDate","Component","props","children","initProps","element","retain","init","onunload","render","vdom","subtree","view","attrs","originalConfig","config","_len","arguments","length","args","_key","apply","slice","$","selector","$element","find","Error","component","componentProps","_babel_runtime_core_js_object_assign__WEBPACK_IMPORTED_MODULE_0___default","$original","output","controller","undefined","Button","className","title","_utils_extractText__WEBPACK_IMPORTED_MODULE_5__","_utils_extract__WEBPACK_IMPORTED_MODULE_4__","loading","disabled","onclick","getButtonContent","iconName","icon","_helpers_icon__WEBPACK_IMPORTED_MODULE_3__","_LoadingIndicator__WEBPACK_IMPORTED_MODULE_6__","size","_Component__WEBPACK_IMPORTED_MODULE_2__","Item","content","priority","ItemList","items","isEmpty","has","add","replace","merge","toArray","itemName","push","sort","a","b","item","fontClass","__webpack_exports__","isSeparator","_components_Separator__WEBPACK_IMPORTED_MODULE_0__","listItems","prevItem","newItems","forEach","withoutUnnecessarySeparators","isListItem","active","isActive","itemClassName","_utils_classList__WEBPACK_IMPORTED_MODULE_1__","_defineProperty","obj","_core_js_object_define_property__WEBPACK_IMPORTED_MODULE_0___default","configurable","writable","extractText","join","extract","Group","_Model__WEBPACK_IMPORTED_MODULE_2__","nameSingular","namePlural","color","ADMINISTRATOR_ID","GUEST_ID","MEMBER_ID","Modal","alert","dismissible","isDismissible","_Button__WEBPACK_IMPORTED_MODULE_3__","hide","onsubmit","onready","first","focus","select","onhide","modal","close","loaded","redraw","onerror","error","status","errors","source","pointer","_Component__WEBPACK_IMPORTED_MODULE_1__","computed","dependentKeys","computedValue","keys","compute","dependentValues","recompute","Dropdown","_Component","buttonClassName","menuClassName","label","caretIcon","showing","_helpers_listItems__WEBPACK_IMPORTED_MODULE_3__","getButton","getMenu","isInitialized","on","onshow","$menu","isRight","hasClass","removeClass","toggleClass","offset","top","height","window","scrollTop","left","width","scrollLeft","data-toggle","_helpers_icon__WEBPACK_IMPORTED_MODULE_2__","avatar","user","hasTitle","username","displayName","avatarUrl","_babel_runtime_helpers_es6_extends__WEBPACK_IMPORTED_MODULE_0__","src","charAt","toUpperCase","style","background","__assign","assign","defaults","lines","radius","scale","corners","fadeColor","opacity","rotate","direction","speed","trail","fps","zIndex","shadow","position","Spinner","opts","spin","target","animator","getNow","lastFrameTime","stop","el","document","createElement","setAttribute","css","insertBefore","firstChild","requestAnimationFrame","performance","now","callback","setTimeout","state","animate","msSinceLastFrame","roundsPerSecond","time","Math","floor","childNodes","line","getLineOpacity","toString","animateId","borderRadius","round","shadows","boxShadow","regex","_i","_a","split","matches","match","x","y","xUnits","yUnits","prefix","end","parseBoxShadow","degrees","backgroundLine","getColor","transformOrigin","normalizeShadow","appendChild","drawLines","cancelAnimationFrame","clearTimeout","parentNode","removeChild","diff","opacityPercent","vendor","prop","prefixed","idx","normalized","shadows_1","xy","convertOffset","radians","PI","sin","cos","LoadingIndicator_LoadingIndicator","assign_default","trust","translator","trans","Alert","_utils_extract__WEBPACK_IMPORTED_MODULE_5__","controls","ondismiss","dismissControl","_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__","concat","LinkButton","route","tag","href","_assertThisInitialized","self","ReferenceError","Separator","core","version","__e","humanTime","moment","isAfter","year","format","fromNow","Badge","tooltip","container","FieldSet","_helpers_listItems__WEBPACK_IMPORTED_MODULE_2__","classList","classes","classNames","filter","g","Function","eval","e","GroupBadge","_Badge","group","backgroundColor","SelectDropdown","_Dropdown","activeChild","child","defaultLabel","_Dropdown__WEBPACK_IMPORTED_MODULE_1__","truncate","string","start","substring","slug","toLowerCase","getPlainContent","html","dom","removeSelectors","text","trim","ucfirst","substr","highlight","phrase","regexp","RegExp","highlighted","max","search","_utils_string__WEBPACK_IMPORTED_MODULE_0__","uid","USE_SYMBOL","global","__g","ScrollListener","scroll","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","lastTop","loop","update","force","pageYOffset","extend","original","override","newMethod","_len2","_key2","Switch","_Checkbox","getDisplay","dP","createDesc","f","ctx","$export","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","C","virtual","R","U","User","email","isActivated","password","preferences","groups","joinTime","lastSeenTime","readTime","unreadNotificationsCount","newNotificationsCount","discussionsCount","commentsCount","canEdit","canDelete","avatarColor","_utils_computed__WEBPACK_IMPORTED_MODULE_5__","calculateAvatarColor","_utils_stringToColor__WEBPACK_IMPORTED_MODULE_3__","isOnline","subtract","toDate","badges","_utils_ItemList__WEBPACK_IMPORTED_MODULE_4__","_components_GroupBadge__WEBPACK_IMPORTED_MODULE_6__","image","Image","onload","colorThief","ColorThief","savePreferences","newPreferences","Checkbox","checked","onchange","withAttr","_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__","mo","datetime","full","ago","_utils_humanTime__WEBPACK_IMPORTED_MODULE_0__","pubdate","data-humantime","Discussion","startTime","startUser","startPost","lastTime","lastUser","lastPost","lastPostNumber","repliesCount","_utils_computed__WEBPACK_IMPORTED_MODULE_3__","posts","mostRelevantPost","readNumber","isUnread","unreadCount","isRead","session","hideTime","hideUser","isHidden","canReply","canRename","canHide","removePost","some","splice","_components_Badge__WEBPACK_IMPORTED_MODULE_5__","postIds","link","SubtreeRetainer","callbacks","needsRebuild","result","check","invalidate","Navigation","_app","history","pane","onmouseenter","show","onmouseleave","canGoBack","getBackButton","getPaneButton","getDrawerButton","context","previous","getPrevious","_LinkButton__WEBPACK_IMPORTED_MODULE_3__","backUrl","shiftKey","ctrlKey","metaKey","which","preventDefault","back","_Button__WEBPACK_IMPORTED_MODULE_2__","pinned","togglePinned","drawer","stopPropagation","RequestError","responseText","xhr","exec","isObject","it","TypeError","anObject","IE8_DOM_DEFINE","toPrimitive","O","Attributes","_arrayPush","array","values","index","freeSelf","_Symbol","_freeGlobal","objectProto","_getRawTag_hasOwnProperty","nativeObjectToString","symToStringTag","_getRawTag","isOwn","unmasked","_objectToString_nativeObjectToString","_objectToString","nullTag","undefinedTag","_baseGetTag_symToStringTag","_baseGetTag","lodash_es_isObjectLike","argsTag","_baseIsArguments","isArguments_objectProto","isArguments_hasOwnProperty","propertyIsEnumerable","lodash_es_isArguments","lodash_es_isArray","isArray","spreadableSymbol","isConcatSpreadable","_isFlattenable","_baseFlatten","baseFlatten","depth","predicate","isStrict","INFINITY","lodash_es_flattenDeep","Application_Application","Translator","Store","forums","Forum","users","discussions","Post","notifications","Notification","load","locale","boot","initializers","initializer","resources","Session","userId","csrfToken","mount","bootExtensions","extensions","keys_default","extension","_iterator","_isArray","get_iterator_default","_ref","next","done","getElementById","ModalManager","alerts","AlertManager","Drawer","basePath","mapRoutes","routes","$app","addClass","preloadedDocument","results","setTitle","updateTitle","setTitleCount","count","titleCount","originalOptions","_this3","setRequestHeader","deserialize","errorHandler","getResponseHeader","requestError","dismiss","detail","reduce","showDebug","reject","requestErrorAlert","RequestErrorModal","params","path","queryString","buildQueryString","contentType","subjectId","date","additionalUnreadCount","sender","subject","number","discussion","contentHtml","contentPlain","_utils_string__WEBPACK_IMPORTED_MODULE_4__","editTime","editUser","isEdited","routeName","click","isOpen","$backdrop","appendTo","login","logout","location","models","included","pushObject","createRecord","query","getBy","all","records","_babel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0___default","stringToColor","num","charCodeAt","rgb","h","v","q","hsvToRgb","translations","parameters","translation","transChoice","parseInt","pluralize","input","_utils_extract__WEBPACK_IMPORTED_MODULE_3__","_helpers_username__WEBPACK_IMPORTED_MODULE_1__","hydrated","open","part","shift","unshift","sPluralRegex","cPluralRegex","iPluralRegex","standardRules","explicitRules","test","rule","leftNumber","convertNumber","rightNumber","pluralPosition","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","statusText","components","_Alert__WEBPACK_IMPORTED_MODULE_2__","indexOf","clear","_Modal__WEBPACK_IMPORTED_MODULE_2__","hideTimeout","current","backdrop","patchMithril","comp","node","bidi","startComputation","endComputation","formatNumber","anchorScroll","$window","relativeScroll","shared","ceil","isNaN","IObject","defined","$keys","enumBugKeys","Select","_this$props","Placeholder","abbreviateNumber","fullTime","userOnline","_icon__WEBPACK_IMPORTED_MODULE_0__","SplitDropdown","getFirstChild","buttonProps","_helpers_icon__WEBPACK_IMPORTED_MODULE_4__","_Dropdown__WEBPACK_IMPORTED_MODULE_2__","handlers","getHandlers","event","trigger","handler","one","wrapper","off","_extends","_core_js_object_assign__WEBPACK_IMPORTED_MODULE_0___default","webpackPolyfill","deprecate","paths","mixin","Parent","Mixed","_Parent","_babel_runtime_helpers_es6_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__","mixins","Model_Routes","Routes","hasOnes","hasManys","PostTypes_PostTypes","postComponents","Routes_Routes","def","TAG","stat","LIBRARY","redefine","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","returnThis","Base","NAME","Constructor","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","contentWindow","write","lt","Properties","bitmap","is","px","random","copyright","cof","__WEBPACK_AMD_DEFINE_RESULT__","factory","hasOwn","isFunction","isString","noop","$document","$location","$requestAnimationFrame","$cancelAnimationFrame","voidElements","AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR","pairs","parameterize","hasAttrs","cell","getVirtualChildren","classAttr","attrName","assignAttrs","parser","attrValue","parseTagAttrs","list","forKeys","insertNode","parentElement","deps","mock","initialize","DELETION","INSERTION","MOVE","diffKeys","cached","existing","keysDiffer","cachedCell","action","from","nodes","actions","changes","sortChanges","newCached","change","dummy","changeElement","maybeChanged","handleKeysDiffer","maybeRecreateObject","dataAttrKeys","strategy","configContext","isDifferentEnough","controllers","pendingRequests","reattachNodes","editable","parentTag","activeElement","$trusted","injectHTML","innerHTML","nodeType","nodeValue","createTextNode","injectTextNode","handleTextNode","shouldReattach","valueOf","intact","nodeName","handleNonexistentNodes","getSubArrayCount","buildArray","namespace","configs","flatten","subArrayCount","shouldMaintainIdentities","guid","buildArrayKeys","cacheCount","len","build","_","diffArray","reconstructCached","views","$old","unloadCachedControllers","unloaders","forcing","checkView","cachedControllers","controllerIndex","getController","u","updateLists","buildObject","markViews","hasKeys","isNew","xmlns","getObjectNamespace","createElementNS","constructNode","setAttributes","constructAttrs","contenteditable","constructChildren","buildUpdatedNode","scheduleConfigsToBeCalled","parentCache","parentIndex","dataToString","makeCache","shouldUseSetAttribute","form","setSingleAttr","dataAttr","cachedAttr","endFirstComputation","copyStyleAttrs","setAttributeNS","isContentEditable","trySetAttr","cachedAttrs","message","dataAttrs","unload","appendTextFragment","createRange","createContextualFragment","insertAdjacentHTML","replaceScriptNodes","tagName","replaceChild","scriptEl","buildExecutableNode","nextSibling","isElement","placeholder","documentNode","documentElement","nodeCache","cellCache","getCellCacheKey","root","forceRecreation","isDocumentRoot","reset","String","Promise","propify","toJSON","gettersetter","topComponent","currentRoute","previousRoute","roots","lastRedrawId","lastRedrawCallTime","computePreRedrawHook","computePostRedrawHook","ctrl","currentArgs","removeRootElement","isPrevented","unloader","currentComponent","checkPrevented","redrawing","withAttrCallback","callbackThis","currentTarget","getAttribute","routeParams","modes","pathname","hash","redirect","isDefaultRoute","normalizeRoute","routeUnobtrusive","returnValue","srcElement","parseQueryString","setScroll","scrollTo","duplicates","str","encodeURIComponent","pair","decodeURIComponent","cacheKey","initialValue","arg1","arg2","router","queryStart","matcher","routeByValue","listener","addEventListener","attachEvent","base","removeEventListener","detachEvent","queryIndex","currentPath","querystring","replaceHistory","pushState","err","param","Deferred","RESOLVING","REJECTING","RESOLVED","REJECTED","onSuccess","onFailure","promiseValue","finish","thennable","success","failure","notThennable","fire","identity","sync","outstanding","synchronizer","pos","resolved","arg","serialize","dataType","jsonp","stringify","token","bindData","ev","unwrapSuccess","res","unwrapError","callbackKey","callbackName","getTime","script","resp","body","handleJsonp","XMLHttpRequest","onreadystatechange","readyState","headers","header","maybeXhr","FormData","send","createXhr","ajax","updateHumanTimes","each","$this","attr","utils/evented","evented","utils/liveHumanTimes","setInterval","utils/ItemList","utils/mixin","utils/humanTime","utils/computed","utils/Drawer","utils/anchorScroll","utils/RequestError","utils/abbreviateNumber","utils/string","utils/SubtreeRetainer","utils/extract","utils/ScrollListener","utils/stringToColor","utils/patchMithril","utils/classList","utils/extractText","utils/formatNumber","utils/mapRoutes","models/Notification","models/User","models/Post","models/Discussion","models/Group","models/Forum","components/AlertManager","components/Switch","components/Badge","components/LoadingIndicator","LoadingIndicator","components/Placeholder","components/Separator","components/Dropdown","components/SplitDropdown","components/RequestErrorModal","components/FieldSet","components/Select","components/Navigation","components/Alert","components/LinkButton","components/Checkbox","components/SelectDropdown","components/ModalManager","components/Button","components/Modal","components/GroupBadge","Application","helpers/fullTime","helpers/avatar","helpers/icon","helpers/humanTime","helpers_humanTime","helpers/punctuateSeries","second","third","helpers/highlight","helpers/username","helpers/userOnline","helpers/listItems","freeGlobal","ARG","T","tryGet","callee","classof","getIteratorMethod","getIterator","iterFn","toInteger","TO_STRING","that","$at","iterated","_t","point","toObject","ObjectProto","descriptor","addToUnscopables","step","toIObject","_k","Arguments","TO_STRING_TAG","DOMIterables","Collection","$JSON","getKeys","defineProperties","$Object","D","desc","getOwnPropertySymbols","gOPS","pIE","$assign","A","K","k","aLen","getSymbols","isEnum","j","fn","val","aFunction","fails","KEY","exp","min","toLength","toAbsoluteIndex","IS_INCLUDES","fromIndex","arrayIndexOf","names","jQuery","keyHandler","handleObj","origHandler","hotkeys","filterInputAcceptingElements","textInputTypes","filterContentEditable","filterTextInputs","inArray","textAcceptingInputTypes","special","specialKeys","character","fromCharCode","modif","possible","specialKey","shiftNums","8","9","10","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","59","61","96","97","98","99","100","101","102","103","104","105","106","107","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","144","145","173","186","187","188","189","190","191","192","219","220","221","222","`","1","2","3","4","5","6","7","0","-","=",";","'",",",".","/","\\","emulateTransitionEnd","duration","called","$el","support","transition","transEndEventNames","WebkitTransition","MozTransition","OTransition","transitionEnd","bsTransitionEnd","bindType","delegateType","handle","Tooltip","enabled","timeout","hoverState","inState","VERSION","TRANSITION_DURATION","DEFAULTS","animation","placement","template","delay","viewport","padding","getOptions","$viewport","hover","triggers","proxy","toggle","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","Event","tip","isInStateTrue","hasContent","inDom","contains","ownerDocument","isDefaultPrevented","$tip","tipId","getUID","setContent","autoToken","autoPlace","detach","insertAfter","getPosition","actualWidth","offsetWidth","actualHeight","offsetHeight","orgPlacement","viewportDim","bottom","right","calculatedOffset","getCalculatedOffset","applyPlacement","complete","prevHoverState","marginTop","marginLeft","setOffset","using","delta","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","dimension","arrow","getTitle","removeAttr","$e","isBody","elRect","getBoundingClientRect","isSvg","SVGElement","elOffset","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","$arrow","enable","disable","toggleEnabled","destroy","removeData","old","option","noConflict","$body","$dialog","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","Plugin","_relatedTarget","BACKDROP_TRANSITION_DURATION","keyboard","relatedTarget","checkScrollbar","setScrollbar","escape","resize","parent","adjustDialog","enforceFocus","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","abs","clientWidth","measureScrollbar","bodyPad","scrollDiv","append","$target","showEvent","getParent","$parent","clearMenus","closest","keydown","$items","eq","dropdown","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetTop","offsetBottom","targetHeight","initializing","colliderTop","getPinnedOffset","affix","affixType","$spy","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","multi","selectedOptions","oninput","selected","hookCallback","hooks","isUndefined","isNumber","isDate","arr","hasOwnProp","createUTC","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","copyConfig","to","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","warn","msg","suppressDeprecationWarnings","console","firstTime","deprecationHandler","stack","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","set","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","pow","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","func","localeData","formatMoment","expandFormat","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","strictRegex","getParseRegexForToken","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","isLeapYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","month","daysInMonth","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","day","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","M","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","code","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","currentDateArray","w","weekYear","temp","weekdayOverflow","GG","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","getDay","setUTCMinutes","getUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","parsedArray","weekdayStr","parsedInput","weekdayProvided","weekdayActual","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","meridiemHour","isPm","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","minute","millisecond","configFromObject","configFromInput","isUTC","getOwnPropertyNames","isObjectEmpty","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","separator","utcOffset","offsetFromString","chunkOffset","chunk","parts","cloneWithOffset","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","createAdder","period","tmp","addSubtract","isAdding","invalid","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","preParsePostFormat","formats","sod","startOf","calendarFormat","asFloat","zoneDelta","endOf","inputString","postformat","withoutSuffix","humanize","toNow","invalidAt","localInput","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","isoWeekday","toISOString","keepOffset","inspect","zone","isLocal","suffix","unix","creationData","isoWeek","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","makeGetter","thresholds","abs$1","toISOString$1","Y","toFixed","total","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","noGlobal","getProto","class2type","fnToString","ObjectFunctionString","isWindow","preservedScriptAttributes","noModule","DOMEval","doc","head","toType","rtrim","isArrayLike","jquery","pushStack","elems","prevObject","elem","last","copy","copyIsArray","deep","isPlainObject","expando","isReady","Ctor","isEmptyObject","globalEval","makeArray","grep","invert","callbackExpect","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","pop","push_native","booleans","whitespace","identifier","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","high","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","disabledAncestor","addCombinator","dir","els","seed","nid","newSelector","newContext","getElementsByTagName","getElementsByClassName","qsa","toSelector","testContext","querySelectorAll","qsaError","removeAttribute","cache","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","hasCompare","subWindow","defaultView","createComment","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","elements","specified","sel","uniqueSort","detectDuplicates","sortStable","textContent","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","not","unmatched","innerText","elemLang","hasFocus","tabIndex","selectedIndex","button","even","odd","gt","radio","checkbox","file","submit","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","targets","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","fail","Callbacks","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","once","stopOnFalse","lock","fireWith","tuples","always","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","_removeData","dequeue","startLength","_queueHooks","clearQueue","defer","pnum","rcssNum","cssExpand","isHiddenWithinTree","swap","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","htmlPrefilter","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","types","origFn","handleObjIn","eventHandle","events","namespaces","origType","elemData","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","noBubble","blur","beforeunload","defaultPrevented","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","eventPhase","pageX","pageY","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","before","after","replaceWith","prependTo","replaceAll","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","finalPropName","cssProps","capName","vendorPropName","setPositiveNumber","boxModelAdjustment","box","isBorderBox","styles","computedVal","extra","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zoom","origName","isCustomProp","setProperty","getClientRects","margin","border","expand","expanded","propHooks","run","percent","eased","fx","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","gotoEnd","propFilter","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","opt","speeds","fadeTo","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","curValue","clazz","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","parentWindow","simulate","triggerHandler","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","protocol","processData","async","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","overrideMimeType","mimeType","abort","finalText","crossDomain","host","ifModified","beforeSend","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhrSuccessStatus","1223","xhrSupported","cors","errorCallback","xhrFields","onabort","ontimeout","responseType","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonpCallback","originalSettings","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","rect","win","pageXOffset","offsetParent","parentOffset","Height","Width","","defaultExtra","funcName","fnOver","fnOut","unbind","delegate","undelegate","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","HeaderPrimary_HeaderPrimary","SessionDropdown_SessionDropdown","HeaderSecondary_HeaderSecondary","Page_Page","bodyClass","DashboardWidget_Widget","StatusWidget_StatusWidget","phpVersion","mysqlVersion","DashboardPage_DashboardPage","availableWidgets","saveSettings","oldSettings","stringify_default","BasicsPage_BasicsPage","_Page","fields","localeOptions","show_language_selector","forum_title","forum_description","default_locale","homePageItems","default_route","welcome_title","welcome_message","changed","_this4","successAlert","EditGroupModal_EditGroupModal","deleteGroup","confirm","badgeForId","filterByRequiredPermissions","groupIds","permission","getRequiredPermissions","required","restrictToGroupIds","permissions","PermissionDropdown_PermissionDropdown","everyone","members","adminGroup","allowGuest","isGroupDisabled","groupId","SettingDropdown_SettingDropdown","_SelectDropdown","_saveSettings$bind","PermissionGrid_PermissionGrid","permissionItems","scopes","scopeItems","permissionCells","scope","onremove","scopeControlItems","section","viewItems","startItems","replyItems","moderateItems","setting","allow_renaming","allow_post_editing","PermissionsPage_PermissionsPage","SettingsModal_SettingsModal","submitButton","fallback","dirty","onsaved","EditCustomCssModal_EditCustomCssModal","rows","reload","EditCustomHeaderModal_EditCustomHeaderModal","EditCustomFooterModal_EditCustomFooterModal","UploadImageButton_UploadImageButton","alt","_Button","upload","files","resourceUrl","AppearancePage_AppearancePage","primaryColor","theme_primary_color","secondaryColor","theme_secondary_color","darkMode","theme_dark_mode","coloredHeader","theme_colored_header","hex","AddExtensionModal_AddExtensionModal","LoadingModal_LoadingModal","ExtensionsPage_ExtensionsPage","controlItems","isEnabled","extensionSettings","extensions_enabled","localStorage","setItem","MailPage_MailPage","mail_driver","mail_host","mail_port","mail_encryption","mail_username","mail_password","mail_from","dashboard","basics","appearance","mail","AdminLinkButton_AdminLinkButton","description","AdminNav_AdminNav","AdminApplication_AdminApplication","AdminApplication","_Application","assertThisInitialized","getItem","removeItem","Widget_DashboardWidget","admin_compat","compat","utils/saveSettings","components/SettingDropdown","components/EditCustomFooterModal","components/SessionDropdown","components/HeaderPrimary","components/AppearancePage","components/Page","components/StatusWidget","components/HeaderSecondary","components/SettingsModal","components/DashboardWidget","components/AddExtensionModal","components/ExtensionsPage","components/AdminLinkButton","components/PermissionGrid","components/Widget","components/MailPage","components/UploadImageButton","components/LoadingModal","components/DashboardPage","components/BasicsPage","components/EditCustomHeaderModal","components/PermissionsPage","components/PermissionDropdown","components/AdminNav","components/EditCustomCssModal","components/EditGroupModal","admin_app"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 155);\n","import _Object$create from \"../../core-js/object/create\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = _Object$create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","/**\n * The `Model` class represents a local data resource. It provides methods to\n * persist changes via the API.\n *\n * @abstract\n */\nexport default class Model {\n /**\n * @param {Object} data A resource object from the API.\n * @param {Store} store The data store that this model should be persisted to.\n * @public\n */\n constructor(data = {}, store = null) {\n /**\n * The resource object from the API.\n *\n * @type {Object}\n * @public\n */\n this.data = data;\n\n /**\n * The time at which the model's data was last updated. Watching the value\n * of this property is a fast way to retain/cache a subtree if data hasn't\n * changed.\n *\n * @type {Date}\n * @public\n */\n this.freshness = new Date();\n\n /**\n * Whether or not the resource exists on the server.\n *\n * @type {Boolean}\n * @public\n */\n this.exists = false;\n\n /**\n * The data store that this resource should be persisted to.\n *\n * @type {Store}\n * @protected\n */\n this.store = store;\n }\n\n /**\n * Get the model's ID.\n *\n * @return {Integer}\n * @public\n * @final\n */\n id() {\n return this.data.id;\n }\n\n /**\n * Get one of the model's attributes.\n *\n * @param {String} attribute\n * @return {*}\n * @public\n * @final\n */\n attribute(attribute) {\n return this.data.attributes[attribute];\n }\n\n /**\n * Merge new data into this model locally.\n *\n * @param {Object} data A resource object to merge into this model\n * @public\n */\n pushData(data) {\n // Since most of the top-level items in a resource object are objects\n // (e.g. relationships, attributes), we'll need to check and perform the\n // merge at the second level if that's the case.\n for (const key in data) {\n if (typeof data[key] === 'object') {\n this.data[key] = this.data[key] || {};\n\n // For every item in a second-level object, we want to check if we've\n // been handed a Model instance. If so, we will convert it to a\n // relationship data object.\n for (const innerKey in data[key]) {\n if (data[key][innerKey] instanceof Model) {\n data[key][innerKey] = {data: Model.getIdentifier(data[key][innerKey])};\n }\n this.data[key][innerKey] = data[key][innerKey];\n }\n } else {\n this.data[key] = data[key];\n }\n }\n\n // Now that we've updated the data, we can say that the model is fresh.\n // This is an easy way to invalidate retained subtrees etc.\n this.freshness = new Date();\n }\n\n /**\n * Merge new attributes into this model locally.\n *\n * @param {Object} attributes The attributes to merge.\n * @public\n */\n pushAttributes(attributes) {\n this.pushData({attributes});\n }\n\n /**\n * Merge new attributes into this model, both locally and with persistence.\n *\n * @param {Object} attributes The attributes to save. If a 'relationships' key\n * exists, it will be extracted and relationships will also be saved.\n * @param {Object} [options]\n * @return {Promise}\n * @public\n */\n save(attributes, options = {}) {\n const data = {\n type: this.data.type,\n id: this.data.id,\n attributes\n };\n\n // If a 'relationships' key exists, extract it from the attributes hash and\n // set it on the top-level data object instead. We will be sending this data\n // object to the API for persistence.\n if (attributes.relationships) {\n data.relationships = {};\n\n for (const key in attributes.relationships) {\n const model = attributes.relationships[key];\n\n data.relationships[key] = {\n data: model instanceof Array\n ? model.map(Model.getIdentifier)\n : Model.getIdentifier(model)\n };\n }\n\n delete attributes.relationships;\n }\n\n // Before we update the model's data, we should make a copy of the model's\n // old data so that we can revert back to it if something goes awry during\n // persistence.\n const oldData = this.copyData();\n\n this.pushData(data);\n\n const request = {data};\n if (options.meta) request.meta = options.meta;\n\n return app.request(Object.assign({\n method: this.exists ? 'PATCH' : 'POST',\n url: app.forum.attribute('apiUrl') + this.apiEndpoint(),\n data: request\n }, options)).then(\n // If everything went well, we'll make sure the store knows that this\n // model exists now (if it didn't already), and we'll push the data that\n // the API returned into the store.\n payload => {\n this.store.data[payload.data.type] = this.store.data[payload.data.type] || {};\n this.store.data[payload.data.type][payload.data.id] = this;\n return this.store.pushPayload(payload);\n },\n\n // If something went wrong, though... good thing we backed up our model's\n // old data! We'll revert to that and let others handle the error.\n response => {\n this.pushData(oldData);\n m.lazyRedraw();\n throw response;\n }\n );\n }\n\n /**\n * Send a request to delete the resource.\n *\n * @param {Object} data Data to send along with the DELETE request.\n * @param {Object} [options]\n * @return {Promise}\n * @public\n */\n delete(data, options = {}) {\n if (!this.exists) return m.deferred.resolve().promise;\n\n return app.request(Object.assign({\n method: 'DELETE',\n url: app.forum.attribute('apiUrl') + this.apiEndpoint(),\n data\n }, options)).then(() => {\n this.exists = false;\n this.store.remove(this);\n });\n }\n\n /**\n * Construct a path to the API endpoint for this resource.\n *\n * @return {String}\n * @protected\n */\n apiEndpoint() {\n return '/' + this.data.type + (this.exists ? '/' + this.data.id : '');\n }\n\n copyData() {\n return JSON.parse(JSON.stringify(this.data));\n }\n\n /**\n * Generate a function which returns the value of the given attribute.\n *\n * @param {String} name\n * @param {function} [transform] A function to transform the attribute value\n * @return {*}\n * @public\n */\n static attribute(name, transform) {\n return function() {\n const value = this.data.attributes && this.data.attributes[name];\n\n return transform ? transform(value) : value;\n };\n }\n\n /**\n * Generate a function which returns the value of the given has-one\n * relationship.\n *\n * @param {String} name\n * @return {Model|Boolean|undefined} false if no information about the\n * relationship exists; undefined if the relationship exists but the model\n * has not been loaded; or the model if it has been loaded.\n * @public\n */\n static hasOne(name) {\n return function() {\n if (this.data.relationships) {\n const relationship = this.data.relationships[name];\n\n if (relationship) {\n return app.store.getById(relationship.data.type, relationship.data.id);\n }\n }\n\n return false;\n };\n }\n\n /**\n * Generate a function which returns the value of the given has-many\n * relationship.\n *\n * @param {String} name\n * @return {Array|Boolean} false if no information about the relationship\n * exists; an array if it does, containing models if they have been\n * loaded, and undefined for those that have not.\n * @public\n */\n static hasMany(name) {\n return function() {\n if (this.data.relationships) {\n const relationship = this.data.relationships[name];\n\n if (relationship) {\n return relationship.data.map(data => app.store.getById(data.type, data.id));\n }\n }\n\n return false;\n };\n }\n\n /**\n * Transform the given value into a Date object.\n *\n * @param {String} value\n * @return {Date|null}\n * @public\n */\n static transformDate(value) {\n return value ? new Date(value) : null;\n }\n\n /**\n * Get a resource identifier object for the given model.\n *\n * @param {Model} model\n * @return {Object}\n * @protected\n */\n static getIdentifier(model) {\n return {\n type: model.data.type,\n id: model.data.id\n };\n }\n}\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner <toby.zerner@gmail.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n/**\n * The `Component` class defines a user interface 'building block'. A component\n * can generate a virtual DOM to be rendered on each redraw.\n *\n * An instance's virtual DOM can be retrieved directly using the {@link\n * Component#render} method.\n *\n * @example\n * this.myComponentInstance = new MyComponent({foo: 'bar'});\n * return m('div', this.myComponentInstance.render());\n *\n * Alternatively, components can be nested, letting Mithril take care of\n * instance persistence. For this, the static {@link Component.component} method\n * can be used.\n *\n * @example\n * return m('div', MyComponent.component({foo: 'bar'));\n *\n * @see https://lhorie.github.io/mithril/mithril.component.html\n * @abstract\n */\nexport default class Component {\n /**\n * @param {Object} props\n * @param {Array|Object} children\n * @public\n */\n constructor(props = {}, children = null) {\n if (children) props.children = children;\n\n this.constructor.initProps(props);\n\n /**\n * The properties passed into the component.\n *\n * @type {Object}\n */\n this.props = props;\n\n /**\n * The root DOM element for the component.\n *\n * @type DOMElement\n * @public\n */\n this.element = null;\n\n /**\n * Whether or not to retain the component's subtree on redraw.\n *\n * @type {boolean}\n * @public\n */\n this.retain = false;\n\n this.init();\n }\n\n /**\n * Called when the component is constructed.\n *\n * @protected\n */\n init() {\n }\n\n /**\n * Called when the component is destroyed, i.e. after a redraw where it is no\n * longer a part of the view.\n *\n * @see https://lhorie.github.io/mithril/mithril.component.html#unloading-components\n * @param {Object} e\n * @public\n */\n onunload() {\n }\n\n /**\n * Get the renderable virtual DOM that represents the component's view.\n *\n * This should NOT be overridden by subclasses. Subclasses wishing to define\n * their virtual DOM should override Component#view instead.\n *\n * @example\n * this.myComponentInstance = new MyComponent({foo: 'bar'});\n * return m('div', this.myComponentInstance.render());\n *\n * @returns {Object}\n * @final\n * @public\n */\n render() {\n const vdom = this.retain ? {subtree: 'retain'} : this.view();\n\n // Override the root element's config attribute with our own function, which\n // will set the component instance's element property to the root DOM\n // element, and then run the component class' config method.\n vdom.attrs = vdom.attrs || {};\n\n const originalConfig = vdom.attrs.config;\n\n vdom.attrs.config = (...args) => {\n this.element = args[0];\n this.config.apply(this, args.slice(1));\n if (originalConfig) originalConfig.apply(this, args);\n };\n\n return vdom;\n }\n\n /**\n * Returns a jQuery object for this component's element. If you pass in a\n * selector string, this method will return a jQuery object, using the current\n * element as its buffer.\n *\n * For example, calling `component.$('li')` will return a jQuery object\n * containing all of the `li` elements inside the DOM element of this\n * component.\n *\n * @param {String} [selector] a jQuery-compatible selector string\n * @returns {jQuery} the jQuery object for the DOM node\n * @final\n * @public\n */\n $(selector) {\n const $element = $(this.element);\n\n return selector ? $element.find(selector) : $element;\n }\n\n /**\n * Called after the component's root element is redrawn. This hook can be used\n * to perform any actions on the DOM, both on the initial draw and any\n * subsequent redraws. See Mithril's documentation for more information.\n *\n * @see https://lhorie.github.io/mithril/mithril.html#the-config-attribute\n * @param {Boolean} isInitialized\n * @param {Object} context\n * @param {Object} vdom\n * @public\n */\n config() {\n }\n\n /**\n * Get the virtual DOM that represents the component's view.\n *\n * @return {Object} The virtual DOM\n * @protected\n */\n view() {\n throw new Error('Component#view must be implemented by subclass');\n }\n\n /**\n * Get a Mithril component object for this component, preloaded with props.\n *\n * @see https://lhorie.github.io/mithril/mithril.component.html\n * @param {Object} [props] Properties to set on the component\n * @param children\n * @return {Object} The Mithril component object\n * @property {function} controller\n * @property {function} view\n * @property {Object} component The class of this component\n * @property {Object} props The props that were passed to the component\n * @public\n */\n static component(props = {}, children = null) {\n const componentProps = Object.assign({}, props);\n\n if (children) componentProps.children = children;\n\n this.initProps(componentProps);\n\n // Set up a function for Mithril to get the component's view. It will accept\n // the component's controller (which happens to be the component itself, in\n // our case), update its props with the ones supplied, and then render the view.\n const view = (component) => {\n component.props = componentProps;\n return component.render();\n };\n\n // Mithril uses this property on the view function to cache component\n // controllers between redraws, thus persisting component state.\n view.$original = this.prototype.view;\n\n // Our output object consists of a controller constructor + a view function\n // which Mithril will use to instantiate and render the component. We also\n // attach a reference to the props that were passed through and the\n // component's class for reference.\n const output = {\n controller: this.bind(undefined, componentProps),\n view: view,\n props: componentProps,\n component: this\n };\n\n // If a `key` prop was set, then we'll assume that we want that to actually\n // show up as an attribute on the component object so that Mithril's key\n // algorithm can be applied.\n if (componentProps.key) {\n output.attrs = {key: componentProps.key};\n }\n\n return output;\n }\n\n /**\n * Initialize the component's props.\n *\n * @param {Object} props\n * @public\n */\n static initProps(props) {\n }\n}\n","import Component from '../Component';\nimport icon from '../helpers/icon';\nimport extract from '../utils/extract';\nimport extractText from '../utils/extractText';\nimport LoadingIndicator from './LoadingIndicator';\n\n/**\n * The `Button` component defines an element which, when clicked, performs an\n * action. The button may have the following special props:\n *\n * - `icon` The name of the icon class. If specified, the button will be given a\n * 'has-icon' class name.\n * - `disabled` Whether or not the button is disabled. If truthy, the button\n * will be given a 'disabled' class name, and any `onclick` handler will be\n * removed.\n * - `loading` Whether or not the button should be in a disabled loading state.\n *\n * All other props will be assigned as attributes on the button element.\n *\n * Note that a Button has no default class names. This is because a Button can\n * be used to represent any generic clickable control, like a menu item.\n */\nexport default class Button extends Component {\n view() {\n const attrs = Object.assign({}, this.props);\n\n delete attrs.children;\n\n attrs.className = attrs.className || '';\n attrs.type = attrs.type || 'button';\n\n // If nothing else is provided, we use the textual button content as tooltip\n if (!attrs.title && this.props.children) {\n attrs.title = extractText(this.props.children);\n }\n\n const iconName = extract(attrs, 'icon');\n if (iconName) attrs.className += ' hasIcon';\n\n const loading = extract(attrs, 'loading');\n if (attrs.disabled || loading) {\n attrs.className += ' disabled' + (loading ? ' loading' : '');\n delete attrs.onclick;\n }\n\n return <button {...attrs}>{this.getButtonContent()}</button>;\n }\n\n /**\n * Get the template for the button's content.\n *\n * @return {*}\n * @protected\n */\n getButtonContent() {\n const iconName = this.props.icon;\n\n return [\n iconName && iconName !== true ? icon(iconName, {className: 'Button-icon'}) : '',\n this.props.children ? <span className=\"Button-label\">{this.props.children}</span> : '',\n this.props.loading ? LoadingIndicator.component({size: 'tiny', className: 'LoadingIndicator--inline'}) : ''\n ];\n }\n}\n","class Item {\n constructor(content, priority) {\n this.content = content;\n this.priority = priority;\n }\n}\n\n/**\n * The `ItemList` class collects items and then arranges them into an array\n * by priority.\n */\nexport default class ItemList {\n constructor() {\n /**\n * The items in the list.\n *\n * @type {Object}\n * @public\n */\n this.items = {};\n }\n\n /**\n * Check whether the list is empty.\n *\n * @returns {boolean}\n * @public\n */\n isEmpty() {\n for (const i in this.items) {\n if(this.items.hasOwnProperty(i)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Check whether an item is present in the list.\n *\n * @param key\n * @returns {boolean}\n */\n has(key) {\n return !!this.items[key];\n }\n\n /**\n * Get the content of an item.\n *\n * @param {String} key\n * @return {*}\n * @public\n */\n get(key) {\n return this.items[key].content;\n }\n\n /**\n * Add an item to the list.\n *\n * @param {String} key A unique key for the item.\n * @param {*} content The item's content.\n * @param {Integer} [priority] The priority of the item. Items with a higher\n * priority will be positioned before items with a lower priority.\n * @public\n */\n add(key, content, priority = 0) {\n this.items[key] = new Item(content, priority);\n }\n\n /**\n * Replace an item in the list, only if it is already present.\n *\n * @param {String} key\n * @param {*} [content]\n * @param {Integer} [priority]\n * @public\n */\n replace(key, content = null, priority = null) {\n if (this.items[key]) {\n if (content !== null) {\n this.items[key].content = content;\n }\n\n if (priority !== null) {\n this.items[key].priority = priority;\n }\n }\n }\n\n /**\n * Remove an item from the list.\n *\n * @param {String} key\n * @public\n */\n remove(key) {\n delete this.items[key];\n }\n\n /**\n * Merge another list's items into this one.\n *\n * @param {ItemList} items\n * @public\n */\n merge(items) {\n for (const i in items.items) {\n if (items.items.hasOwnProperty(i) && items.items[i] instanceof Item) {\n this.items[i] = items.items[i];\n }\n }\n }\n\n /**\n * Convert the list into an array of item content arranged by priority. Each\n * item's content will be assigned an `itemName` property equal to the item's\n * unique key.\n *\n * @return {Array}\n * @public\n */\n toArray() {\n const items = [];\n\n for (const i in this.items) {\n if (this.items.hasOwnProperty(i) && this.items[i] instanceof Item) {\n this.items[i].content = Object(this.items[i].content);\n\n this.items[i].content.itemName = i;\n items.push(this.items[i]);\n this.items[i].key = items.length;\n }\n }\n\n return items.sort((a, b) => {\n if (a.priority === b.priority) {\n return a.key - b.key;\n } else if (a.priority > b.priority) {\n return -1;\n }\n return 1;\n }).map(item => item.content);\n }\n}\n\n","module.exports = require(\"core-js/library/fn/object/assign\");","/**\n * The `icon` helper displays an icon.\n *\n * @param {String} fontClass The full icon class, prefix and the icon’s name.\n * @param {Object} attrs Any other attributes to apply.\n * @return {Object}\n */\nexport default function icon(fontClass, attrs = {}) {\n attrs.className = 'icon ' + fontClass + ' ' + (attrs.className || '');\n\n return <i {...attrs}/>;\n}\n","import Separator from '../components/Separator';\nimport classList from '../utils/classList';\n\nfunction isSeparator(item) {\n return item && item.component === Separator;\n}\n\nfunction withoutUnnecessarySeparators(items) {\n const newItems = [];\n let prevItem;\n\n items.forEach((item, i) => {\n if (!isSeparator(item) || (prevItem && !isSeparator(prevItem) && i !== items.length - 1)) {\n prevItem = item;\n newItems.push(item);\n }\n });\n\n return newItems;\n}\n\n/**\n * The `listItems` helper wraps a collection of components in <li> tags,\n * stripping out any unnecessary `Separator` components.\n *\n * @param {*} items\n * @return {Array}\n */\nexport default function listItems(items) {\n if (!(items instanceof Array)) items = [items];\n\n return withoutUnnecessarySeparators(items).map(item => {\n const isListItem = item.component && item.component.isListItem;\n const active = item.component && item.component.isActive && item.component.isActive(item.props);\n const className = item.props ? item.props.itemClassName : item.itemClassName;\n\n if (isListItem) {\n item.attrs = item.attrs || {};\n item.attrs.key = item.attrs.key || item.itemName;\n }\n\n return isListItem\n ? item\n : <li className={classList([\n (item.itemName ? 'item-' + item.itemName : ''),\n className,\n (active ? 'active' : '')\n ])}\n key={item.itemName}>\n {item}\n </li>;\n });\n}\n","import _Object$defineProperty from \"../../core-js/object/define-property\";\nexport default function _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","/**\n * Extract the text nodes from a virtual element.\n *\n * @param {VirtualElement} vdom\n * @return {String}\n */\nexport default function extractText(vdom) {\n if (vdom instanceof Array) {\n return vdom.map(element => extractText(element)).join('');\n } else if (typeof vdom === 'object' && vdom !== null) {\n return extractText(vdom.children);\n } else {\n return vdom;\n }\n}\n","/**\n * The `extract` utility deletes a property from an object and returns its\n * value.\n *\n * @param {Object} object The object that owns the property\n * @param {String} property The name of the property to extract\n * @return {*} The value of the property\n */\nexport default function extract(object, property) {\n const value = object[property];\n\n delete object[property];\n\n return value;\n}\n","import Model from '../Model';\n\nclass Group extends Model {}\n\nObject.assign(Group.prototype, {\n nameSingular: Model.attribute('nameSingular'),\n namePlural: Model.attribute('namePlural'),\n color: Model.attribute('color'),\n icon: Model.attribute('icon')\n});\n\nGroup.ADMINISTRATOR_ID = '1';\nGroup.GUEST_ID = '2';\nGroup.MEMBER_ID = '3';\n\nexport default Group;\n","import Component from '../Component';\nimport Alert from './Alert';\nimport Button from './Button';\n\n/**\n * The `Modal` component displays a modal dialog, wrapped in a form. Subclasses\n * should implement the `className`, `title`, and `content` methods.\n *\n * @abstract\n */\nexport default class Modal extends Component {\n init() {\n /**\n * An alert component to show below the header.\n *\n * @type {Alert}\n */\n this.alert = null;\n }\n\n view() {\n if (this.alert) {\n this.alert.props.dismissible = false;\n }\n\n return (\n <div className={'Modal modal-dialog ' + this.className()}>\n <div className=\"Modal-content\">\n {this.isDismissible() ? (\n <div className=\"Modal-close App-backControl\">\n {Button.component({\n icon: 'fas fa-times',\n onclick: this.hide.bind(this),\n className: 'Button Button--icon Button--link'\n })}\n </div>\n ) : ''}\n\n <form onsubmit={this.onsubmit.bind(this)}>\n <div className=\"Modal-header\">\n <h3 className=\"App-titleControl App-titleControl--text\">{this.title()}</h3>\n </div>\n\n {alert ? <div className=\"Modal-alert\">{this.alert}</div> : ''}\n\n {this.content()}\n </form>\n </div>\n </div>\n );\n }\n\n /**\n * Determine whether or not the modal should be dismissible via an 'x' button.\n *\n * @return {Boolean}\n */\n isDismissible() {\n return true;\n }\n\n /**\n * Get the class name to apply to the modal.\n *\n * @return {String}\n * @abstract\n */\n className() {\n }\n\n /**\n * Get the title of the modal dialog.\n *\n * @return {String}\n * @abstract\n */\n title() {\n }\n\n /**\n * Get the content of the modal.\n *\n * @return {VirtualElement}\n * @abstract\n */\n content() {\n }\n\n /**\n * Handle the modal form's submit event.\n *\n * @param {Event} e\n */\n onsubmit() {\n }\n\n /**\n * Focus on the first input when the modal is ready to be used.\n */\n onready() {\n this.$('form').find('input, select, textarea').first().focus().select();\n }\n\n onhide() {\n }\n\n /**\n * Hide the modal.\n */\n hide() {\n app.modal.close();\n }\n\n /**\n * Stop loading.\n */\n loaded() {\n this.loading = false;\n m.redraw();\n }\n\n /**\n * Show an alert describing an error returned from the API, and give focus to\n * the first relevant field.\n *\n * @param {RequestError} error\n */\n onerror(error) {\n this.alert = error.alert;\n\n m.redraw();\n\n if (error.status === 422 && error.response.errors) {\n this.$('form [name=' + error.response.errors[0].source.pointer.replace('/data/attributes/', '') + ']').select();\n } else {\n this.onready();\n }\n }\n}\n","module.exports = require(\"core-js/library/fn/object/keys\");","/**\n * The `computed` utility creates a function that will cache its output until\n * any of the dependent values are dirty.\n *\n * @param {...String} dependentKeys The keys of the dependent values.\n * @param {function} compute The function which computes the value using the\n * dependent values.\n * @return {Function}\n */\nexport default function computed(...dependentKeys) {\n const keys = dependentKeys.slice(0, -1);\n const compute = dependentKeys.slice(-1)[0];\n\n const dependentValues = {};\n let computedValue;\n\n return function() {\n let recompute = false;\n\n // Read all of the dependent values. If any of them have changed since last\n // time, then we'll want to recompute our output.\n keys.forEach(key => {\n const value = typeof this[key] === 'function' ? this[key]() : this[key];\n\n if (dependentValues[key] !== value) {\n recompute = true;\n dependentValues[key] = value;\n }\n });\n\n if (recompute) {\n computedValue = compute.apply(this, keys.map(key => dependentValues[key]));\n }\n\n return computedValue;\n };\n}\n","import Component from '../Component';\nimport icon from '../helpers/icon';\nimport listItems from '../helpers/listItems';\n\n/**\n * The `Dropdown` component displays a button which, when clicked, shows a\n * dropdown menu beneath it.\n *\n * ### Props\n *\n * - `buttonClassName` A class name to apply to the dropdown toggle button.\n * - `menuClassName` A class name to apply to the dropdown menu.\n * - `icon` The name of an icon to show in the dropdown toggle button.\n * - `caretIcon` The name of an icon to show on the right of the button.\n * - `label` The label of the dropdown toggle button. Defaults to 'Controls'.\n * - `onhide`\n * - `onshow`\n *\n * The children will be displayed as a list inside of the dropdown menu.\n */\nexport default class Dropdown extends Component {\n static initProps(props) {\n super.initProps(props);\n\n props.className = props.className || '';\n props.buttonClassName = props.buttonClassName || '';\n props.menuClassName = props.menuClassName || '';\n props.label = props.label || '';\n props.caretIcon = typeof props.caretIcon !== 'undefined' ? props.caretIcon : 'fas fa-caret-down';\n }\n\n init() {\n this.showing = false;\n }\n\n view() {\n const items = this.props.children ? listItems(this.props.children) : [];\n\n return (\n <div className={'ButtonGroup Dropdown dropdown ' + this.props.className + ' itemCount' + items.length + (this.showing ? ' open' : '')}>\n {this.getButton()}\n {this.getMenu(items)}\n </div>\n );\n }\n\n config(isInitialized) {\n if (isInitialized) return;\n\n // When opening the dropdown menu, work out if the menu goes beyond the\n // bottom of the viewport. If it does, we will apply class to make it show\n // above the toggle button instead of below it.\n this.$().on('shown.bs.dropdown', () => {\n this.showing = true;\n\n if (this.props.onshow) {\n this.props.onshow();\n }\n\n m.redraw();\n\n const $menu = this.$('.Dropdown-menu');\n const isRight = $menu.hasClass('Dropdown-menu--right');\n\n $menu.removeClass('Dropdown-menu--top Dropdown-menu--right');\n\n $menu.toggleClass(\n 'Dropdown-menu--top',\n $menu.offset().top + $menu.height() > $(window).scrollTop() + $(window).height()\n );\n\n if ($menu.offset().top < 0) {\n $menu.removeClass('Dropdown-menu--top');\n }\n\n $menu.toggleClass(\n 'Dropdown-menu--right',\n isRight || $menu.offset().left + $menu.width() > $(window).scrollLeft() + $(window).width()\n );\n });\n\n this.$().on('hidden.bs.dropdown', () => {\n this.showing = false;\n\n if (this.props.onhide) {\n this.props.onhide();\n }\n\n m.redraw();\n });\n }\n\n /**\n * Get the template for the button.\n *\n * @return {*}\n * @protected\n */\n getButton() {\n return (\n <button\n className={'Dropdown-toggle ' + this.props.buttonClassName}\n data-toggle=\"dropdown\"\n onclick={this.props.onclick}>\n {this.getButtonContent()}\n </button>\n );\n }\n\n /**\n * Get the template for the button's content.\n *\n * @return {*}\n * @protected\n */\n getButtonContent() {\n return [\n this.props.icon ? icon(this.props.icon, {className: 'Button-icon'}) : '',\n <span className=\"Button-label\">{this.props.label}</span>,\n this.props.caretIcon ? icon(this.props.caretIcon, {className: 'Button-caret'}) : ''\n ];\n }\n\n getMenu(items) {\n return (\n <ul className={'Dropdown-menu dropdown-menu ' + this.props.menuClassName}>\n {items}\n </ul>\n );\n }\n}\n","/**\n * The `avatar` helper displays a user's avatar.\n *\n * @param {User} user\n * @param {Object} attrs Attributes to apply to the avatar element\n * @return {Object}\n */\nexport default function avatar(user, attrs = {}) {\n attrs.className = 'Avatar ' + (attrs.className || '');\n let content = '';\n\n // If the `title` attribute is set to null or false, we don't want to give the\n // avatar a title. On the other hand, if it hasn't been given at all, we can\n // safely default it to the user's username.\n const hasTitle = attrs.title === 'undefined' || attrs.title;\n if (!hasTitle) delete attrs.title;\n\n // If a user has been passed, then we will set up an avatar using their\n // uploaded image, or the first letter of their username if they haven't\n // uploaded one.\n if (user) {\n const username = user.displayName() || '?';\n const avatarUrl = user.avatarUrl();\n\n if (hasTitle) attrs.title = attrs.title || username;\n\n if (avatarUrl) {\n return <img {...attrs} src={avatarUrl}/>;\n }\n\n content = username.charAt(0).toUpperCase();\n attrs.style = {background: user.color()};\n }\n\n return <span {...attrs}>{content}</span>;\n}\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nvar defaults = {\r\n lines: 12,\r\n length: 7,\r\n width: 5,\r\n radius: 10,\r\n scale: 1.0,\r\n corners: 1,\r\n color: '#000',\r\n fadeColor: 'transparent',\r\n opacity: 0.25,\r\n rotate: 0,\r\n direction: 1,\r\n speed: 1,\r\n trail: 100,\r\n fps: 20,\r\n zIndex: 2e9,\r\n className: 'spinner',\r\n top: '50%',\r\n left: '50%',\r\n shadow: 'none',\r\n position: 'absolute',\r\n};\r\nvar Spinner = /** @class */ (function () {\r\n function Spinner(opts) {\r\n if (opts === void 0) { opts = {}; }\r\n this.opts = __assign({}, defaults, opts);\r\n }\r\n /**\r\n * Adds the spinner to the given target element. If this instance is already\r\n * spinning, it is automatically removed from its previous target by calling\r\n * stop() internally.\r\n */\r\n Spinner.prototype.spin = function (target) {\r\n var _this = this;\r\n this.stop();\r\n this.el = document.createElement('div');\r\n this.el.className = this.opts.className;\r\n this.el.setAttribute('role', 'progressbar');\r\n css(this.el, {\r\n position: this.opts.position,\r\n width: 0,\r\n zIndex: this.opts.zIndex,\r\n left: this.opts.left,\r\n top: this.opts.top,\r\n transform: \"scale(\" + this.opts.scale + \")\",\r\n });\r\n if (target) {\r\n target.insertBefore(this.el, target.firstChild || null);\r\n }\r\n var animator;\r\n var getNow;\r\n if (typeof requestAnimationFrame !== 'undefined') {\r\n animator = requestAnimationFrame;\r\n getNow = function () { return performance.now(); };\r\n }\r\n else {\r\n // fallback for IE 9\r\n animator = function (callback) { return setTimeout(callback, 1000 / _this.opts.fps); };\r\n getNow = function () { return Date.now(); };\r\n }\r\n var lastFrameTime;\r\n var state = 0; // state is rotation percentage (between 0 and 1)\r\n var animate = function () {\r\n var time = getNow();\r\n if (lastFrameTime === undefined) {\r\n lastFrameTime = time - 1;\r\n }\r\n state += getAdvancePercentage(time - lastFrameTime, _this.opts.speed);\r\n lastFrameTime = time;\r\n if (state > 1) {\r\n state -= Math.floor(state);\r\n }\r\n if (_this.el.childNodes.length === _this.opts.lines) {\r\n for (var line = 0; line < _this.opts.lines; line++) {\r\n var opacity = getLineOpacity(line, state, _this.opts);\r\n _this.el.childNodes[line].childNodes[0].style.opacity = opacity.toString();\r\n }\r\n }\r\n _this.animateId = _this.el ? animator(animate) : undefined;\r\n };\r\n drawLines(this.el, this.opts);\r\n animate();\r\n return this;\r\n };\r\n /**\r\n * Stops and removes the Spinner.\r\n * Stopped spinners may be reused by calling spin() again.\r\n */\r\n Spinner.prototype.stop = function () {\r\n if (this.el) {\r\n if (typeof requestAnimationFrame !== 'undefined') {\r\n cancelAnimationFrame(this.animateId);\r\n }\r\n else {\r\n clearTimeout(this.animateId);\r\n }\r\n if (this.el.parentNode) {\r\n this.el.parentNode.removeChild(this.el);\r\n }\r\n this.el = undefined;\r\n }\r\n return this;\r\n };\r\n return Spinner;\r\n}());\r\nexport { Spinner };\r\nfunction getAdvancePercentage(msSinceLastFrame, roundsPerSecond) {\r\n return msSinceLastFrame / 1000 * roundsPerSecond;\r\n}\r\nfunction getLineOpacity(line, state, opts) {\r\n var linePercent = (line + 1) / opts.lines;\r\n var diff = state - (linePercent * opts.direction);\r\n if (diff < 0 || diff > 1) {\r\n diff += opts.direction;\r\n }\r\n // opacity should start at 1, and approach opacity option as diff reaches trail percentage\r\n var trailPercent = opts.trail / 100;\r\n var opacityPercent = 1 - diff / trailPercent;\r\n if (opacityPercent < 0) {\r\n return opts.opacity;\r\n }\r\n var opacityDiff = 1 - opts.opacity;\r\n return opacityPercent * opacityDiff + opts.opacity;\r\n}\r\n/**\r\n * Tries various vendor prefixes and returns the first supported property.\r\n */\r\nfunction vendor(el, prop) {\r\n if (el.style[prop] !== undefined) {\r\n return prop;\r\n }\r\n // needed for transform properties in IE 9\r\n var prefixed = 'ms' + prop.charAt(0).toUpperCase() + prop.slice(1);\r\n if (el.style[prefixed] !== undefined) {\r\n return prefixed;\r\n }\r\n return '';\r\n}\r\n/**\r\n * Sets multiple style properties at once.\r\n */\r\nfunction css(el, props) {\r\n for (var prop in props) {\r\n el.style[vendor(el, prop) || prop] = props[prop];\r\n }\r\n return el;\r\n}\r\n/**\r\n * Returns the line color from the given string or array.\r\n */\r\nfunction getColor(color, idx) {\r\n return typeof color == 'string' ? color : color[idx % color.length];\r\n}\r\n/**\r\n * Internal method that draws the individual lines.\r\n */\r\nfunction drawLines(el, opts) {\r\n var borderRadius = (Math.round(opts.corners * opts.width * 500) / 1000) + 'px';\r\n var shadow = 'none';\r\n if (opts.shadow === true) {\r\n shadow = '0 2px 4px #000'; // default shadow\r\n }\r\n else if (typeof opts.shadow === 'string') {\r\n shadow = opts.shadow;\r\n }\r\n var shadows = parseBoxShadow(shadow);\r\n for (var i = 0; i < opts.lines; i++) {\r\n var degrees = ~~(360 / opts.lines * i + opts.rotate);\r\n var backgroundLine = css(document.createElement('div'), {\r\n position: 'absolute',\r\n top: -opts.width / 2 + \"px\",\r\n width: (opts.length + opts.width) + 'px',\r\n height: opts.width + 'px',\r\n background: getColor(opts.fadeColor, i),\r\n borderRadius: borderRadius,\r\n transformOrigin: 'left',\r\n transform: \"rotate(\" + degrees + \"deg) translateX(\" + opts.radius + \"px)\",\r\n });\r\n var line = css(document.createElement('div'), {\r\n width: '100%',\r\n height: '100%',\r\n background: getColor(opts.color, i),\r\n borderRadius: borderRadius,\r\n boxShadow: normalizeShadow(shadows, degrees),\r\n opacity: opts.opacity,\r\n });\r\n backgroundLine.appendChild(line);\r\n el.appendChild(backgroundLine);\r\n }\r\n}\r\nfunction parseBoxShadow(boxShadow) {\r\n var regex = /^\\s*([a-zA-Z]+\\s+)?(-?\\d+(\\.\\d+)?)([a-zA-Z]*)\\s+(-?\\d+(\\.\\d+)?)([a-zA-Z]*)(.*)$/;\r\n var shadows = [];\r\n for (var _i = 0, _a = boxShadow.split(','); _i < _a.length; _i++) {\r\n var shadow = _a[_i];\r\n var matches = shadow.match(regex);\r\n if (matches === null) {\r\n continue; // invalid syntax\r\n }\r\n var x = +matches[2];\r\n var y = +matches[5];\r\n var xUnits = matches[4];\r\n var yUnits = matches[7];\r\n if (x === 0 && !xUnits) {\r\n xUnits = yUnits;\r\n }\r\n if (y === 0 && !yUnits) {\r\n yUnits = xUnits;\r\n }\r\n if (xUnits !== yUnits) {\r\n continue; // units must match to use as coordinates\r\n }\r\n shadows.push({\r\n prefix: matches[1] || '',\r\n x: x,\r\n y: y,\r\n xUnits: xUnits,\r\n yUnits: yUnits,\r\n end: matches[8],\r\n });\r\n }\r\n return shadows;\r\n}\r\n/**\r\n * Modify box-shadow x/y offsets to counteract rotation\r\n */\r\nfunction normalizeShadow(shadows, degrees) {\r\n var normalized = [];\r\n for (var _i = 0, shadows_1 = shadows; _i < shadows_1.length; _i++) {\r\n var shadow = shadows_1[_i];\r\n var xy = convertOffset(shadow.x, shadow.y, degrees);\r\n normalized.push(shadow.prefix + xy[0] + shadow.xUnits + ' ' + xy[1] + shadow.yUnits + shadow.end);\r\n }\r\n return normalized.join(', ');\r\n}\r\nfunction convertOffset(x, y, degrees) {\r\n var radians = degrees * Math.PI / 180;\r\n var sin = Math.sin(radians);\r\n var cos = Math.cos(radians);\r\n return [\r\n Math.round((x * cos + y * sin) * 1000) / 1000,\r\n Math.round((-x * sin + y * cos) * 1000) / 1000,\r\n ];\r\n}\r\n","import Component from '../Component';\nimport { Spinner } from 'spin.js';\n\n/**\n * The `LoadingIndicator` component displays a loading spinner with spin.js. It\n * may have the following special props:\n *\n * - `size` The spin.js size preset to use. Defaults to 'small'.\n *\n * All other props will be assigned as attributes on the element.\n */\nexport default class LoadingIndicator extends Component {\n view() {\n const attrs = Object.assign({}, this.props);\n\n attrs.className = 'LoadingIndicator ' + (attrs.className || '');\n delete attrs.size;\n\n return <div {...attrs}>{m.trust(' ')}</div>;\n }\n\n config() {\n const options = { zIndex: 'auto', color: this.$().css('color') };\n\n switch (this.props.size) {\n case 'large':\n Object.assign(options, { lines: 10, length: 8, width: 4, radius: 8 });\n break;\n\n default:\n Object.assign(options, { lines: 8, length: 4, width: 3, radius: 5 });\n }\n\n new Spinner(options).spin(this.element);\n }\n}\n","/**\n * The `username` helper displays a user's username in a <span class=\"username\">\n * tag. If the user doesn't exist, the username will be displayed as [deleted].\n *\n * @param {User} user\n * @return {Object}\n */\nexport default function username(user) {\n const name = (user && user.displayName()) || app.translator.trans('core.lib.username.deleted_text');\n\n return <span className=\"username\">{name}</span>;\n}\n","import Component from '../Component';\nimport Button from './Button';\nimport listItems from '../helpers/listItems';\nimport extract from '../utils/extract';\n\n/**\n * The `Alert` component represents an alert box, which contains a message,\n * some controls, and may be dismissible.\n *\n * The alert may have the following special props:\n *\n * - `type` The type of alert this is. Will be used to give the alert a class\n * name of `Alert--{type}`.\n * - `controls` An array of controls to show in the alert.\n * - `dismissible` Whether or not the alert can be dismissed.\n * - `ondismiss` A callback to run when the alert is dismissed.\n *\n * All other props will be assigned as attributes on the alert element.\n */\nexport default class Alert extends Component {\n view() {\n const attrs = Object.assign({}, this.props);\n\n const type = extract(attrs, 'type');\n attrs.className = 'Alert Alert--' + type + ' ' + (attrs.className || '');\n\n const children = extract(attrs, 'children');\n const controls = extract(attrs, 'controls') || [];\n\n // If the alert is meant to be dismissible (which is the case by default),\n // then we will create a dismiss button to append as the final control in\n // the alert.\n const dismissible = extract(attrs, 'dismissible');\n const ondismiss = extract(attrs, 'ondismiss');\n const dismissControl = [];\n\n if (dismissible || dismissible === undefined) {\n dismissControl.push(\n <Button\n icon=\"fas fa-times\"\n className=\"Button Button--link Button--icon Alert-dismiss\"\n onclick={ondismiss}/>\n );\n }\n\n return (\n <div {...attrs}>\n <span className=\"Alert-body\">\n {children}\n </span>\n <ul className=\"Alert-controls\">\n {listItems(controls.concat(dismissControl))}\n </ul>\n </div>\n );\n }\n}\n","import Button from './Button';\n\n/**\n * The `LinkButton` component defines a `Button` which links to a route.\n *\n * ### Props\n *\n * All of the props accepted by `Button`, plus:\n *\n * - `active` Whether or not the page that this button links to is currently\n * active.\n * - `href` The URL to link to. If the current URL `m.route()` matches this,\n * the `active` prop will automatically be set to true.\n */\nexport default class LinkButton extends Button {\n static initProps(props) {\n props.active = this.isActive(props);\n props.config = props.config || m.route;\n }\n\n view() {\n const vdom = super.view();\n\n vdom.tag = 'a';\n\n return vdom;\n }\n\n /**\n * Determine whether a component with the given props is 'active'.\n *\n * @param {Object} props\n * @return {Boolean}\n */\n static isActive(props) {\n return typeof props.active !== 'undefined'\n ? props.active\n : m.route() === props.href;\n }\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import Component from '../Component';\n\n/**\n * The `Separator` component defines a menu separator item.\n */\nclass Separator extends Component {\n view() {\n return <li className=\"Dropdown-separator\"/>;\n }\n}\n\nSeparator.isListItem = true;\n\nexport default Separator;\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","/**\n * The `humanTime` utility converts a date to a localized, human-readable time-\n * ago string.\n *\n * @param {Date} time\n * @return {String}\n */\nexport default function humanTime(time) {\n let m = moment(time);\n const now = moment();\n\n // To prevent showing things like \"in a few seconds\" due to small offsets\n // between client and server time, we always reset future dates to the\n // current time. This will result in \"just now\" being shown instead.\n if (m.isAfter(now)) {\n m = now;\n }\n\n const day = 864e5;\n const diff = m.diff(moment());\n let ago = null;\n\n // If this date was more than a month ago, we'll show the name of the month\n // in the string. If it wasn't this year, we'll show the year as well.\n if (diff < -30 * day) {\n if (m.year() === moment().year()) {\n ago = m.format('D MMM');\n } else {\n ago = m.format('MMM \\'YY');\n }\n } else {\n ago = m.fromNow();\n }\n\n return ago;\n};\n","import Component from '../Component';\nimport icon from '../helpers/icon';\nimport extract from '../utils/extract';\n\n/**\n * The `Badge` component represents a user/discussion badge, indicating some\n * status (e.g. a discussion is stickied, a user is an admin).\n *\n * A badge may have the following special props:\n *\n * - `type` The type of badge this is. This will be used to give the badge a\n * class name of `Badge--{type}`.\n * - `icon` The name of an icon to show inside the badge.\n * - `label`\n *\n * All other props will be assigned as attributes on the badge element.\n */\nexport default class Badge extends Component {\n view() {\n const attrs = Object.assign({}, this.props);\n const type = extract(attrs, 'type');\n const iconName = extract(attrs, 'icon');\n\n attrs.className = 'Badge ' + (type ? 'Badge--' + type : '') + ' ' + (attrs.className || '');\n attrs.title = extract(attrs, 'label') || '';\n\n return (\n <span {...attrs}>\n {iconName ? icon(iconName, {className: 'Badge-icon'}) : m.trust(' ')}\n </span>\n );\n }\n\n config(isInitialized) {\n if (isInitialized) return;\n\n if (this.props.label) this.$().tooltip({container: 'body'});\n }\n}\n","import Component from '../Component';\nimport listItems from '../helpers/listItems';\n\n/**\n * The `FieldSet` component defines a collection of fields, displayed in a list\n * underneath a title. Accepted properties are:\n *\n * - `className` The class name for the fieldset.\n * - `label` The title of this group of fields.\n *\n * The children should be an array of items to show in the fieldset.\n */\nexport default class FieldSet extends Component {\n view() {\n return (\n <fieldset className={this.props.className}>\n <legend>{this.props.label}</legend>\n <ul>{listItems(this.props.children)}</ul>\n </fieldset>\n );\n }\n}\n","/**\n * The `classList` utility creates a list of class names by joining an object's\n * keys, but only for values which are truthy.\n *\n * @example\n * classList({ foo: true, bar: false, qux: 'qaz' });\n * // \"foo qux\"\n *\n * @param {Object} classes\n * @return {String}\n */\nexport default function classList(classes) {\n let classNames;\n\n if (classes instanceof Array) {\n classNames = classes.filter(name => name);\n } else {\n classNames = [];\n\n for (const i in classes) {\n if (classes[i]) classNames.push(i);\n }\n }\n\n return classNames.join(' ');\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import Badge from './Badge';\n\nexport default class GroupBadge extends Badge {\n static initProps(props) {\n super.initProps(props);\n\n if (props.group) {\n props.icon = props.group.icon();\n props.style = {backgroundColor: props.group.color()};\n props.label = typeof props.label === 'undefined' ? props.group.nameSingular() : props.label;\n props.type = 'group--' + props.group.id();\n\n delete props.group;\n }\n }\n}\n","import Dropdown from './Dropdown';\nimport icon from '../helpers/icon';\n\n/**\n * The `SelectDropdown` component is the same as a `Dropdown`, except the toggle\n * button's label is set as the label of the first child which has a truthy\n * `active` prop.\n *\n * ### Props\n *\n * - `caretIcon`\n * - `defaultLabel`\n */\nexport default class SelectDropdown extends Dropdown {\n static initProps(props) {\n props.caretIcon = typeof props.caretIcon !== 'undefined' ? props.caretIcon : 'fas fa-sort';\n\n super.initProps(props);\n\n props.className += ' Dropdown--select';\n }\n\n getButtonContent() {\n const activeChild = this.props.children.filter(child => child.props.active)[0];\n let label = activeChild && activeChild.props.children || this.props.defaultLabel;\n\n if (label instanceof Array) label = label[0];\n\n return [\n <span className=\"Button-label\">{label}</span>,\n icon(this.props.caretIcon, {className: 'Button-caret'})\n ];\n }\n}\n","/**\n * Truncate a string to the given length, appending ellipses if necessary.\n *\n * @param {String} string\n * @param {Number} length\n * @param {Number} [start=0]\n * @return {String}\n */\nexport function truncate(string, length, start = 0) {\n return (start > 0 ? '...' : '') +\n string.substring(start, start + length) +\n (string.length > start + length ? '...' : '');\n}\n\n/**\n * Create a slug out of the given string. Non-alphanumeric characters are\n * converted to hyphens.\n *\n * @param {String} string\n * @return {String}\n */\nexport function slug(string) {\n return string.toLowerCase()\n .replace(/[^a-z0-9]/gi, '-')\n .replace(/-+/g, '-')\n .replace(/-$|^-/g, '');\n}\n\n/**\n * Strip HTML tags and quotes out of the given string, replacing them with\n * meaningful punctuation.\n *\n * @param {String} string\n * @return {String}\n */\nexport function getPlainContent(string) {\n const html = string\n .replace(/(<\\/p>|<br>)/g, '$1 ')\n .replace(/<img\\b[^>]*>/ig, ' ');\n\n const dom = $('<div/>').html(html);\n\n dom.find(getPlainContent.removeSelectors.join(',')).remove();\n\n return dom.text().replace(/\\s+/g, ' ').trim();\n}\n\n/**\n * An array of DOM selectors to remove when getting plain content.\n *\n * @type {Array}\n */\ngetPlainContent.removeSelectors = ['blockquote', 'script'];\n\n/**\n * Make a string's first character uppercase.\n *\n * @param {String} string\n * @return {String}\n */\nexport function ucfirst(string) {\n return string.substr(0, 1).toUpperCase() + string.substr(1);\n}\n","import { truncate } from '../utils/string';\n\n/**\n * The `highlight` helper searches for a word phrase in a string, and wraps\n * matches with the <mark> tag.\n *\n * @param {String} string The string to highlight.\n * @param {String|RegExp} phrase The word or words to highlight.\n * @param {Integer} [length] The number of characters to truncate the string to.\n * The string will be truncated surrounding the first match.\n * @return {Object}\n */\nexport default function highlight(string, phrase, length) {\n if (!phrase && !length) return string;\n\n // Convert the word phrase into a global regular expression (if it isn't\n // already) so we can search the string for matched.\n const regexp = phrase instanceof RegExp ? phrase : new RegExp(phrase, 'gi');\n\n let highlighted = string;\n let start = 0;\n\n // If a length was given, the truncate the string surrounding the first match.\n if (length) {\n if (phrase) start = Math.max(0, string.search(regexp) - length / 2);\n\n highlighted = truncate(highlighted, length, start);\n }\n\n // Convert the string into HTML entities, then highlight all matches with\n // <mark> tags. Then we will return the result as a trusted HTML string.\n highlighted = $('<div/>').text(highlighted).html();\n\n if (phrase) highlighted = highlighted.replace(regexp, '<mark>$&</mark>');\n\n return m.trust(highlighted);\n}\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","const scroll = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n (callback => window.setTimeout(callback, 1000 / 60));\n\n/**\n * The `ScrollListener` class sets up a listener that handles window scroll\n * events.\n */\nexport default class ScrollListener {\n /**\n * @param {Function} callback The callback to run when the scroll position\n * changes.\n * @public\n */\n constructor(callback) {\n this.callback = callback;\n this.lastTop = -1;\n }\n\n /**\n * On each animation frame, as long as the listener is active, run the\n * `update` method.\n *\n * @protected\n */\n loop() {\n if (!this.active) return;\n\n this.update();\n\n scroll(this.loop.bind(this));\n }\n\n /**\n * Check if the scroll position has changed; if it has, run the handler.\n *\n * @param {Boolean} [force=false] Whether or not to force the handler to be\n * run, even if the scroll position hasn't changed.\n * @public\n */\n update(force) {\n const top = window.pageYOffset;\n\n if (this.lastTop !== top || force) {\n this.callback(top);\n this.lastTop = top;\n }\n }\n\n /**\n * Start listening to and handling the window's scroll position.\n *\n * @public\n */\n start() {\n if (!this.active) {\n this.active = true;\n this.loop();\n }\n }\n\n /**\n * Stop listening to and handling the window's scroll position.\n *\n * @public\n */\n stop() {\n this.active = false;\n }\n}\n","/**\n * Extend an object's method by running its output through a mutating callback\n * every time it is called.\n *\n * The callback accepts the method's return value and should perform any\n * mutations directly on this value. For this reason, this function will not be\n * effective on methods which return scalar values (numbers, strings, booleans).\n *\n * Care should be taken to extend the correct object – in most cases, a class'\n * prototype will be the desired target of extension, not the class itself.\n *\n * @example\n * extend(Discussion.prototype, 'badges', function(badges) {\n * // do something with `badges`\n * });\n *\n * @param {Object} object The object that owns the method\n * @param {String} method The name of the method to extend\n * @param {function} callback A callback which mutates the method's output\n */\nexport function extend(object, method, callback) {\n const original = object[method];\n\n object[method] = function(...args) {\n const value = original ? original.apply(this, args) : undefined;\n\n callback.apply(this, [value].concat(args));\n\n return value;\n };\n\n Object.assign(object[method], original);\n}\n\n/**\n * Override an object's method by replacing it with a new function, so that the\n * new function will be run every time the object's method is called.\n *\n * The replacement function accepts the original method as its first argument,\n * which is like a call to 'super'. Any arguments passed to the original method\n * are also passed to the replacement.\n *\n * Care should be taken to extend the correct object – in most cases, a class'\n * prototype will be the desired target of extension, not the class itself.\n *\n * @example\n * override(Discussion.prototype, 'badges', function(original) {\n * const badges = original();\n * // do something with badges\n * return badges;\n * });\n *\n * @param {Object} object The object that owns the method\n * @param {String} method The name of the method to override\n * @param {function} newMethod The method to replace it with\n */\nexport function override(object, method, newMethod) {\n const original = object[method];\n\n object[method] = function(...args) {\n return newMethod.apply(this, [original.bind(this)].concat(args));\n };\n\n Object.assign(object[method], original);\n}\n","import Checkbox from './Checkbox';\n\n/**\n * The `Switch` component is a `Checkbox`, but with a switch display instead of\n * a tick/cross one.\n */\nexport default class Switch extends Checkbox {\n static initProps(props) {\n super.initProps(props);\n\n props.className = (props.className || '') + ' Checkbox--switch';\n }\n\n getDisplay() {\n return this.loading ? super.getDisplay() : '';\n }\n}\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","/*global ColorThief*/\n\nimport Model from '../Model';\nimport stringToColor from '../utils/stringToColor';\nimport ItemList from '../utils/ItemList';\nimport computed from '../utils/computed';\nimport GroupBadge from '../components/GroupBadge';\n\nexport default class User extends Model {}\n\nObject.assign(User.prototype, {\n username: Model.attribute('username'),\n displayName: Model.attribute('displayName'),\n email: Model.attribute('email'),\n isActivated: Model.attribute('isActivated'),\n password: Model.attribute('password'),\n\n avatarUrl: Model.attribute('avatarUrl'),\n preferences: Model.attribute('preferences'),\n groups: Model.hasMany('groups'),\n\n joinTime: Model.attribute('joinTime', Model.transformDate),\n lastSeenTime: Model.attribute('lastSeenTime', Model.transformDate),\n readTime: Model.attribute('readTime', Model.transformDate),\n unreadNotificationsCount: Model.attribute('unreadNotificationsCount'),\n newNotificationsCount: Model.attribute('newNotificationsCount'),\n\n discussionsCount: Model.attribute('discussionsCount'),\n commentsCount: Model.attribute('commentsCount'),\n\n canEdit: Model.attribute('canEdit'),\n canDelete: Model.attribute('canDelete'),\n\n avatarColor: null,\n color: computed('username', 'avatarUrl', 'avatarColor', function(username, avatarUrl, avatarColor) {\n // If we've already calculated and cached the dominant color of the user's\n // avatar, then we can return that in RGB format. If we haven't, we'll want\n // to calculate it. Unless the user doesn't have an avatar, in which case\n // we generate a color from their username.\n if (avatarColor) {\n return 'rgb(' + avatarColor.join(', ') + ')';\n } else if (avatarUrl) {\n this.calculateAvatarColor();\n return '';\n }\n\n return '#' + stringToColor(username);\n }),\n\n /**\n * Check whether or not the user has been seen in the last 5 minutes.\n *\n * @return {Boolean}\n * @public\n */\n isOnline() {\n return this.lastSeenTime() > moment().subtract(5, 'minutes').toDate();\n },\n\n /**\n * Get the Badge components that apply to this user.\n *\n * @return {ItemList}\n */\n badges() {\n const items = new ItemList();\n const groups = this.groups();\n\n if (groups) {\n groups.forEach(group => {\n items.add('group' + group.id(), GroupBadge.component({group}));\n });\n }\n\n return items;\n },\n\n /**\n * Calculate the dominant color of the user's avatar. The dominant color will\n * be set to the `avatarColor` property once it has been calculated.\n *\n * @protected\n */\n calculateAvatarColor() {\n const image = new Image();\n const user = this;\n\n image.onload = function() {\n const colorThief = new ColorThief();\n user.avatarColor = colorThief.getColor(this);\n user.freshness = new Date();\n m.redraw();\n };\n image.src = this.avatarUrl();\n },\n\n /**\n * Update the user's preferences.\n *\n * @param {Object} newPreferences\n * @return {Promise}\n */\n savePreferences(newPreferences) {\n const preferences = this.preferences();\n\n Object.assign(preferences, newPreferences);\n\n return this.save({preferences});\n }\n});\n","import Component from '../Component';\nimport LoadingIndicator from './LoadingIndicator';\nimport icon from '../helpers/icon';\n\n/**\n * The `Checkbox` component defines a checkbox input.\n *\n * ### Props\n *\n * - `state` Whether or not the checkbox is checked.\n * - `className` The class name for the root element.\n * - `disabled` Whether or not the checkbox is disabled.\n * - `onchange` A callback to run when the checkbox is checked/unchecked.\n * - `children` A text label to display next to the checkbox.\n */\nexport default class Checkbox extends Component {\n init() {\n /**\n * Whether or not the checkbox's value is in the process of being saved.\n *\n * @type {Boolean}\n * @public\n */\n this.loading = false;\n }\n\n view() {\n let className = 'Checkbox ' + (this.props.state ? 'on' : 'off') + ' ' + (this.props.className || '');\n if (this.loading) className += ' loading';\n if (this.props.disabled) className += ' disabled';\n\n return (\n <label className={className}>\n <input type=\"checkbox\"\n checked={this.props.state}\n disabled={this.props.disabled}\n onchange={m.withAttr('checked', this.onchange.bind(this))}/>\n <div className=\"Checkbox-display\">\n {this.getDisplay()}\n </div>\n {this.props.children}\n </label>\n );\n }\n\n /**\n * Get the template for the checkbox's display (tick/cross icon).\n *\n * @return {*}\n * @protected\n */\n getDisplay() {\n return this.loading\n ? LoadingIndicator.component({size: 'tiny'})\n : icon(this.props.state ? 'fas fa-check' : 'fas fa-times');\n }\n\n /**\n * Run a callback when the state of the checkbox is changed.\n *\n * @param {Boolean} checked\n * @protected\n */\n onchange(checked) {\n if (this.props.onchange) this.props.onchange(checked, this);\n }\n}\n","import humanTimeUtil from '../utils/humanTime';\n\n/**\n * The `humanTime` helper displays a time in a human-friendly time-ago format\n * (e.g. '12 days ago'), wrapped in a <time> tag with other information about\n * the time.\n *\n * @param {Date} time\n * @return {Object}\n */\nexport default function humanTime(time) {\n const mo = moment(time);\n\n const datetime = mo.format();\n const full = mo.format('LLLL');\n const ago = humanTimeUtil(time);\n\n return <time pubdate datetime={datetime} title={full} data-humantime>{ago}</time>;\n}\n","import Model from '../Model';\nimport computed from '../utils/computed';\nimport ItemList from '../utils/ItemList';\nimport Badge from '../components/Badge';\n\nexport default class Discussion extends Model {}\n\nObject.assign(Discussion.prototype, {\n title: Model.attribute('title'),\n slug: Model.attribute('slug'),\n\n startTime: Model.attribute('startTime', Model.transformDate),\n startUser: Model.hasOne('startUser'),\n startPost: Model.hasOne('startPost'),\n\n lastTime: Model.attribute('lastTime', Model.transformDate),\n lastUser: Model.hasOne('lastUser'),\n lastPost: Model.hasOne('lastPost'),\n lastPostNumber: Model.attribute('lastPostNumber'),\n\n commentsCount: Model.attribute('commentsCount'),\n repliesCount: computed('commentsCount', commentsCount => Math.max(0, commentsCount - 1)),\n posts: Model.hasMany('posts'),\n mostRelevantPost: Model.hasOne('mostRelevantPost'),\n\n readTime: Model.attribute('readTime', Model.transformDate),\n readNumber: Model.attribute('readNumber'),\n isUnread: computed('unreadCount', unreadCount => !!unreadCount),\n isRead: computed('unreadCount', unreadCount => app.session.user && !unreadCount),\n\n hideTime: Model.attribute('hideTime', Model.transformDate),\n hideUser: Model.hasOne('hideUser'),\n isHidden: computed('hideTime', hideTime => !!hideTime),\n\n canReply: Model.attribute('canReply'),\n canRename: Model.attribute('canRename'),\n canHide: Model.attribute('canHide'),\n canDelete: Model.attribute('canDelete'),\n\n /**\n * Remove a post from the discussion's posts relationship.\n *\n * @param {Integer} id The ID of the post to remove.\n * @public\n */\n removePost(id) {\n const relationships = this.data.relationships;\n const posts = relationships && relationships.posts;\n\n if (posts) {\n posts.data.some((data, i) => {\n if (id === data.id) {\n posts.data.splice(i, 1);\n return true;\n }\n });\n }\n },\n\n /**\n * Get the estimated number of unread posts in this discussion for the current\n * user.\n *\n * @return {Integer}\n * @public\n */\n unreadCount() {\n const user = app.session.user;\n\n if (user && user.readTime() < this.lastTime()) {\n return Math.max(0, this.lastPostNumber() - (this.readNumber() || 0));\n }\n\n return 0;\n },\n\n /**\n * Get the Badge components that apply to this discussion.\n *\n * @return {ItemList}\n * @public\n */\n badges() {\n const items = new ItemList();\n\n if (this.isHidden()) {\n items.add('hidden', <Badge type=\"hidden\" icon=\"fas fa-trash\" label={app.translator.trans('core.lib.badge.hidden_tooltip')}/>);\n }\n\n return items;\n },\n\n /**\n * Get a list of all of the post IDs in this discussion.\n *\n * @return {Array}\n * @public\n */\n postIds() {\n const posts = this.data.relationships.posts;\n\n return posts ? posts.data.map(link => link.id) : [];\n }\n});\n","module.exports = require(\"core-js/library/fn/json/stringify\");","/**\n * The `SubtreeRetainer` class represents a Mithril virtual DOM subtree. It\n * keeps track of a number of pieces of data, allowing the subtree to be\n * retained if none of them have changed.\n *\n * @example\n * // constructor\n * this.subtree = new SubtreeRetainer(\n * () => this.props.post.freshness,\n * () => this.showing\n * );\n * this.subtree.check(() => this.props.user.freshness);\n *\n * // view\n * this.subtree.retain() || 'expensive expression'\n *\n * @see https://lhorie.github.io/mithril/mithril.html#persisting-dom-elements-across-route-changes\n */\nexport default class SubtreeRetainer {\n /**\n * @param {...callbacks} callbacks Functions returning data to keep track of.\n */\n constructor(...callbacks) {\n this.callbacks = callbacks;\n this.data = {};\n }\n\n /**\n * Return a virtual DOM directive that will retain a subtree if no data has\n * changed since the last check.\n *\n * @return {Object|false}\n * @public\n */\n retain() {\n let needsRebuild = false;\n\n this.callbacks.forEach((callback, i) => {\n const result = callback();\n\n if (result !== this.data[i]) {\n this.data[i] = result;\n needsRebuild = true;\n }\n });\n\n return needsRebuild ? false : {subtree: 'retain'};\n }\n\n /**\n * Add another callback to be checked.\n *\n * @param {...Function} callbacks\n * @public\n */\n check(...callbacks) {\n this.callbacks = this.callbacks.concat(callbacks);\n }\n\n /**\n * Invalidate the subtree, forcing it to be rerendered.\n *\n * @public\n */\n invalidate() {\n this.data = {};\n }\n}\n","import Component from '../Component';\nimport Button from './Button';\nimport LinkButton from './LinkButton';\n\n/**\n * The `Navigation` component displays a set of navigation buttons. Typically\n * this is just a back button which pops the app's History. If the user is on\n * the root page and there is no history to pop, then in some instances it may\n * show a button that toggles the app's drawer.\n *\n * If the app has a pane, it will also include a 'pin' button which toggles the\n * pinned state of the pane.\n *\n * Accepts the following props:\n *\n * - `className` The name of a class to set on the root element.\n * - `drawer` Whether or not to show a button to toggle the app's drawer if\n * there is no more history to pop.\n */\nexport default class Navigation extends Component {\n view() {\n const {history, pane} = app;\n\n return (\n <div className={'Navigation ButtonGroup ' + (this.props.className || '')}\n onmouseenter={pane && pane.show.bind(pane)}\n onmouseleave={pane && pane.onmouseleave.bind(pane)}>\n {history.canGoBack()\n ? [this.getBackButton(), this.getPaneButton()]\n : this.getDrawerButton()}\n </div>\n );\n }\n\n config(isInitialized, context) {\n // Since this component is 'above' the content of the page (that is, it is a\n // part of the global UI that persists between routes), we will flag the DOM\n // to be retained across route changes.\n context.retain = true;\n }\n\n /**\n * Get the back button.\n *\n * @return {Object}\n * @protected\n */\n getBackButton() {\n const {history} = app;\n const previous = history.getPrevious() || {};\n\n return LinkButton.component({\n className: 'Button Navigation-back Button--icon',\n href: history.backUrl(),\n icon: 'fas fa-chevron-left',\n title: previous.title,\n config: () => {},\n onclick: e => {\n if (e.shiftKey || e.ctrlKey || e.metaKey || e.which === 2) return;\n e.preventDefault();\n history.back();\n }\n });\n }\n\n /**\n * Get the pane pinned toggle button.\n *\n * @return {Object|String}\n * @protected\n */\n getPaneButton() {\n const {pane} = app;\n\n if (!pane || !pane.active) return '';\n\n return Button.component({\n className: 'Button Button--icon Navigation-pin' + (pane.pinned ? ' active' : ''),\n onclick: pane.togglePinned.bind(pane),\n icon: 'fas fa-thumbtack'\n });\n }\n\n /**\n * Get the drawer toggle button.\n *\n * @return {Object|String}\n * @protected\n */\n getDrawerButton() {\n if (!this.props.drawer) return '';\n\n const {drawer} = app;\n const user = app.session.user;\n\n return Button.component({\n className: 'Button Button--icon Navigation-drawer' +\n (user && user.newNotificationsCount() ? ' new' : ''),\n onclick: e => {\n e.stopPropagation();\n drawer.show();\n },\n icon: 'fas fa-bars'\n });\n }\n}\n","export default class RequestError {\n constructor(status, responseText, options, xhr) {\n this.status = status;\n this.responseText = responseText;\n this.options = options;\n this.xhr = xhr;\n\n try {\n this.response = JSON.parse(responseText);\n } catch (e) {\n this.response = null;\n }\n\n this.alert = null;\n }\n}\n","module.exports = {};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nexport default flattenDeep;\n","import ItemList from './utils/ItemList';\nimport Alert from './components/Alert';\nimport Button from './components/Button';\nimport ModalManager from './components/ModalManager';\nimport AlertManager from './components/AlertManager';\nimport RequestErrorModal from './components/RequestErrorModal';\nimport Translator from './Translator';\nimport Store from './Store';\nimport Session from './Session';\nimport extract from './utils/extract';\nimport Drawer from './utils/Drawer';\nimport mapRoutes from './utils/mapRoutes';\nimport RequestError from './utils/RequestError';\nimport ScrollListener from './utils/ScrollListener';\nimport { extend } from './extend';\n\nimport Forum from './models/Forum';\nimport User from './models/User';\nimport Discussion from './models/Discussion';\nimport Post from './models/Post';\nimport Group from './models/Group';\nimport Notification from './models/Notification';\nimport { flattenDeep } from 'lodash-es';\n\n/**\n * The `App` class provides a container for an application, as well as various\n * utilities for the rest of the app to use.\n */\nexport default class Application {\n /**\n * The forum model for this application.\n *\n * @type {Forum}\n * @public\n */\n forum = null;\n\n /**\n * A map of routes, keyed by a unique route name. Each route is an object\n * containing the following properties:\n *\n * - `path` The path that the route is accessed at.\n * - `component` The Mithril component to render when this route is active.\n *\n * @example\n * app.routes.discussion = {path: '/d/:id', component: DiscussionPage.component()};\n *\n * @type {Object}\n * @public\n */\n routes = {};\n\n /**\n * An ordered list of initializers to bootstrap the application.\n *\n * @type {ItemList}\n * @public\n */\n initializers = new ItemList();\n\n /**\n * The app's session.\n *\n * @type {Session}\n * @public\n */\n session = null;\n\n /**\n * The app's translator.\n *\n * @type {Translator}\n * @public\n */\n translator = new Translator();\n\n /**\n * The app's data store.\n *\n * @type {Store}\n * @public\n */\n store = new Store({\n forums: Forum,\n users: User,\n discussions: Discussion,\n posts: Post,\n groups: Group,\n notifications: Notification\n });\n\n /**\n * A local cache that can be used to store data at the application level, so\n * that is persists between different routes.\n *\n * @type {Object}\n * @public\n */\n cache = {};\n\n /**\n * Whether or not the app has been booted.\n *\n * @type {Boolean}\n * @public\n */\n booted = false;\n\n /**\n * An Alert that was shown as a result of an AJAX request error. If present,\n * it will be dismissed on the next successful request.\n *\n * @type {null|Alert}\n * @private\n */\n requestError = null;\n\n data;\n\n title = '';\n titleCount = 0;\n\n load(payload) {\n this.data = payload;\n this.translator.locale = payload.locale;\n }\n\n boot() {\n this.initializers.toArray().forEach(initializer => initializer(this));\n\n this.store.pushPayload({data: this.data.resources});\n\n this.forum = this.store.getById('forums', 1);\n\n this.session = new Session(\n this.store.getById('users', this.data.session.userId),\n this.data.session.csrfToken\n );\n\n this.mount();\n }\n\n bootExtensions(extensions) {\n Object.keys(extensions).forEach(name => {\n const extension = extensions[name];\n \n const extenders = flattenDeep(extension.extend);\n\n for (const extender of extenders) {\n extender.extend(this, { name, exports: extension });\n }\n });\n }\n\n mount() {\n this.modal = m.mount(document.getElementById('modal'), <ModalManager/>);\n this.alerts = m.mount(document.getElementById('alerts'), <AlertManager/>);\n\n this.drawer = new Drawer();\n\n const basePath = this.forum.attribute('basePath');\n m.route(\n document.getElementById('content'),\n basePath + '/',\n mapRoutes(this.routes, basePath)\n );\n\n // Add a class to the body which indicates that the page has been scrolled\n // down.\n new ScrollListener(top => {\n const $app = $('#app');\n const offset = $app.offset().top;\n\n $app\n .toggleClass('affix', top >= offset)\n .toggleClass('scrolled', top > offset);\n }).start();\n\n $(() => {\n $('body').addClass('ontouchstart' in window ? 'touch' : 'no-touch');\n });\n }\n\n /**\n * Get the API response document that has been preloaded into the application.\n *\n * @return {Object|null}\n * @public\n */\n preloadedDocument() {\n if (this.data.document) {\n const results = this.store.pushPayload(this.data.document);\n\n this.data.document = null;\n\n return results;\n }\n\n return null;\n }\n\n /**\n * Set the <title> of the page.\n *\n * @param {String} title\n * @public\n */\n setTitle(title) {\n this.title = title;\n this.updateTitle();\n }\n\n /**\n * Set a number to display in the <title> of the page.\n *\n * @param {Integer} count\n */\n setTitleCount(count) {\n this.titleCount = count;\n this.updateTitle();\n }\n\n updateTitle() {\n document.title = (this.titleCount ? `(${this.titleCount}) ` : '') +\n (this.title ? this.title + ' - ' : '') +\n this.forum.attribute('title');\n }\n\n /**\n * Make an AJAX request, handling any low-level errors that may occur.\n *\n * @see https://lhorie.github.io/mithril/mithril.request.html\n * @param {Object} options\n * @return {Promise}\n * @public\n */\n request(originalOptions) {\n const options = Object.assign({}, originalOptions);\n\n // Set some default options if they haven't been overridden. We want to\n // authenticate all requests with the session token. We also want all\n // requests to run asynchronously in the background, so that they don't\n // prevent redraws from occurring.\n options.background = options.background || true;\n\n extend(options, 'config', (result, xhr) => xhr.setRequestHeader('X-CSRF-Token', this.session.csrfToken));\n\n // If the method is something like PATCH or DELETE, which not all servers\n // and clients support, then we'll send it as a POST request with the\n // intended method specified in the X-HTTP-Method-Override header.\n if (options.method !== 'GET' && options.method !== 'POST') {\n const method = options.method;\n extend(options, 'config', (result, xhr) => xhr.setRequestHeader('X-HTTP-Method-Override', method));\n options.method = 'POST';\n }\n\n // When we deserialize JSON data, if for some reason the server has provided\n // a dud response, we don't want the application to crash. We'll show an\n // error message to the user instead.\n options.deserialize = options.deserialize || (responseText => responseText);\n\n options.errorHandler = options.errorHandler || (error => {\n throw error;\n });\n\n // When extracting the data from the response, we can check the server\n // response code and show an error message to the user if something's gone\n // awry.\n const original = options.extract;\n options.extract = xhr => {\n let responseText;\n\n if (original) {\n responseText = original(xhr.responseText);\n } else {\n responseText = xhr.responseText || null;\n }\n\n const status = xhr.status;\n\n if (status < 200 || status > 299) {\n throw new RequestError(status, responseText, options, xhr);\n }\n\n if (xhr.getResponseHeader) {\n const csrfToken = xhr.getResponseHeader('X-CSRF-Token');\n if (csrfToken) app.session.csrfToken = csrfToken;\n }\n\n try {\n return JSON.parse(responseText);\n } catch (e) {\n throw new RequestError(500, responseText, options, xhr);\n }\n };\n\n if (this.requestError) this.alerts.dismiss(this.requestError.alert);\n\n // Now make the request. If it's a failure, inspect the error that was\n // returned and show an alert containing its contents.\n const deferred = m.deferred();\n\n m.request(options).then(response => deferred.resolve(response), error => {\n this.requestError = error;\n\n let children;\n\n switch (error.status) {\n case 422:\n children = error.response.errors\n .map(error => [error.detail, <br/>])\n .reduce((a, b) => a.concat(b), [])\n .slice(0, -1);\n break;\n\n case 401:\n case 403:\n children = app.translator.trans('core.lib.error.permission_denied_message');\n break;\n\n case 404:\n case 410:\n children = app.translator.trans('core.lib.error.not_found_message');\n break;\n\n case 429:\n children = app.translator.trans('core.lib.error.rate_limit_exceeded_message');\n break;\n\n default:\n children = app.translator.trans('core.lib.error.generic_message');\n }\n\n error.alert = new Alert({\n type: 'error',\n children,\n controls: app.forum.attribute('debug') ? [\n <Button className=\"Button Button--link\" onclick={this.showDebug.bind(this, error)}>Debug</Button>\n ] : undefined\n });\n\n try {\n options.errorHandler(error);\n } catch (error) {\n this.alerts.show(error.alert);\n }\n\n deferred.reject(error);\n });\n\n return deferred.promise;\n }\n\n /**\n * @param {RequestError} error\n * @private\n */\n showDebug(error) {\n this.alerts.dismiss(this.requestErrorAlert);\n\n this.modal.show(new RequestErrorModal({error}));\n }\n\n /**\n * Construct a URL to the route with the given name.\n *\n * @param {String} name\n * @param {Object} params\n * @return {String}\n * @public\n */\n route(name, params = {}) {\n const url = this.routes[name].path.replace(/:([^\\/]+)/g, (m, key) => extract(params, key));\n const queryString = m.route.buildQueryString(params);\n const prefix = m.route.mode === 'pathname' ? app.forum.attribute('basePath') : '';\n\n return prefix + url + (queryString ? '?' + queryString : '');\n }\n}\n","import Model from '../Model';\nimport computed from '../utils/computed';\n\nexport default class Notification extends Model {}\n\nObject.assign(Notification.prototype, {\n contentType: Model.attribute('contentType'),\n subjectId: Model.attribute('subjectId'),\n content: Model.attribute('content'),\n time: Model.attribute('time', Model.date),\n\n isRead: Model.attribute('isRead'),\n unreadCount: Model.attribute('unreadCount'),\n additionalUnreadCount: computed('unreadCount', unreadCount => Math.max(0, unreadCount - 1)),\n\n user: Model.hasOne('user'),\n sender: Model.hasOne('sender'),\n subject: Model.hasOne('subject')\n});\n","import Model from '../Model';\nimport computed from '../utils/computed';\nimport { getPlainContent } from '../utils/string';\n\nexport default class Post extends Model {}\n\nObject.assign(Post.prototype, {\n number: Model.attribute('number'),\n discussion: Model.hasOne('discussion'),\n\n time: Model.attribute('time', Model.transformDate),\n user: Model.hasOne('user'),\n contentType: Model.attribute('contentType'),\n content: Model.attribute('content'),\n contentHtml: Model.attribute('contentHtml'),\n contentPlain: computed('contentHtml', getPlainContent),\n\n editTime: Model.attribute('editTime', Model.transformDate),\n editUser: Model.hasOne('editUser'),\n isEdited: computed('editTime', editTime => !!editTime),\n\n hideTime: Model.attribute('hideTime', Model.transformDate),\n hideUser: Model.hasOne('hideUser'),\n isHidden: computed('hideTime', hideTime => !!hideTime),\n\n canEdit: Model.attribute('canEdit'),\n canDelete: Model.attribute('canDelete')\n});\n","import Model from '../Model';\n\nexport default class Forum extends Model {\n apiEndpoint() {\n return '/';\n }\n}\n","/**\n * The `mapRoutes` utility converts a map of named application routes into a\n * format that can be understood by Mithril.\n *\n * @see https://lhorie.github.io/mithril/mithril.route.html#defining-routes\n * @param {Object} routes\n * @param {String} [basePath]\n * @return {Object}\n */\nexport default function mapRoutes(routes, basePath = '') {\n const map = {};\n\n for (const key in routes) {\n const route = routes[key];\n\n if (route.component) route.component.props.routeName = key;\n\n map[basePath + route.path] = route.component;\n }\n\n return map;\n}\n","/**\n * The `Drawer` class controls the page's drawer. The drawer is the area the\n * slides out from the left on mobile devices; it contains the header and the\n * footer.\n */\nexport default class Drawer {\n constructor() {\n // Set up an event handler so that whenever the content area is tapped,\n // the drawer will close.\n $('#content').click(e => {\n if (this.isOpen()) {\n e.preventDefault();\n this.hide();\n }\n });\n }\n\n /**\n * Check whether or not the drawer is currently open.\n *\n * @return {Boolean}\n * @public\n */\n isOpen() {\n return $('#app').hasClass('drawerOpen');\n }\n\n /**\n * Hide the drawer.\n *\n * @public\n */\n hide() {\n $('#app').removeClass('drawerOpen');\n\n if (this.$backdrop) this.$backdrop.remove();\n }\n\n /**\n * Show the drawer.\n *\n * @public\n */\n show() {\n $('#app').addClass('drawerOpen');\n\n this.$backdrop = $('<div/>')\n .addClass('drawer-backdrop fade')\n .appendTo('body')\n .click(() => this.hide());\n\n setTimeout(() => this.$backdrop.addClass('in'));\n }\n}\n","/**\n * The `Session` class defines the current user session. It stores a reference\n * to the current authenticated user, and provides methods to log in/out.\n */\nexport default class Session {\n constructor(user, csrfToken) {\n /**\n * The current authenticated user.\n *\n * @type {User|null}\n * @public\n */\n this.user = user;\n\n /**\n * The CSRF token.\n *\n * @type {String|null}\n * @public\n */\n this.csrfToken = csrfToken;\n }\n\n /**\n * Attempt to log in a user.\n *\n * @param {String} identification The username/email.\n * @param {String} password\n * @param {Object} [options]\n * @return {Promise}\n * @public\n */\n login(data, options = {}) {\n return app.request(Object.assign({\n method: 'POST',\n url: app.forum.attribute('baseUrl') + '/login',\n data\n }, options));\n }\n\n /**\n * Log the user out.\n *\n * @public\n */\n logout() {\n window.location = app.forum.attribute('baseUrl') + '/logout?token=' + this.csrfToken;\n }\n}\n","/**\n * The `Store` class defines a local data store, and provides methods to\n * retrieve data from the API.\n */\nexport default class Store {\n constructor(models) {\n /**\n * The local data store. A tree of resource types to IDs, such that\n * accessing data[type][id] will return the model for that type/ID.\n *\n * @type {Object}\n * @protected\n */\n this.data = {};\n\n /**\n * The model registry. A map of resource types to the model class that\n * should be used to represent resources of that type.\n *\n * @type {Object}\n * @public\n */\n this.models = models;\n }\n\n /**\n * Push resources contained within an API payload into the store.\n *\n * @param {Object} payload\n * @return {Model|Model[]} The model(s) representing the resource(s) contained\n * within the 'data' key of the payload.\n * @public\n */\n pushPayload(payload) {\n if (payload.included) payload.included.map(this.pushObject.bind(this));\n\n const result = payload.data instanceof Array\n ? payload.data.map(this.pushObject.bind(this))\n : this.pushObject(payload.data);\n\n // Attach the original payload to the model that we give back. This is\n // useful to consumers as it allows them to access meta information\n // associated with their request.\n result.payload = payload;\n\n return result;\n }\n\n /**\n * Create a model to represent a resource object (or update an existing one),\n * and push it into the store.\n *\n * @param {Object} data The resource object\n * @return {Model|null} The model, or null if no model class has been\n * registered for this resource type.\n * @public\n */\n pushObject(data) {\n if (!this.models[data.type]) return null;\n\n const type = this.data[data.type] = this.data[data.type] || {};\n\n if (type[data.id]) {\n type[data.id].pushData(data);\n } else {\n type[data.id] = this.createRecord(data.type, data);\n }\n\n type[data.id].exists = true;\n\n return type[data.id];\n }\n\n /**\n * Make a request to the API to find record(s) of a specific type.\n *\n * @param {String} type The resource type.\n * @param {Integer|Integer[]|Object} [id] The ID(s) of the model(s) to retreive.\n * Alternatively, if an object is passed, it will be handled as the\n * `query` parameter.\n * @param {Object} [query]\n * @param {Object} [options]\n * @return {Promise}\n * @public\n */\n find(type, id, query = {}, options = {}) {\n let data = query;\n let url = app.forum.attribute('apiUrl') + '/' + type;\n\n if (id instanceof Array) {\n url += '?filter[id]=' + id.join(',');\n } else if (typeof id === 'object') {\n data = id;\n } else if (id) {\n url += '/' + id;\n }\n\n return app.request(Object.assign({\n method: 'GET',\n url,\n data\n }, options)).then(this.pushPayload.bind(this));\n }\n\n /**\n * Get a record from the store by ID.\n *\n * @param {String} type The resource type.\n * @param {Integer} id The resource ID.\n * @return {Model}\n * @public\n */\n getById(type, id) {\n return this.data[type] && this.data[type][id];\n }\n\n /**\n * Get a record from the store by the value of a model attribute.\n *\n * @param {String} type The resource type.\n * @param {String} key The name of the method on the model.\n * @param {*} value The value of the model attribute.\n * @return {Model}\n * @public\n */\n getBy(type, key, value) {\n return this.all(type).filter(model => model[key]() === value)[0];\n }\n\n /**\n * Get all loaded records of a specific type.\n *\n * @param {String} type\n * @return {Model[]}\n * @public\n */\n all(type) {\n const records = this.data[type];\n\n return records ? Object.keys(records).map(id => records[id]) : [];\n }\n\n /**\n * Remove the given model from the store.\n *\n * @param {Model} model\n */\n remove(model) {\n delete this.data[model.data.type][model.id()];\n }\n\n /**\n * Create a new record of the given type.\n *\n * @param {String} type The resource type\n * @param {Object} [data] Any data to initialize the model with\n * @return {Model}\n * @public\n */\n createRecord(type, data = {}) {\n data.type = data.type || type;\n\n return new (this.models[type])(data, this);\n }\n}\n","function hsvToRgb(h, s, v) {\n let r;\n let g;\n let b;\n\n const i = Math.floor(h * 6);\n const f = h * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n case 5: r = v; g = p; b = q; break;\n }\n\n return {\n r: Math.floor(r * 255),\n g: Math.floor(g * 255),\n b: Math.floor(b * 255)\n };\n}\n\n/**\n * Convert the given string to a unique color.\n *\n * @param {String} string\n * @return {String}\n */\nexport default function stringToColor(string) {\n let num = 0;\n\n // Convert the username into a number based on the ASCII value of each\n // character.\n for (let i = 0; i < string.length; i++) {\n num += string.charCodeAt(i);\n }\n\n // Construct a color using the remainder of that number divided by 360, and\n // some predefined saturation and value values.\n const hue = num % 360;\n const rgb = hsvToRgb(hue / 360, 0.3, 0.9);\n\n return '' + rgb.r.toString(16) + rgb.g.toString(16) + rgb.b.toString(16);\n}\n","import User from './models/User';\nimport username from './helpers/username';\nimport extractText from './utils/extractText';\nimport extract from './utils/extract';\n\n/**\n * Translator with the same API as Symfony's.\n *\n * Derived from https://github.com/willdurand/BazingaJsTranslationBundle\n * which is available under the MIT License.\n * Copyright (c) William Durand <william.durand1@gmail.com>\n */\nexport default class Translator {\n constructor() {\n /**\n * A map of translation keys to their translated values.\n *\n * @type {Object}\n * @public\n */\n this.translations = {};\n\n this.locale = null;\n }\n\n trans(id, parameters) {\n const translation = this.translations[id];\n\n if (translation) {\n return this.apply(translation, parameters || {});\n }\n\n return id;\n }\n\n transChoice(id, number, parameters) {\n let translation = this.translations[id];\n\n if (translation) {\n number = parseInt(number, 10);\n\n translation = this.pluralize(translation, number);\n\n return this.apply(translation, parameters || {});\n }\n\n return id;\n }\n\n apply(translation, input) {\n // If we've been given a user model as one of the input parameters, then\n // we'll extract the username and use that for the translation. In the\n // future there should be a hook here to inspect the user and change the\n // translation key. This will allow a gender property to determine which\n // translation key is used.\n if ('user' in input) {\n const user = extract(input, 'user');\n\n if (!input.username) input.username = username(user);\n }\n\n translation = translation.split(new RegExp('({[a-z0-9_]+}|</?[a-z0-9_]+>)', 'gi'));\n\n const hydrated = [];\n const open = [hydrated];\n\n translation.forEach(part => {\n const match = part.match(new RegExp('{([a-z0-9_]+)}|<(/?)([a-z0-9_]+)>', 'i'));\n\n if (match) {\n if (match[1]) {\n open[0].push(input[match[1]]);\n } else if (match[3]) {\n if (match[2]) {\n open.shift();\n } else {\n let tag = input[match[3]] || {tag: match[3], children: []};\n open[0].push(tag);\n open.unshift(tag.children || tag);\n }\n }\n } else {\n open[0].push(part);\n }\n });\n\n return hydrated.filter(part => part);\n }\n\n pluralize(translation, number) {\n const sPluralRegex = new RegExp(/^\\w+\\: +(.+)$/),\n cPluralRegex = new RegExp(/^\\s*((\\{\\s*(\\-?\\d+[\\s*,\\s*\\-?\\d+]*)\\s*\\})|([\\[\\]])\\s*(-Inf|\\-?\\d+)\\s*,\\s*(\\+?Inf|\\-?\\d+)\\s*([\\[\\]]))\\s?(.+?)$/),\n iPluralRegex = new RegExp(/^\\s*(\\{\\s*(\\-?\\d+[\\s*,\\s*\\-?\\d+]*)\\s*\\})|([\\[\\]])\\s*(-Inf|\\-?\\d+)\\s*,\\s*(\\+?Inf|\\-?\\d+)\\s*([\\[\\]])/),\n standardRules = [],\n explicitRules = [];\n\n translation.split('|').forEach(part => {\n if (cPluralRegex.test(part)) {\n const matches = part.match(cPluralRegex);\n explicitRules[matches[0]] = matches[matches.length - 1];\n } else if (sPluralRegex.test(part)) {\n const matches = part.match(sPluralRegex);\n standardRules.push(matches[1]);\n } else {\n standardRules.push(part);\n }\n });\n\n explicitRules.forEach((rule, e) => {\n if (iPluralRegex.test(e)) {\n const matches = e.match(iPluralRegex);\n\n if (matches[1]) {\n const ns = matches[2].split(',');\n\n for (let n in ns) {\n if (number == ns[n]) {\n return explicitRules[e];\n }\n }\n } else {\n var leftNumber = this.convertNumber(matches[4]);\n var rightNumber = this.convertNumber(matches[5]);\n\n if (('[' === matches[3] ? number >= leftNumber : number > leftNumber) &&\n (']' === matches[6] ? number <= rightNumber : number < rightNumber)) {\n return explicitRules[e];\n }\n }\n }\n });\n\n return standardRules[this.pluralPosition(number, this.locale)] || standardRules[0] || undefined;\n }\n\n convertNumber(number) {\n if ('-Inf' === number) {\n return Number.NEGATIVE_INFINITY;\n } else if ('+Inf' === number || 'Inf' === number) {\n return Number.POSITIVE_INFINITY;\n }\n\n return parseInt(number, 10);\n }\n\n pluralPosition(number, locale) {\n if ('pt_BR' === locale) {\n locale = 'xbr';\n }\n\n if (locale.length > 3) {\n locale = locale.split('_')[0];\n }\n\n switch (locale) {\n case 'bo':\n case 'dz':\n case 'id':\n case 'ja':\n case 'jv':\n case 'ka':\n case 'km':\n case 'kn':\n case 'ko':\n case 'ms':\n case 'th':\n case 'vi':\n case 'zh':\n return 0;\n\n case 'af':\n case 'az':\n case 'bn':\n case 'bg':\n case 'ca':\n case 'da':\n case 'de':\n case 'el':\n case 'en':\n case 'eo':\n case 'es':\n case 'et':\n case 'eu':\n case 'fa':\n case 'fi':\n case 'fo':\n case 'fur':\n case 'fy':\n case 'gl':\n case 'gu':\n case 'ha':\n case 'he':\n case 'hu':\n case 'is':\n case 'it':\n case 'ku':\n case 'lb':\n case 'ml':\n case 'mn':\n case 'mr':\n case 'nah':\n case 'nb':\n case 'ne':\n case 'nl':\n case 'nn':\n case 'no':\n case 'om':\n case 'or':\n case 'pa':\n case 'pap':\n case 'ps':\n case 'pt':\n case 'so':\n case 'sq':\n case 'sv':\n case 'sw':\n case 'ta':\n case 'te':\n case 'tk':\n case 'tr':\n case 'ur':\n case 'zu':\n return (number == 1) ? 0 : 1;\n\n case 'am':\n case 'bh':\n case 'fil':\n case 'fr':\n case 'gun':\n case 'hi':\n case 'ln':\n case 'mg':\n case 'nso':\n case 'xbr':\n case 'ti':\n case 'wa':\n return ((number === 0) || (number == 1)) ? 0 : 1;\n\n case 'be':\n case 'bs':\n case 'hr':\n case 'ru':\n case 'sr':\n case 'uk':\n return ((number % 10 == 1) && (number % 100 != 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2);\n\n case 'cs':\n case 'sk':\n return (number == 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2);\n\n case 'ga':\n return (number == 1) ? 0 : ((number == 2) ? 1 : 2);\n\n case 'lt':\n return ((number % 10 == 1) && (number % 100 != 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2);\n\n case 'sl':\n return (number % 100 == 1) ? 0 : ((number % 100 == 2) ? 1 : (((number % 100 == 3) || (number % 100 == 4)) ? 2 : 3));\n\n case 'mk':\n return (number % 10 == 1) ? 0 : 1;\n\n case 'mt':\n return (number == 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3));\n\n case 'lv':\n return (number === 0) ? 0 : (((number % 10 == 1) && (number % 100 != 11)) ? 1 : 2);\n\n case 'pl':\n return (number == 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2);\n\n case 'cy':\n return (number == 1) ? 0 : ((number == 2) ? 1 : (((number == 8) || (number == 11)) ? 2 : 3));\n\n case 'ro':\n return (number == 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2);\n\n case 'ar':\n return (number === 0) ? 0 : ((number == 1) ? 1 : ((number == 2) ? 2 : (((number >= 3) && (number <= 10)) ? 3 : (((number >= 11) && (number <= 99)) ? 4 : 5))));\n\n default:\n return 0;\n }\n }\n}\n","import Modal from './Modal';\n\nexport default class RequestErrorModal extends Modal {\n className() {\n return 'RequestErrorModal Modal--large';\n }\n\n title() {\n return this.props.error.xhr\n ? this.props.error.xhr.status+' '+this.props.error.xhr.statusText\n : '';\n }\n\n content() {\n let responseText;\n\n try {\n responseText = JSON.stringify(JSON.parse(this.props.error.responseText), null, 2);\n } catch (e) {\n responseText = this.props.error.responseText;\n }\n\n return <div className=\"Modal-body\">\n <pre>\n {this.props.error.options.method} {this.props.error.options.url}<br/><br/>\n {responseText}\n </pre>\n </div>;\n }\n}\n","import Component from '../Component';\nimport Alert from './Alert';\n\n/**\n * The `AlertManager` component provides an area in which `Alert` components can\n * be shown and dismissed.\n */\nexport default class AlertManager extends Component {\n init() {\n /**\n * An array of Alert components which are currently showing.\n *\n * @type {Alert[]}\n * @protected\n */\n this.components = [];\n }\n\n view() {\n return (\n <div className=\"AlertManager\">\n {this.components.map(component => <div className=\"AlertManager-alert\">{component}</div>)}\n </div>\n );\n }\n\n config(isInitialized, context) {\n // Since this component is 'above' the content of the page (that is, it is a\n // part of the global UI that persists between routes), we will flag the DOM\n // to be retained across route changes.\n context.retain = true;\n }\n\n /**\n * Show an Alert in the alerts area.\n *\n * @param {Alert} component\n * @public\n */\n show(component) {\n if (!(component instanceof Alert)) {\n throw new Error('The AlertManager component can only show Alert components');\n }\n\n component.props.ondismiss = this.dismiss.bind(this, component);\n\n this.components.push(component);\n m.redraw();\n }\n\n /**\n * Dismiss an alert.\n *\n * @param {Alert} component\n * @public\n */\n dismiss(component) {\n const index = this.components.indexOf(component);\n\n if (index !== -1) {\n this.components.splice(index, 1);\n m.redraw();\n }\n }\n\n /**\n * Clear all alerts.\n *\n * @public\n */\n clear() {\n this.components = [];\n m.redraw();\n }\n}\n","import Component from '../Component';\nimport Modal from './Modal';\n\n/**\n * The `ModalManager` component manages a modal dialog. Only one modal dialog\n * can be shown at once; loading a new component into the ModalManager will\n * overwrite the previous one.\n */\nexport default class ModalManager extends Component {\n init() {\n this.showing = false;\n this.component = null;\n }\n\n view() {\n return (\n <div className=\"ModalManager modal fade\">\n {this.component && this.component.render()}\n </div>\n );\n }\n\n config(isInitialized, context) {\n if (isInitialized) return;\n\n // Since this component is 'above' the content of the page (that is, it is a\n // part of the global UI that persists between routes), we will flag the DOM\n // to be retained across route changes.\n context.retain = true;\n\n this.$()\n .on('hidden.bs.modal', this.clear.bind(this))\n .on('shown.bs.modal', this.onready.bind(this));\n }\n\n /**\n * Show a modal dialog.\n *\n * @param {Modal} component\n * @public\n */\n show(component) {\n if (!(component instanceof Modal)) {\n throw new Error('The ModalManager component can only show Modal components');\n }\n\n clearTimeout(this.hideTimeout);\n\n this.showing = true;\n this.component = component;\n\n app.current.retain = true;\n\n m.redraw(true);\n\n this.$().modal({backdrop: this.component.isDismissible() ? true : 'static'}).modal('show');\n this.onready();\n }\n\n /**\n * Close the modal dialog.\n *\n * @public\n */\n close() {\n if (!this.showing) return;\n\n // Don't hide the modal immediately, because if the consumer happens to call\n // the `show` method straight after to show another modal dialog, it will\n // cause Bootstrap's modal JS to misbehave. Instead we will wait for a tiny\n // bit to give the `show` method the opportunity to prevent this from going\n // ahead.\n this.hideTimeout = setTimeout(() => {\n this.$().modal('hide');\n this.showing = false;\n });\n }\n\n /**\n * Clear content from the modal area.\n *\n * @protected\n */\n clear() {\n if (this.component) {\n this.component.onhide();\n }\n\n this.component = null;\n\n app.current.retain = false;\n\n m.lazyRedraw();\n }\n\n /**\n * When the modal dialog is ready to be used, tell it!\n *\n * @protected\n */\n onready() {\n if (this.component && this.component.onready) {\n this.component.onready(this.$());\n }\n }\n}\n","import Component from '../Component';\n\nexport default function patchMithril(global) {\n const mo = global.m;\n\n const m = function(comp, ...args) {\n if (comp.prototype && comp.prototype instanceof Component) {\n let children = args.slice(1);\n if (children.length === 1 && Array.isArray(children[0])) {\n children = children[0]\n }\n\n return comp.component(args[0], children);\n }\n\n const node = mo.apply(this, arguments);\n\n if (node.attrs.bidi) {\n m.bidi(node, node.attrs.bidi);\n }\n\n if (node.attrs.route) {\n node.attrs.href = node.attrs.route;\n node.attrs.config = m.route;\n\n delete node.attrs.route;\n }\n\n return node;\n };\n\n Object.keys(mo).forEach(key => m[key] = mo[key]);\n\n /**\n * Redraw only if not in the middle of a computation (e.g. a route change).\n *\n * @return {void}\n */\n m.lazyRedraw = function() {\n m.startComputation();\n m.endComputation();\n };\n\n global.m = m;\n}\n","/**\n * The `formatNumber` utility localizes a number into a string with the\n * appropriate punctuation.\n *\n * @example\n * formatNumber(1234);\n * // 1,234\n *\n * @param {Number} number\n * @return {String}\n */\nexport default function formatNumber(number) {\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n}\n","/**\n * The `anchorScroll` utility saves the scroll position relative to an element,\n * and then restores it after a callback has been run.\n *\n * This is useful if a redraw will change the page's content above the viewport.\n * Normally doing this will result in the content in the viewport being pushed\n * down or pulled up. By wrapping the redraw with this utility, the scroll\n * position can be anchor to an element that is in or below the viewport, so\n * the content in the viewport will stay the same.\n *\n * @param {DOMElement} element The element to anchor the scroll position to.\n * @param {Function} callback The callback to run that will change page content.\n */\nexport default function anchorScroll(element, callback) {\n const $window = $(window);\n const relativeScroll = $(element).offset().top - $window.scrollTop();\n\n callback();\n\n $window.scrollTop($(element).offset().top - relativeScroll);\n}\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","import Component from '../Component';\nimport icon from '../helpers/icon';\n\n/**\n * The `Select` component displays a <select> input, surrounded with some extra\n * elements for styling. It accepts the following props:\n *\n * - `options` A map of option values to labels.\n * - `onchange` A callback to run when the selected value is changed.\n * - `value` The value of the selected option.\n */\nexport default class Select extends Component {\n view() {\n const {options, onchange, value} = this.props;\n\n return (\n <span className=\"Select\">\n <select className=\"Select-input FormControl\" onchange={onchange ? m.withAttr('value', onchange.bind(this)) : undefined} value={value}>\n {Object.keys(options).map(key => <option value={key}>{options[key]}</option>)}\n </select>\n {icon('fas fa-sort', {className: 'Select-caret'})}\n </span>\n );\n }\n}\n","import Component from '../Component';\n\n/**\n * The `Placeholder` component displays a muted text with some call to action,\n * usually used as an empty state.\n *\n * ### Props\n *\n * - `text`\n */\nexport default class Placeholder extends Component {\n view() {\n return (\n <div className=\"Placeholder\">\n <p>{this.props.text}</p>\n </div>\n );\n }\n}\n","/**\n * The `abbreviateNumber` utility converts a number to a shorter localized form.\n *\n * @example\n * abbreviateNumber(1234);\n * // \"1.2K\"\n *\n * @param {Integer} number\n * @return {String}\n */\nexport default function abbreviateNumber(number) {\n // TODO: translation\n if (number >= 1000000) {\n return Math.floor(number / 1000000) + app.translator.trans('core.lib.number_suffix.mega_text');\n } else if (number >= 1000) {\n return Math.floor(number / 1000) + app.translator.trans('core.lib.number_suffix.kilo_text');\n } else {\n return number.toString();\n }\n}\n","/**\n * The `fullTime` helper displays a formatted time string wrapped in a <time>\n * tag.\n *\n * @param {Date} time\n * @return {Object}\n */\nexport default function fullTime(time) {\n const mo = moment(time);\n\n const datetime = mo.format();\n const full = mo.format('LLLL');\n\n return <time pubdate datetime={datetime}>{full}</time>;\n}\n","import icon from './icon';\n\n/**\n * The `useronline` helper displays a green circle if the user is online\n *\n * @param {User} user\n * @return {Object}\n */\nexport default function userOnline(user) {\n if (user.lastSeenTime() && user.isOnline()) {\n return <span className=\"UserOnline\">{icon('fas fa-circle')}</span>;\n }\n}\n","import Dropdown from './Dropdown';\nimport Button from './Button';\nimport icon from '../helpers/icon';\n\n/**\n * The `SplitDropdown` component is similar to `Dropdown`, but the first child\n * is displayed as its own button prior to the toggle button.\n */\nexport default class SplitDropdown extends Dropdown {\n static initProps(props) {\n super.initProps(props);\n\n props.className += ' Dropdown--split';\n props.menuClassName += ' Dropdown-menu--right';\n }\n\n getButton() {\n // Make a copy of the props of the first child component. We will assign\n // these props to a new button, so that it has exactly the same behaviour as\n // the first child.\n const firstChild = this.getFirstChild();\n const buttonProps = Object.assign({}, firstChild.props);\n buttonProps.className = (buttonProps.className || '') + ' SplitDropdown-button Button ' + this.props.buttonClassName;\n\n return [\n Button.component(buttonProps),\n <button\n className={'Dropdown-toggle Button Button--icon ' + this.props.buttonClassName}\n data-toggle=\"dropdown\">\n {icon(this.props.icon, {className: 'Button-icon'})}\n {icon('fas fa-caret-down', {className: 'Button-caret'})}\n </button>\n ];\n }\n\n /**\n * Get the first child. If the first child is an array, the first item in that\n * array will be returned.\n *\n * @return {*}\n * @protected\n */\n getFirstChild() {\n let firstChild = this.props.children;\n\n while (firstChild instanceof Array) firstChild = firstChild[0];\n\n return firstChild;\n }\n}\n","/**\n * The `evented` mixin provides methods allowing an object to trigger events,\n * running externally registered event handlers.\n */\nexport default {\n /**\n * Arrays of registered event handlers, grouped by the event name.\n *\n * @type {Object}\n * @protected\n */\n handlers: null,\n\n /**\n * Get all of the registered handlers for an event.\n *\n * @param {String} event The name of the event.\n * @return {Array}\n * @protected\n */\n getHandlers(event) {\n this.handlers = this.handlers || {};\n\n this.handlers[event] = this.handlers[event] || [];\n\n return this.handlers[event];\n },\n\n /**\n * Trigger an event.\n *\n * @param {String} event The name of the event.\n * @param {...*} args Arguments to pass to event handlers.\n * @public\n */\n trigger(event, ...args) {\n this.getHandlers(event).forEach(handler => handler.apply(this, args));\n },\n\n /**\n * Register an event handler.\n *\n * @param {String} event The name of the event.\n * @param {function} handler The function to handle the event.\n */\n on(event, handler) {\n this.getHandlers(event).push(handler);\n },\n\n /**\n * Register an event handler so that it will run only once, and then\n * unregister itself.\n *\n * @param {String} event The name of the event.\n * @param {function} handler The function to handle the event.\n */\n one(event, handler) {\n const wrapper = function() {\n handler.apply(this, arguments);\n\n this.off(event, wrapper);\n };\n\n this.getHandlers(event).push(wrapper);\n },\n\n /**\n * Unregister an event handler.\n *\n * @param {String} event The name of the event.\n * @param {function} handler The function that handles the event.\n */\n off(event, handler) {\n const handlers = this.getHandlers(event);\n const index = handlers.indexOf(handler);\n\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n}\n","import _Object$assign from \"../../core-js/object/assign\";\nexport default function _extends() {\n _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * The `mixin` utility assigns the properties of a set of 'mixin' objects to\n * the prototype of a parent object.\n *\n * @example\n * class MyClass extends mixin(ExistingClass, evented, etc) {}\n *\n * @param {Class} Parent The class to extend the new class from.\n * @param {...Object} mixins The objects to mix in.\n * @return {Class} A new class that extends Parent and contains the mixins.\n */\nexport default function mixin(Parent, ...mixins) {\n class Mixed extends Parent {}\n\n mixins.forEach(object => {\n Object.assign(Mixed.prototype, object);\n });\n\n return Mixed;\n}\n","export default class Routes {\n type;\n attributes = [];\n hasOnes = [];\n hasManys = [];\n\n constructor(type, model = null) {\n this.type = type;\n this.model = model;\n }\n\n attribute(name) {\n this.attributes.push(name);\n\n return this;\n }\n\n hasOne(type) {\n this.hasOnes.push(type);\n\n return this;\n }\n\n hasMany(type) {\n this.hasManys.push(type);\n\n return this;\n }\n\n extend(app, extension) {\n if (this.model) {\n app.store.models[this.type] = this.model;\n }\n \n const model = app.store.models[this.type];\n\n this.attributes.forEach(name => model.prototype[name] = model.attribute(name));\n this.hasOnes.forEach(name => model.prototype[name] = model.hasOne(name));\n this.hasManys.forEach(name => model.prototype[name] = model.hasMany(name));\n }\n}","export default class PostTypes {\n postComponents = {};\n\n add(name, component) {\n this.postComponents[name] = component;\n\n return this;\n }\n\n extend(app, extension) {\n Object.assign(app.postComponents, this.postComponents);\n }\n}","export default class Routes {\n routes = {};\n\n add(name, path, component) {\n this.routes[name] = { path, component };\n\n return this;\n }\n\n extend(app, extension) {\n Object.assign(app.routes, this.routes);\n }\n}","import 'expose-loader?$!expose-loader?jQuery!jquery';\nimport 'expose-loader?m!mithril';\nimport 'expose-loader?moment!moment';\nimport 'expose-loader?m.bidi!m.attrs.bidi';\nimport 'bootstrap/js/affix';\nimport 'bootstrap/js/dropdown';\nimport 'bootstrap/js/modal';\nimport 'bootstrap/js/tooltip';\nimport 'bootstrap/js/transition';\nimport 'jquery.hotkeys/jquery.hotkeys';\n\nimport patchMithril from './utils/patchMithril';\n\npatchMithril(window);\n\nimport * as Extend from './extend/index';\n\nexport { Extend };\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = true;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","/* global Promise */\r\n\r\n;(function (global, factory) { // eslint-disable-line\r\n\t\"use strict\"\r\n\t/* eslint-disable no-undef */\r\n\tvar m = factory(global)\r\n\t/*\tSet dependencies when no window for isomorphic compatibility */\r\n\tif(typeof window === \"undefined\") {\r\n\t\tm.deps({\r\n\t\t\tdocument: typeof document !== \"undefined\" ? document : {},\r\n\t\t\tlocation: typeof location !== \"undefined\" ? location : {},\r\n\t\t\tclearTimeout: clearTimeout,\r\n\t\t\tsetTimeout: setTimeout\r\n\t\t})\r\n\t}\r\n\tif (typeof module === \"object\" && module != null && module.exports) {\r\n\t\tmodule.exports = m\r\n\t} else if (typeof define === \"function\" && define.amd) {\r\n\t\tdefine(function () { return m })\r\n\t} else {\r\n\t\tglobal.m = m\r\n\t}\r\n\t/* eslint-enable no-undef */\r\n})(typeof window !== \"undefined\" ? window : this, function factory(global, undefined) { // eslint-disable-line\r\n\t\"use strict\"\r\n\r\n\tm.version = function () {\r\n\t\treturn \"v0.2.8\"\r\n\t}\r\n\r\n\tvar hasOwn = {}.hasOwnProperty\r\n\tvar type = {}.toString\r\n\r\n\tfunction isFunction(object) {\r\n\t\treturn typeof object === \"function\"\r\n\t}\r\n\r\n\tfunction isObject(object) {\r\n\t\treturn type.call(object) === \"[object Object]\"\r\n\t}\r\n\r\n\tfunction isString(object) {\r\n\t\treturn type.call(object) === \"[object String]\"\r\n\t}\r\n\r\n\tvar isArray = Array.isArray || function (object) {\r\n\t\treturn type.call(object) === \"[object Array]\"\r\n\t}\r\n\r\n\tfunction noop() {}\r\n\r\n\tvar voidElements = {\r\n\t\tAREA: 1,\r\n\t\tBASE: 1,\r\n\t\tBR: 1,\r\n\t\tCOL: 1,\r\n\t\tCOMMAND: 1,\r\n\t\tEMBED: 1,\r\n\t\tHR: 1,\r\n\t\tIMG: 1,\r\n\t\tINPUT: 1,\r\n\t\tKEYGEN: 1,\r\n\t\tLINK: 1,\r\n\t\tMETA: 1,\r\n\t\tPARAM: 1,\r\n\t\tSOURCE: 1,\r\n\t\tTRACK: 1,\r\n\t\tWBR: 1\r\n\t}\r\n\r\n\t// caching commonly used variables\r\n\tvar $document, $location, $requestAnimationFrame, $cancelAnimationFrame\r\n\r\n\t// self invoking function needed because of the way mocks work\r\n\tfunction initialize(mock) {\r\n\t\t$document = mock.document\r\n\t\t$location = mock.location\r\n\t\t$cancelAnimationFrame = mock.cancelAnimationFrame || mock.clearTimeout\r\n\t\t$requestAnimationFrame = mock.requestAnimationFrame || mock.setTimeout\r\n\t}\r\n\r\n\t// testing API\r\n\tm.deps = function (mock) {\r\n\t\tinitialize(global = mock || window)\r\n\t\treturn global\r\n\t}\r\n\r\n\tm.deps.factory = m.factory = factory\r\n\r\n\tm.deps(global)\r\n\r\n\t/**\r\n\t * @typedef {String} Tag\r\n\t * A string that looks like -> div.classname#id[param=one][param2=two]\r\n\t * Which describes a DOM node\r\n\t */\r\n\r\n\tfunction parseTagAttrs(cell, tag) {\r\n\t\tvar classes = []\r\n\t\t/* eslint-disable max-len */\r\n\t\tvar parser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\r\n\t\t/* eslint-enable max-len */\r\n\t\tvar match\r\n\r\n\t\twhile ((match = parser.exec(tag))) {\r\n\t\t\tif (match[1] === \"\" && match[2]) {\r\n\t\t\t\tcell.tag = match[2]\r\n\t\t\t} else if (match[1] === \"#\") {\r\n\t\t\t\tcell.attrs.id = match[2]\r\n\t\t\t} else if (match[1] === \".\") {\r\n\t\t\t\tclasses.push(match[2])\r\n\t\t\t} else if (match[3].charAt(0) === \"[\") { // #1195\r\n\t\t\t\tvar attrValue = match[6]\r\n\t\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\")\r\n\t\t\t\tif (match[4] === \"class\") classes.push(attrValue)\r\n\t\t\t\telse cell.attrs[match[4]] = attrValue || true\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn classes\r\n\t}\r\n\r\n\tfunction getVirtualChildren(args, hasAttrs) {\r\n\t\tvar children = hasAttrs ? args.slice(1) : args\r\n\r\n\t\tif (children.length === 1 && isArray(children[0])) {\r\n\t\t\treturn children[0]\r\n\t\t} else {\r\n\t\t\treturn children\r\n\t\t}\r\n\t}\r\n\r\n\tfunction assignAttrs(target, attrs, classes) {\r\n\t\tvar classAttr = \"class\" in attrs ? \"class\" : \"className\"\r\n\r\n\t\tfor (var attrName in attrs) {\r\n\t\t\tif (hasOwn.call(attrs, attrName)) {\r\n\t\t\t\tif (attrName === classAttr &&\r\n\t\t\t\t\t\tattrs[attrName] != null &&\r\n\t\t\t\t\t\tattrs[attrName] !== \"\") {\r\n\t\t\t\t\tclasses.push(attrs[attrName])\r\n\t\t\t\t\t// create key in correct iteration order\r\n\t\t\t\t\ttarget[attrName] = \"\"\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget[attrName] = attrs[attrName]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (classes.length) target[classAttr] = classes.join(\" \")\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {Tag} The DOM node tag\r\n\t * @param {Object=[]} optional key-value pairs to be mapped to DOM attrs\r\n\t * @param {...mNode=[]} Zero or more Mithril child nodes. Can be an array,\r\n\t * or splat (optional)\r\n\t */\r\n\tfunction m(tag, pairs) {\r\n\t\tvar args = []\r\n\r\n\t\tfor (var i = 1, length = arguments.length; i < length; i++) {\r\n\t\t\targs[i - 1] = arguments[i]\r\n\t\t}\r\n\r\n\t\tif (tag && isFunction(tag.view)) return parameterize(tag, args)\r\n\r\n\t\tif (!isString(tag)) {\r\n\t\t\tthrow new Error(\"selector in m(selector, attrs, children) should \" +\r\n\t\t\t\t\"be a string\")\r\n\t\t}\r\n\r\n\t\tvar hasAttrs = pairs != null && isObject(pairs) &&\r\n\t\t\t!(\"tag\" in pairs || \"view\" in pairs || \"subtree\" in pairs)\r\n\r\n\t\tvar attrs = hasAttrs ? pairs : {}\r\n\t\tvar cell = {\r\n\t\t\ttag: \"div\",\r\n\t\t\tattrs: {},\r\n\t\t\tchildren: getVirtualChildren(args, hasAttrs)\r\n\t\t}\r\n\r\n\t\tassignAttrs(cell.attrs, attrs, parseTagAttrs(cell, tag))\r\n\t\treturn cell\r\n\t}\r\n\r\n\tfunction forEach(list, f) {\r\n\t\tfor (var i = 0; i < list.length && !f(list[i], i++);) {\r\n\t\t\t// function called in condition\r\n\t\t}\r\n\t}\r\n\r\n\tfunction forKeys(list, f) {\r\n\t\tforEach(list, function (attrs, i) {\r\n\t\t\treturn (attrs = attrs && attrs.attrs) &&\r\n\t\t\t\tattrs.key != null &&\r\n\t\t\t\tf(attrs, i)\r\n\t\t})\r\n\t}\r\n\t// This function was causing deopts in Chrome.\r\n\tfunction dataToString(data) {\r\n\t\t// data.toString() might throw or return null if data is the return\r\n\t\t// value of Console.log in some versions of Firefox (behavior depends on\r\n\t\t// version)\r\n\t\ttry {\r\n\t\t\tif (typeof data !== \"boolean\" &&\r\n\t\t\t\t\tdata != null &&\r\n\t\t\t\t\tdata.toString() != null) return data\r\n\t\t} catch (e) {\r\n\t\t\t// silently ignore errors\r\n\t\t}\r\n\t\treturn \"\"\r\n\t}\r\n\r\n\t// This function was causing deopts in Chrome.\r\n\tfunction injectTextNode(parentElement, first, index, data) {\r\n\t\ttry {\r\n\t\t\tinsertNode(parentElement, first, index)\r\n\t\t\tfirst.nodeValue = data\r\n\t\t} catch (e) {\r\n\t\t\t// IE erroneously throws error when appending an empty text node\r\n\t\t\t// after a null\r\n\t\t}\r\n\t}\r\n\r\n\tfunction flatten(list) {\r\n\t\t// recursively flatten array\r\n\t\tfor (var i = 0; i < list.length; i++) {\r\n\t\t\tif (isArray(list[i])) {\r\n\t\t\t\tlist = list.concat.apply([], list)\r\n\t\t\t\t// check current index again and flatten until there are no more\r\n\t\t\t\t// nested arrays at that index\r\n\t\t\t\ti--\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn list\r\n\t}\r\n\r\n\tfunction insertNode(parentElement, node, index) {\r\n\t\tparentElement.insertBefore(node,\r\n\t\t\tparentElement.childNodes[index] || null)\r\n\t}\r\n\r\n\tvar DELETION = 1\r\n\tvar INSERTION = 2\r\n\tvar MOVE = 3\r\n\r\n\tfunction handleKeysDiffer(data, existing, cached, parentElement) {\r\n\t\tforKeys(data, function (key, i) {\r\n\t\t\texisting[key = key.key] = existing[key] ? {\r\n\t\t\t\taction: MOVE,\r\n\t\t\t\tindex: i,\r\n\t\t\t\tfrom: existing[key].index,\r\n\t\t\t\telement: cached.nodes[existing[key].index] ||\r\n\t\t\t\t\t$document.createElement(\"div\")\r\n\t\t\t} : {action: INSERTION, index: i}\r\n\t\t})\r\n\r\n\t\tvar actions = []\r\n\t\tfor (var prop in existing) {\r\n\t\t\tif (hasOwn.call(existing, prop)) {\r\n\t\t\t\tactions.push(existing[prop])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar changes = actions.sort(sortChanges)\r\n\t\tvar newCached = new Array(cached.length)\r\n\r\n\t\tnewCached.nodes = cached.nodes.slice()\r\n\r\n\t\tforEach(changes, function (change) {\r\n\t\t\tvar index = change.index\r\n\t\t\tif (change.action === DELETION) {\r\n\t\t\t\tclear(cached[index].nodes, cached[index])\r\n\t\t\t\tnewCached.splice(index, 1)\r\n\t\t\t}\r\n\t\t\tif (change.action === INSERTION) {\r\n\t\t\t\tvar dummy = $document.createElement(\"div\")\r\n\t\t\t\tdummy.key = data[index].attrs.key\r\n\t\t\t\tinsertNode(parentElement, dummy, index)\r\n\t\t\t\tnewCached.splice(index, 0, {\r\n\t\t\t\t\tattrs: {key: data[index].attrs.key},\r\n\t\t\t\t\tnodes: [dummy]\r\n\t\t\t\t})\r\n\t\t\t\tnewCached.nodes[index] = dummy\r\n\t\t\t}\r\n\r\n\t\t\tif (change.action === MOVE) {\r\n\t\t\t\tvar changeElement = change.element\r\n\t\t\t\tvar maybeChanged = parentElement.childNodes[index]\r\n\t\t\t\tif (maybeChanged !== changeElement && changeElement !== null) {\r\n\t\t\t\t\tparentElement.insertBefore(changeElement,\r\n\t\t\t\t\t\tmaybeChanged || null)\r\n\t\t\t\t}\r\n\t\t\t\tnewCached[index] = cached[change.from]\r\n\t\t\t\tnewCached.nodes[index] = changeElement\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\treturn newCached\r\n\t}\r\n\r\n\tfunction diffKeys(data, cached, existing, parentElement) {\r\n\t\tvar keysDiffer = data.length !== cached.length\r\n\r\n\t\tif (!keysDiffer) {\r\n\t\t\tforKeys(data, function (attrs, i) {\r\n\t\t\t\tvar cachedCell = cached[i]\r\n\t\t\t\treturn keysDiffer = cachedCell &&\r\n\t\t\t\t\tcachedCell.attrs &&\r\n\t\t\t\t\tcachedCell.attrs.key !== attrs.key\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tif (keysDiffer) {\r\n\t\t\treturn handleKeysDiffer(data, existing, cached, parentElement)\r\n\t\t} else {\r\n\t\t\treturn cached\r\n\t\t}\r\n\t}\r\n\r\n\tfunction diffArray(data, cached, nodes) {\r\n\t\t// diff the array itself\r\n\r\n\t\t// update the list of DOM nodes by collecting the nodes from each item\r\n\t\tforEach(data, function (_, i) {\r\n\t\t\tif (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)\r\n\t\t})\r\n\t\t// remove items from the end of the array if the new array is shorter\r\n\t\t// than the old one. if errors ever happen here, the issue is most\r\n\t\t// likely a bug in the construction of the `cached` data structure\r\n\t\t// somewhere earlier in the program\r\n\t\tforEach(cached.nodes, function (node, i) {\r\n\t\t\tif (node.parentNode != null && nodes.indexOf(node) < 0) {\r\n\t\t\t\tclear([node], [cached[i]])\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tif (data.length < cached.length) cached.length = data.length\r\n\t\tcached.nodes = nodes\r\n\t}\r\n\r\n\tfunction buildArrayKeys(data) {\r\n\t\tvar guid = 0\r\n\t\tforKeys(data, function () {\r\n\t\t\tforEach(data, function (attrs) {\r\n\t\t\t\tif ((attrs = attrs && attrs.attrs) && attrs.key == null) {\r\n\t\t\t\t\tattrs.key = \"__mithril__\" + guid++\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\treturn 1\r\n\t\t})\r\n\t}\r\n\r\n\tfunction isDifferentEnough(data, cached, dataAttrKeys) {\r\n\t\tif (data.tag !== cached.tag) return true\r\n\r\n\t\tif (dataAttrKeys.sort().join() !==\r\n\t\t\t\tObject.keys(cached.attrs).sort().join()) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\tif (data.attrs.id !== cached.attrs.id) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\tif (data.attrs.key !== cached.attrs.key) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\tif (m.redraw.strategy() === \"all\") {\r\n\t\t\treturn !cached.configContext || cached.configContext.retain !== true\r\n\t\t}\r\n\r\n\t\tif (m.redraw.strategy() === \"diff\") {\r\n\t\t\treturn cached.configContext && cached.configContext.retain === false\r\n\t\t}\r\n\r\n\t\treturn false\r\n\t}\r\n\r\n\tfunction maybeRecreateObject(data, cached, dataAttrKeys) {\r\n\t\t// if an element is different enough from the one in cache, recreate it\r\n\t\tif (isDifferentEnough(data, cached, dataAttrKeys)) {\r\n\t\t\tif (cached.nodes.length) clear(cached.nodes)\r\n\r\n\t\t\tif (cached.configContext &&\r\n\t\t\t\t\tisFunction(cached.configContext.onunload)) {\r\n\t\t\t\tcached.configContext.onunload()\r\n\t\t\t}\r\n\r\n\t\t\tif (cached.controllers) {\r\n\t\t\t\tforEach(cached.controllers, function (controller) {\r\n\t\t\t\t\tif (controller.onunload) {\r\n\t\t\t\t\t\tcontroller.onunload({preventDefault: noop})\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getObjectNamespace(data, namespace) {\r\n\t\tif (data.attrs.xmlns) return data.attrs.xmlns\r\n\t\tif (data.tag === \"svg\") return \"http://www.w3.org/2000/svg\"\r\n\t\tif (data.tag === \"math\") return \"http://www.w3.org/1998/Math/MathML\"\r\n\t\treturn namespace\r\n\t}\r\n\r\n\tvar pendingRequests = 0\r\n\tm.startComputation = function () { pendingRequests++ }\r\n\tm.endComputation = function () {\r\n\t\tif (pendingRequests > 1) {\r\n\t\t\tpendingRequests--\r\n\t\t} else {\r\n\t\t\tpendingRequests = 0\r\n\t\t\tm.redraw()\r\n\t\t}\r\n\t}\r\n\r\n\tfunction unloadCachedControllers(cached, views, controllers) {\r\n\t\tif (controllers.length) {\r\n\t\t\tcached.views = views\r\n\t\t\tcached.controllers = controllers\r\n\t\t\tforEach(controllers, function (controller) {\r\n\t\t\t\tif (controller.onunload && controller.onunload.$old) {\r\n\t\t\t\t\tcontroller.onunload = controller.onunload.$old\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (pendingRequests && controller.onunload) {\r\n\t\t\t\t\tvar onunload = controller.onunload\r\n\t\t\t\t\tcontroller.onunload = function (){}\r\n\t\t\t\t\tcontroller.onunload.$old = onunload\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tfunction scheduleConfigsToBeCalled(configs, data, node, isNew, cached) {\r\n\t\t// schedule configs to be called. They are called after `build` finishes\r\n\t\t// running\r\n\t\tif (isFunction(data.attrs.config)) {\r\n\t\t\tvar context = cached.configContext = cached.configContext || {}\r\n\r\n\t\t\t// bind\r\n\t\t\tconfigs.push(function () {\r\n\t\t\t\treturn data.attrs.config.call(data, node, !isNew, context,\r\n\t\t\t\t\tcached)\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tfunction buildUpdatedNode(\r\n\t\tcached,\r\n\t\tdata,\r\n\t\teditable,\r\n\t\thasKeys,\r\n\t\tnamespace,\r\n\t\tviews,\r\n\t\tconfigs,\r\n\t\tcontrollers\r\n\t) {\r\n\t\tvar node = cached.nodes[0]\r\n\r\n\t\tif (hasKeys) {\r\n\t\t\tsetAttributes(node, data.tag, data.attrs, cached.attrs, namespace)\r\n\t\t}\r\n\r\n\t\tcached.children = build(\r\n\t\t\tnode,\r\n\t\t\tdata.tag,\r\n\t\t\tundefined,\r\n\t\t\tundefined,\r\n\t\t\tdata.children,\r\n\t\t\tcached.children,\r\n\t\t\tfalse,\r\n\t\t\t0,\r\n\t\t\tdata.attrs.contenteditable ? node : editable,\r\n\t\t\tnamespace,\r\n\t\t\tconfigs\r\n\t\t)\r\n\r\n\t\tcached.nodes.intact = true\r\n\r\n\t\tif (controllers.length) {\r\n\t\t\tcached.views = views\r\n\t\t\tcached.controllers = controllers\r\n\t\t}\r\n\r\n\t\treturn node\r\n\t}\r\n\r\n\tfunction handleNonexistentNodes(data, parentElement, index) {\r\n\t\tvar nodes\r\n\t\tif (data.$trusted) {\r\n\t\t\tnodes = injectHTML(parentElement, index, data)\r\n\t\t} else {\r\n\t\t\tnodes = [$document.createTextNode(data)]\r\n\t\t\tif (!(parentElement.nodeName in voidElements)) {\r\n\t\t\t\tinsertNode(parentElement, nodes[0], index)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cached\r\n\r\n\t\tif (typeof data === \"string\" ||\r\n\t\t\t\ttypeof data === \"number\" ||\r\n\t\t\t\ttypeof data === \"boolean\") {\r\n\t\t\tcached = new data.constructor(data)\r\n\t\t} else {\r\n\t\t\tcached = data\r\n\t\t}\r\n\r\n\t\tcached.nodes = nodes\r\n\t\treturn cached\r\n\t}\r\n\r\n\tfunction reattachNodes(\r\n\t\tdata,\r\n\t\tcached,\r\n\t\tparentElement,\r\n\t\teditable,\r\n\t\tindex,\r\n\t\tparentTag\r\n\t) {\r\n\t\tvar nodes = cached.nodes\r\n\t\tif (!editable || editable !== $document.activeElement ||\r\n\t\t\t\tdata !== cached) {\r\n\t\t\tif (data.$trusted) {\r\n\t\t\t\tclear(nodes, cached)\r\n\t\t\t\tnodes = injectHTML(parentElement, index, data)\r\n\t\t\t} else if (parentTag === \"textarea\") {\r\n\t\t\t\t// <textarea> uses `value` instead of `nodeValue`.\r\n\t\t\t\tparentElement.value = data\r\n\t\t\t} else if (editable) {\r\n\t\t\t\t// contenteditable nodes use `innerHTML` instead of `nodeValue`.\r\n\t\t\t\teditable.innerHTML = data\r\n\t\t\t\tnodes = [].slice.call(editable.childNodes)\r\n\t\t\t} else {\r\n\t\t\t\t// was a trusted string\r\n\t\t\t\tif (nodes[0].nodeType === 1 || nodes.length > 1 ||\r\n\t\t\t\t\t\t(nodes[0].nodeValue.trim &&\r\n\t\t\t\t\t\t\t!nodes[0].nodeValue.trim())) {\r\n\t\t\t\t\tclear(cached.nodes, cached)\r\n\t\t\t\t\tnodes = [$document.createTextNode(data)]\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinjectTextNode(parentElement, nodes[0], index, data)\r\n\t\t\t}\r\n\t\t}\r\n\t\tcached = new data.constructor(data)\r\n\t\tcached.nodes = nodes\r\n\t\tcached.$trusted = data.$trusted\r\n\t\treturn cached\r\n\t}\r\n\r\n\tfunction handleTextNode(\r\n\t\tcached,\r\n\t\tdata,\r\n\t\tindex,\r\n\t\tparentElement,\r\n\t\tshouldReattach,\r\n\t\teditable,\r\n\t\tparentTag\r\n\t) {\r\n\t\tif (!cached.nodes.length) {\r\n\t\t\treturn handleNonexistentNodes(data, parentElement, index)\r\n\t\t} else if (cached.valueOf() !== data.valueOf() || shouldReattach) {\r\n\t\t\treturn reattachNodes(data, cached, parentElement, editable, index,\r\n\t\t\t\tparentTag)\r\n\t\t} else {\r\n\t\t\treturn (cached.nodes.intact = true, cached)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getSubArrayCount(item) {\r\n\t\tif (item.$trusted) {\r\n\t\t\t// fix offset of next element if item was a trusted string w/ more\r\n\t\t\t// than one html element\r\n\t\t\treturn item.nodes.length\r\n\t\t} else if (isArray(item)) {\r\n\t\t\treturn item.length\r\n\t\t}\r\n\t\treturn 1\r\n\t}\r\n\r\n\tfunction buildArray(\r\n\t\tdata,\r\n\t\tcached,\r\n\t\tparentElement,\r\n\t\tindex,\r\n\t\tparentTag,\r\n\t\tshouldReattach,\r\n\t\teditable,\r\n\t\tnamespace,\r\n\t\tconfigs\r\n\t) {\r\n\t\tdata = flatten(data)\r\n\t\tvar nodes = []\r\n\t\tvar intact = cached.length === data.length\r\n\t\tvar subArrayCount = 0\r\n\r\n\t\t// keys algorithm: sort elements without recreating them if keys are\r\n\t\t// present\r\n\t\t//\r\n\t\t// 1) create a map of all existing keys, and mark all for deletion\r\n\t\t// 2) add new keys to map and mark them for addition\r\n\t\t// 3) if key exists in new list, change action from deletion to a move\r\n\t\t// 4) for each key, handle its corresponding action as marked in\r\n\t\t// previous steps\r\n\r\n\t\tvar existing = {}\r\n\t\tvar shouldMaintainIdentities = false\r\n\r\n\t\tforKeys(cached, function (attrs, i) {\r\n\t\t\tshouldMaintainIdentities = true\r\n\t\t\texisting[cached[i].attrs.key] = {action: DELETION, index: i}\r\n\t\t})\r\n\r\n\t\tbuildArrayKeys(data)\r\n\t\tif (shouldMaintainIdentities) {\r\n\t\t\tcached = diffKeys(data, cached, existing, parentElement)\r\n\t\t}\r\n\t\t// end key algorithm\r\n\r\n\t\tvar cacheCount = 0\r\n\t\t// faster explicitly written\r\n\t\tfor (var i = 0, len = data.length; i < len; i++) {\r\n\t\t\t// diff each item in the array\r\n\t\t\tvar item = build(\r\n\t\t\t\tparentElement,\r\n\t\t\t\tparentTag,\r\n\t\t\t\tcached,\r\n\t\t\t\tindex,\r\n\t\t\t\tdata[i],\r\n\t\t\t\tcached[cacheCount],\r\n\t\t\t\tshouldReattach,\r\n\t\t\t\tindex + subArrayCount || subArrayCount,\r\n\t\t\t\teditable,\r\n\t\t\t\tnamespace,\r\n\t\t\t\tconfigs)\r\n\r\n\t\t\tif (item !== undefined) {\r\n\t\t\t\tintact = intact && item.nodes.intact\r\n\t\t\t\tsubArrayCount += getSubArrayCount(item)\r\n\t\t\t\tcached[cacheCount++] = item\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!intact) diffArray(data, cached, nodes)\r\n\t\treturn cached\r\n\t}\r\n\r\n\tfunction makeCache(data, cached, index, parentIndex, parentCache) {\r\n\t\tif (cached != null) {\r\n\t\t\tif (type.call(cached) === type.call(data)) return cached\r\n\r\n\t\t\tif (parentCache && parentCache.nodes) {\r\n\t\t\t\tvar offset = index - parentIndex\r\n\t\t\t\tvar end = offset + (isArray(data) ? data : cached.nodes).length\r\n\t\t\t\tclear(\r\n\t\t\t\t\tparentCache.nodes.slice(offset, end),\r\n\t\t\t\t\tparentCache.slice(offset, end))\r\n\t\t\t} else if (cached.nodes) {\r\n\t\t\t\tclear(cached.nodes, cached)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcached = new data.constructor()\r\n\t\t// if constructor creates a virtual dom element, use a blank object as\r\n\t\t// the base cached node instead of copying the virtual el (#277)\r\n\t\tif (cached.tag) cached = {}\r\n\t\tcached.nodes = []\r\n\t\treturn cached\r\n\t}\r\n\r\n\tfunction constructNode(data, namespace) {\r\n\t\tif (data.attrs.is) {\r\n\t\t\tif (namespace == null) {\r\n\t\t\t\treturn $document.createElement(data.tag, data.attrs.is)\r\n\t\t\t} else {\r\n\t\t\t\treturn $document.createElementNS(namespace, data.tag,\r\n\t\t\t\t\tdata.attrs.is)\r\n\t\t\t}\r\n\t\t} else if (namespace == null) {\r\n\t\t\treturn $document.createElement(data.tag)\r\n\t\t} else {\r\n\t\t\treturn $document.createElementNS(namespace, data.tag)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction constructAttrs(data, node, namespace, hasKeys) {\r\n\t\tif (hasKeys) {\r\n\t\t\treturn setAttributes(node, data.tag, data.attrs, {}, namespace)\r\n\t\t} else {\r\n\t\t\treturn data.attrs\r\n\t\t}\r\n\t}\r\n\r\n\tfunction constructChildren(\r\n\t\tdata,\r\n\t\tnode,\r\n\t\tcached,\r\n\t\teditable,\r\n\t\tnamespace,\r\n\t\tconfigs\r\n\t) {\r\n\t\tif (data.children != null && data.children.length > 0) {\r\n\t\t\treturn build(\r\n\t\t\t\tnode,\r\n\t\t\t\tdata.tag,\r\n\t\t\t\tundefined,\r\n\t\t\t\tundefined,\r\n\t\t\t\tdata.children,\r\n\t\t\t\tcached.children,\r\n\t\t\t\ttrue,\r\n\t\t\t\t0,\r\n\t\t\t\tdata.attrs.contenteditable ? node : editable,\r\n\t\t\t\tnamespace,\r\n\t\t\t\tconfigs)\r\n\t\t} else {\r\n\t\t\treturn data.children\r\n\t\t}\r\n\t}\r\n\r\n\tfunction reconstructCached(\r\n\t\tdata,\r\n\t\tattrs,\r\n\t\tchildren,\r\n\t\tnode,\r\n\t\tnamespace,\r\n\t\tviews,\r\n\t\tcontrollers\r\n\t) {\r\n\t\tvar cached = {\r\n\t\t\ttag: data.tag,\r\n\t\t\tattrs: attrs,\r\n\t\t\tchildren: children,\r\n\t\t\tnodes: [node]\r\n\t\t}\r\n\r\n\t\tunloadCachedControllers(cached, views, controllers)\r\n\r\n\t\tif (cached.children && !cached.children.nodes) {\r\n\t\t\tcached.children.nodes = []\r\n\t\t}\r\n\r\n\t\treturn cached\r\n\t}\r\n\r\n\tfunction getController(views, view, cachedControllers, controller) {\r\n\t\tvar controllerIndex\r\n\r\n\t\tif (m.redraw.strategy() === \"diff\" && views) {\r\n\t\t\tcontrollerIndex = views.indexOf(view)\r\n\t\t} else {\r\n\t\t\tcontrollerIndex = -1\r\n\t\t}\r\n\r\n\t\tif (controllerIndex > -1) {\r\n\t\t\treturn cachedControllers[controllerIndex]\r\n\t\t} else if (isFunction(controller)) {\r\n\t\t\treturn new controller()\r\n\t\t} else {\r\n\t\t\treturn {}\r\n\t\t}\r\n\t}\r\n\r\n\tvar unloaders = []\r\n\r\n\tfunction updateLists(views, controllers, view, controller) {\r\n\t\tif (controller.onunload != null &&\r\n\t\t\t\tunloaders.map(function (u) { return u.handler })\r\n\t\t\t\t\t.indexOf(controller.onunload) < 0) {\r\n\t\t\tunloaders.push({\r\n\t\t\t\tcontroller: controller,\r\n\t\t\t\thandler: controller.onunload\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tviews.push(view)\r\n\t\tcontrollers.push(controller)\r\n\t}\r\n\r\n\tvar forcing = false\r\n\tfunction checkView(\r\n\t\tdata,\r\n\t\tview,\r\n\t\tcached,\r\n\t\tcachedControllers,\r\n\t\tcontrollers,\r\n\t\tviews\r\n\t) {\r\n\t\tvar controller = getController(\r\n\t\t\tcached.views,\r\n\t\t\tview,\r\n\t\t\tcachedControllers,\r\n\t\t\tdata.controller)\r\n\r\n\t\tvar key = data && data.attrs && data.attrs.key\r\n\r\n\t\tif (pendingRequests === 0 ||\r\n\t\t\t\tforcing ||\r\n\t\t\t\tcachedControllers &&\r\n\t\t\t\t\tcachedControllers.indexOf(controller) > -1) {\r\n\t\t\tdata = data.view(controller)\r\n\t\t} else {\r\n\t\t\tdata = {tag: \"placeholder\"}\r\n\t\t}\r\n\r\n\t\tif (data.subtree === \"retain\") return data\r\n\t\tdata.attrs = data.attrs || {}\r\n\t\tdata.attrs.key = key\r\n\t\tupdateLists(views, controllers, view, controller)\r\n\t\treturn data\r\n\t}\r\n\r\n\tfunction markViews(data, cached, views, controllers) {\r\n\t\tvar cachedControllers = cached && cached.controllers\r\n\r\n\t\twhile (data.view != null) {\r\n\t\t\tdata = checkView(\r\n\t\t\t\tdata,\r\n\t\t\t\tdata.view.$original || data.view,\r\n\t\t\t\tcached,\r\n\t\t\t\tcachedControllers,\r\n\t\t\t\tcontrollers,\r\n\t\t\t\tviews)\r\n\t\t}\r\n\r\n\t\treturn data\r\n\t}\r\n\r\n\tfunction buildObject( // eslint-disable-line max-statements\r\n\t\tdata,\r\n\t\tcached,\r\n\t\teditable,\r\n\t\tparentElement,\r\n\t\tindex,\r\n\t\tshouldReattach,\r\n\t\tnamespace,\r\n\t\tconfigs\r\n\t) {\r\n\t\tvar views = []\r\n\t\tvar controllers = []\r\n\r\n\t\tdata = markViews(data, cached, views, controllers)\r\n\r\n\t\tif (data.subtree === \"retain\") return cached\r\n\r\n\t\tif (!data.tag && controllers.length) {\r\n\t\t\tthrow new Error(\"Component template must return a virtual \" +\r\n\t\t\t\t\"element, not an array, string, etc.\")\r\n\t\t}\r\n\r\n\t\tdata.attrs = data.attrs || {}\r\n\t\tcached.attrs = cached.attrs || {}\r\n\r\n\t\tvar dataAttrKeys = Object.keys(data.attrs)\r\n\t\tvar hasKeys = dataAttrKeys.length > (\"key\" in data.attrs ? 1 : 0)\r\n\r\n\t\tmaybeRecreateObject(data, cached, dataAttrKeys)\r\n\r\n\t\tif (!isString(data.tag)) return\r\n\r\n\t\tvar isNew = cached.nodes.length === 0\r\n\r\n\t\tnamespace = getObjectNamespace(data, namespace)\r\n\r\n\t\tvar node\r\n\t\tif (isNew) {\r\n\t\t\tnode = constructNode(data, namespace)\r\n\t\t\t// set attributes first, then create children\r\n\t\t\tvar attrs = constructAttrs(data, node, namespace, hasKeys)\r\n\r\n\t\t\t// add the node to its parent before attaching children to it\r\n\t\t\tinsertNode(parentElement, node, index)\r\n\r\n\t\t\tvar children = constructChildren(data, node, cached, editable,\r\n\t\t\t\tnamespace, configs)\r\n\r\n\t\t\tcached = reconstructCached(\r\n\t\t\t\tdata,\r\n\t\t\t\tattrs,\r\n\t\t\t\tchildren,\r\n\t\t\t\tnode,\r\n\t\t\t\tnamespace,\r\n\t\t\t\tviews,\r\n\t\t\t\tcontrollers)\r\n\t\t} else {\r\n\t\t\tnode = buildUpdatedNode(\r\n\t\t\t\tcached,\r\n\t\t\t\tdata,\r\n\t\t\t\teditable,\r\n\t\t\t\thasKeys,\r\n\t\t\t\tnamespace,\r\n\t\t\t\tviews,\r\n\t\t\t\tconfigs,\r\n\t\t\t\tcontrollers)\r\n\t\t}\r\n\r\n\t\t// edge case: setting value on <select> doesn't work before children\r\n\t\t// exist, so set it again after children have been created/updated\r\n\t\tif (data.tag === \"select\" && \"value\" in data.attrs) {\r\n\t\t\tsetAttributes(node, data.tag, {value: data.attrs.value}, {},\r\n\t\t\t\tnamespace)\r\n\t\t}\r\n\r\n\t\tif (!isNew && shouldReattach === true && node != null) {\r\n\t\t\tinsertNode(parentElement, node, index)\r\n\t\t}\r\n\r\n\t\t// The configs are called after `build` finishes running\r\n\t\tscheduleConfigsToBeCalled(configs, data, node, isNew, cached)\r\n\r\n\t\treturn cached\r\n\t}\r\n\r\n\tfunction build(\r\n\t\tparentElement,\r\n\t\tparentTag,\r\n\t\tparentCache,\r\n\t\tparentIndex,\r\n\t\tdata,\r\n\t\tcached,\r\n\t\tshouldReattach,\r\n\t\tindex,\r\n\t\teditable,\r\n\t\tnamespace,\r\n\t\tconfigs\r\n\t) {\r\n\t\t/*\r\n\t\t * `build` is a recursive function that manages creation/diffing/removal\r\n\t\t * of DOM elements based on comparison between `data` and `cached` the\r\n\t\t * diff algorithm can be summarized as this:\r\n\t\t *\r\n\t\t * 1 - compare `data` and `cached`\r\n\t\t * 2 - if they are different, copy `data` to `cached` and update the DOM\r\n\t\t * based on what the difference is\r\n\t\t * 3 - recursively apply this algorithm for every array and for the\r\n\t\t * children of every virtual element\r\n\t\t *\r\n\t\t * The `cached` data structure is essentially the same as the previous\r\n\t\t * redraw's `data` data structure, with a few additions:\r\n\t\t * - `cached` always has a property called `nodes`, which is a list of\r\n\t\t * DOM elements that correspond to the data represented by the\r\n\t\t * respective virtual element\r\n\t\t * - in order to support attaching `nodes` as a property of `cached`,\r\n\t\t * `cached` is *always* a non-primitive object, i.e. if the data was\r\n\t\t * a string, then cached is a String instance. If data was `null` or\r\n\t\t * `undefined`, cached is `new String(\"\")`\r\n\t\t * - `cached also has a `configContext` property, which is the state\r\n\t\t * storage object exposed by config(element, isInitialized, context)\r\n\t\t * - when `cached` is an Object, it represents a virtual element; when\r\n\t\t * it's an Array, it represents a list of elements; when it's a\r\n\t\t * String, Number or Boolean, it represents a text node\r\n\t\t *\r\n\t\t * `parentElement` is a DOM element used for W3C DOM API calls\r\n\t\t * `parentTag` is only used for handling a corner case for textarea\r\n\t\t * values\r\n\t\t * `parentCache` is used to remove nodes in some multi-node cases\r\n\t\t * `parentIndex` and `index` are used to figure out the offset of nodes.\r\n\t\t * They're artifacts from before arrays started being flattened and are\r\n\t\t * likely refactorable\r\n\t\t * `data` and `cached` are, respectively, the new and old nodes being\r\n\t\t * diffed\r\n\t\t * `shouldReattach` is a flag indicating whether a parent node was\r\n\t\t * recreated (if so, and if this node is reused, then this node must\r\n\t\t * reattach itself to the new parent)\r\n\t\t * `editable` is a flag that indicates whether an ancestor is\r\n\t\t * contenteditable\r\n\t\t * `namespace` indicates the closest HTML namespace as it cascades down\r\n\t\t * from an ancestor\r\n\t\t * `configs` is a list of config functions to run after the topmost\r\n\t\t * `build` call finishes running\r\n\t\t *\r\n\t\t * there's logic that relies on the assumption that null and undefined\r\n\t\t * data are equivalent to empty strings\r\n\t\t * - this prevents lifecycle surprises from procedural helpers that mix\r\n\t\t * implicit and explicit return statements (e.g.\r\n\t\t * function foo() {if (cond) return m(\"div\")}\r\n\t\t * - it simplifies diffing code\r\n\t\t */\r\n\t\tdata = dataToString(data)\r\n\t\tif (data.subtree === \"retain\") return cached\r\n\t\tcached = makeCache(data, cached, index, parentIndex, parentCache)\r\n\r\n\t\tif (isArray(data)) {\r\n\t\t\treturn buildArray(\r\n\t\t\t\tdata,\r\n\t\t\t\tcached,\r\n\t\t\t\tparentElement,\r\n\t\t\t\tindex,\r\n\t\t\t\tparentTag,\r\n\t\t\t\tshouldReattach,\r\n\t\t\t\teditable,\r\n\t\t\t\tnamespace,\r\n\t\t\t\tconfigs)\r\n\t\t} else if (data != null && isObject(data)) {\r\n\t\t\treturn buildObject(\r\n\t\t\t\tdata,\r\n\t\t\t\tcached,\r\n\t\t\t\teditable,\r\n\t\t\t\tparentElement,\r\n\t\t\t\tindex,\r\n\t\t\t\tshouldReattach,\r\n\t\t\t\tnamespace,\r\n\t\t\t\tconfigs)\r\n\t\t} else if (!isFunction(data)) {\r\n\t\t\treturn handleTextNode(\r\n\t\t\t\tcached,\r\n\t\t\t\tdata,\r\n\t\t\t\tindex,\r\n\t\t\t\tparentElement,\r\n\t\t\t\tshouldReattach,\r\n\t\t\t\teditable,\r\n\t\t\t\tparentTag)\r\n\t\t} else {\r\n\t\t\treturn cached\r\n\t\t}\r\n\t}\r\n\r\n\tfunction sortChanges(a, b) {\r\n\t\treturn a.action - b.action || a.index - b.index\r\n\t}\r\n\r\n\tfunction copyStyleAttrs(node, dataAttr, cachedAttr) {\r\n\t\tif (cachedAttr === dataAttr) {\r\n\t\t\tnode.style = \"\"\r\n\t\t\tcachedAttr = {}\r\n\t\t}\r\n\t\tfor (var rule in dataAttr) {\r\n\t\t\tif (hasOwn.call(dataAttr, rule)) {\r\n\t\t\t\tif (cachedAttr == null || cachedAttr[rule] !== dataAttr[rule]) {\r\n\t\t\t\t\tnode.style[rule] = dataAttr[rule]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (rule in cachedAttr) {\r\n\t\t\tif (hasOwn.call(cachedAttr, rule)) {\r\n\t\t\t\tif (!hasOwn.call(dataAttr, rule)) node.style[rule] = \"\"\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar shouldUseSetAttribute = {\r\n\t\tlist: 1,\r\n\t\tstyle: 1,\r\n\t\tform: 1,\r\n\t\ttype: 1,\r\n\t\twidth: 1,\r\n\t\theight: 1\r\n\t}\r\n\r\n\tfunction setSingleAttr(\r\n\t\tnode,\r\n\t\tattrName,\r\n\t\tdataAttr,\r\n\t\tcachedAttr,\r\n\t\ttag,\r\n\t\tnamespace\r\n\t) {\r\n\t\tif (attrName === \"config\" || attrName === \"key\") {\r\n\t\t\t// `config` isn't a real attribute, so ignore it\r\n\t\t\treturn true\r\n\t\t} else if (isFunction(dataAttr) && attrName.slice(0, 2) === \"on\") {\r\n\t\t\t// hook event handlers to the auto-redrawing system\r\n\t\t\tnode[attrName] = autoredraw(dataAttr, node)\r\n\t\t} else if (attrName === \"style\" && dataAttr != null &&\r\n\t\t\t\tisObject(dataAttr)) {\r\n\t\t\t// handle `style: {...}`\r\n\t\t\tcopyStyleAttrs(node, dataAttr, cachedAttr)\r\n\t\t} else if (namespace != null) {\r\n\t\t\t// handle SVG\r\n\t\t\tif (attrName === \"href\") {\r\n\t\t\t\tnode.setAttributeNS(\"http://www.w3.org/1999/xlink\",\r\n\t\t\t\t\t\"href\", dataAttr)\r\n\t\t\t} else {\r\n\t\t\t\tnode.setAttribute(\r\n\t\t\t\t\tattrName === \"className\" ? \"class\" : attrName,\r\n\t\t\t\t\tdataAttr)\r\n\t\t\t}\r\n\t\t} else if (attrName in node && !shouldUseSetAttribute[attrName]) {\r\n\t\t\t// handle cases that are properties (but ignore cases where we\r\n\t\t\t// should use setAttribute instead)\r\n\t\t\t//\r\n\t\t\t// - list and form are typically used as strings, but are DOM\r\n\t\t\t// element references in js\r\n\t\t\t//\r\n\t\t\t// - when using CSS selectors (e.g. `m(\"[style='']\")`), style is\r\n\t\t\t// used as a string, but it's an object in js\r\n\t\t\t//\r\n\t\t\t// #348 don't set the value if not needed - otherwise, cursor\r\n\t\t\t// placement breaks in Chrome\r\n\t\t\t// #1252 likewise when `contenteditable` is set on an element.\r\n\t\t\ttry {\r\n\t\t\t\tif (\r\n\t\t\t\t\ttag !== \"input\" && !node.isContentEditable ||\r\n\t\t\t\t\tnode[attrName] != dataAttr // eslint-disable-line eqeqeq\r\n\t\t\t\t) {\r\n\t\t\t\t\tnode[attrName] = dataAttr\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tnode.setAttribute(attrName, dataAttr)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\tnode.setAttribute(attrName, dataAttr)\r\n\t\t\t} catch (e) {\r\n\t\t\t\t// IE8 doesn't allow change input attributes and throws\r\n\t\t\t\t// an exception. Unfortunately it cannot be handled, because\r\n\t\t\t\t// error code is not informative.\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction trySetAttr(\r\n\t\tnode,\r\n\t\tattrName,\r\n\t\tdataAttr,\r\n\t\tcachedAttr,\r\n\t\tcachedAttrs,\r\n\t\ttag,\r\n\t\tnamespace\r\n\t) {\r\n\t\tif (!(attrName in cachedAttrs) ||\r\n\t\t\t\t(cachedAttr !== dataAttr) ||\r\n\t\t\t\ttypeof dataAttr === \"object\" ||\r\n\t\t\t\t($document.activeElement === node)) {\r\n\t\t\tcachedAttrs[attrName] = dataAttr\r\n\t\t\ttry {\r\n\t\t\t\treturn setSingleAttr(\r\n\t\t\t\t\tnode,\r\n\t\t\t\t\tattrName,\r\n\t\t\t\t\tdataAttr,\r\n\t\t\t\t\tcachedAttr,\r\n\t\t\t\t\ttag,\r\n\t\t\t\t\tnamespace)\r\n\t\t\t} catch (e) {\r\n\t\t\t\t// swallow IE's invalid argument errors to mimic HTML's\r\n\t\t\t\t// fallback-to-doing-nothing-on-invalid-attributes behavior\r\n\t\t\t\tif (e.message.indexOf(\"Invalid argument\") < 0) throw e\r\n\t\t\t}\r\n\t\t} else if (attrName === \"value\" && tag === \"input\" &&\r\n\t\t\t\t\t\t\t\t/* eslint-disable eqeqeq */\r\n\t\t\t\t\t\t\t\tnode.value != dataAttr) {\r\n\t\t\t\t\t\t\t\t// #348 dataAttr may not be a string,\r\n\t\t\t\t\t\t\t\t// so use loose comparison\r\n\t\t\t\t\t\t\t\t/* eslint-enable eqeqeq */\r\n\t\t\tnode.value = dataAttr\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setAttributes(node, tag, dataAttrs, cachedAttrs, namespace) {\r\n\t\tfor (var attrName in dataAttrs) {\r\n\t\t\tif (hasOwn.call(dataAttrs, attrName)) {\r\n\t\t\t\tif (trySetAttr(\r\n\t\t\t\t\t\tnode,\r\n\t\t\t\t\t\tattrName,\r\n\t\t\t\t\t\tdataAttrs[attrName],\r\n\t\t\t\t\t\tcachedAttrs[attrName],\r\n\t\t\t\t\t\tcachedAttrs,\r\n\t\t\t\t\t\ttag,\r\n\t\t\t\t\t\tnamespace)) {\r\n\t\t\t\t\tcontinue\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn cachedAttrs\r\n\t}\r\n\r\n\tfunction clear(nodes, cached) {\r\n\t\tfor (var i = nodes.length - 1; i > -1; i--) {\r\n\t\t\tif (nodes[i] && nodes[i].parentNode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tnodes[i].parentNode.removeChild(nodes[i])\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t/* eslint-disable max-len */\r\n\t\t\t\t\t// ignore if this fails due to order of events (see\r\n\t\t\t\t\t// http://stackoverflow.com/questions/21926083/failed-to-execute-removechild-on-node)\r\n\t\t\t\t\t/* eslint-enable max-len */\r\n\t\t\t\t}\r\n\t\t\t\tcached = [].concat(cached)\r\n\t\t\t\tif (cached[i]) unload(cached[i])\r\n\t\t\t}\r\n\t\t}\r\n\t\t// release memory if nodes is an array. This check should fail if nodes\r\n\t\t// is a NodeList (see loop above)\r\n\t\tif (nodes.length) {\r\n\t\t\tnodes.length = 0\r\n\t\t}\r\n\t}\r\n\r\n\tfunction unload(cached) {\r\n\t\tif (cached.configContext && isFunction(cached.configContext.onunload)) {\r\n\t\t\tcached.configContext.onunload()\r\n\t\t\tcached.configContext.onunload = null\r\n\t\t}\r\n\t\tif (cached.controllers) {\r\n\t\t\tforEach(cached.controllers, function (controller) {\r\n\t\t\t\tif (isFunction(controller.onunload)) {\r\n\t\t\t\t\tcontroller.onunload({preventDefault: noop})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t\tif (cached.children) {\r\n\t\t\tif (isArray(cached.children)) forEach(cached.children, unload)\r\n\t\t\telse if (cached.children.tag) unload(cached.children)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction appendTextFragment(parentElement, data) {\r\n\t\ttry {\r\n\t\t\tparentElement.appendChild(\r\n\t\t\t\t$document.createRange().createContextualFragment(data))\r\n\t\t} catch (e) {\r\n\t\t\tparentElement.insertAdjacentHTML(\"beforeend\", data)\r\n\t\t\treplaceScriptNodes(parentElement)\r\n\t\t}\r\n\t}\r\n\r\n\t// Replace script tags inside given DOM element with executable ones.\r\n\t// Will also check children recursively and replace any found script\r\n\t// tags in same manner.\r\n\tfunction replaceScriptNodes(node) {\r\n\t\tif (node.tagName === \"SCRIPT\") {\r\n\t\t\tnode.parentNode.replaceChild(buildExecutableNode(node), node)\r\n\t\t} else {\r\n\t\t\tvar children = node.childNodes\r\n\t\t\tif (children && children.length) {\r\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\treplaceScriptNodes(children[i])\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn node\r\n\t}\r\n\r\n\t// Replace script element with one whose contents are executable.\r\n\tfunction buildExecutableNode(node){\r\n\t\tvar scriptEl = document.createElement(\"script\")\r\n\t\tvar attrs = node.attributes\r\n\r\n\t\tfor (var i = 0; i < attrs.length; i++) {\r\n\t\t\tscriptEl.setAttribute(attrs[i].name, attrs[i].value)\r\n\t\t}\r\n\r\n\t\tscriptEl.text = node.innerHTML\r\n\t\treturn scriptEl\r\n\t}\r\n\r\n\tfunction injectHTML(parentElement, index, data) {\r\n\t\tvar nextSibling = parentElement.childNodes[index]\r\n\t\tif (nextSibling) {\r\n\t\t\tvar isElement = nextSibling.nodeType !== 1\r\n\t\t\tvar placeholder = $document.createElement(\"span\")\r\n\t\t\tif (isElement) {\r\n\t\t\t\tparentElement.insertBefore(placeholder, nextSibling || null)\r\n\t\t\t\tplaceholder.insertAdjacentHTML(\"beforebegin\", data)\r\n\t\t\t\tparentElement.removeChild(placeholder)\r\n\t\t\t} else {\r\n\t\t\t\tnextSibling.insertAdjacentHTML(\"beforebegin\", data)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tappendTextFragment(parentElement, data)\r\n\t\t}\r\n\r\n\t\tvar nodes = []\r\n\r\n\t\twhile (parentElement.childNodes[index] !== nextSibling) {\r\n\t\t\tnodes.push(parentElement.childNodes[index])\r\n\t\t\tindex++\r\n\t\t}\r\n\r\n\t\treturn nodes\r\n\t}\r\n\r\n\tfunction autoredraw(callback, object) {\r\n\t\treturn function (e) {\r\n\t\t\te = e || event\r\n\t\t\tm.redraw.strategy(\"diff\")\r\n\t\t\tm.startComputation()\r\n\t\t\ttry {\r\n\t\t\t\treturn callback.call(object, e)\r\n\t\t\t} finally {\r\n\t\t\t\tendFirstComputation()\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar html\r\n\tvar documentNode = {\r\n\t\tappendChild: function (node) {\r\n\t\t\tif (html === undefined) html = $document.createElement(\"html\")\r\n\t\t\tif ($document.documentElement &&\r\n\t\t\t\t\t$document.documentElement !== node) {\r\n\t\t\t\t$document.replaceChild(node, $document.documentElement)\r\n\t\t\t} else {\r\n\t\t\t\t$document.appendChild(node)\r\n\t\t\t}\r\n\r\n\t\t\tthis.childNodes = $document.childNodes\r\n\t\t},\r\n\r\n\t\tinsertBefore: function (node) {\r\n\t\t\tthis.appendChild(node)\r\n\t\t},\r\n\r\n\t\tchildNodes: []\r\n\t}\r\n\r\n\tvar nodeCache = []\r\n\tvar cellCache = {}\r\n\r\n\tm.render = function (root, cell, forceRecreation) {\r\n\t\tif (!root) {\r\n\t\t\tthrow new Error(\"Ensure the DOM element being passed to \" +\r\n\t\t\t\t\"m.route/m.mount/m.render is not undefined.\")\r\n\t\t}\r\n\t\tvar configs = []\r\n\t\tvar id = getCellCacheKey(root)\r\n\t\tvar isDocumentRoot = root === $document\r\n\t\tvar node\r\n\r\n\t\tif (isDocumentRoot || root === $document.documentElement) {\r\n\t\t\tnode = documentNode\r\n\t\t} else {\r\n\t\t\tnode = root\r\n\t\t}\r\n\r\n\t\tif (isDocumentRoot && cell.tag !== \"html\") {\r\n\t\t\tcell = {tag: \"html\", attrs: {}, children: cell}\r\n\t\t}\r\n\r\n\t\tif (cellCache[id] === undefined) clear(node.childNodes)\r\n\t\tif (forceRecreation === true) reset(root)\r\n\r\n\t\tcellCache[id] = build(\r\n\t\t\tnode,\r\n\t\t\tnull,\r\n\t\t\tundefined,\r\n\t\t\tundefined,\r\n\t\t\tcell,\r\n\t\t\tcellCache[id],\r\n\t\t\tfalse,\r\n\t\t\t0,\r\n\t\t\tnull,\r\n\t\t\tundefined,\r\n\t\t\tconfigs)\r\n\r\n\t\tforEach(configs, function (config) { config() })\r\n\t}\r\n\r\n\tfunction getCellCacheKey(element) {\r\n\t\tvar index = nodeCache.indexOf(element)\r\n\t\treturn index < 0 ? nodeCache.push(element) - 1 : index\r\n\t}\r\n\r\n\tm.trust = function (value) {\r\n\t\tvalue = new String(value) // eslint-disable-line no-new-wrappers\r\n\t\tvalue.$trusted = true\r\n\t\treturn value\r\n\t}\r\n\r\n\tfunction gettersetter(store) {\r\n\t\tfunction prop() {\r\n\t\t\tif (arguments.length) store = arguments[0]\r\n\t\t\treturn store\r\n\t\t}\r\n\r\n\t\tprop.toJSON = function () {\r\n\t\t\tif (store && isFunction(store.toJSON)) return store.toJSON()\r\n\t\t\treturn store\r\n\t\t}\r\n\r\n\t\treturn prop\r\n\t}\r\n\r\n\tm.prop = function (store) {\r\n\t\tif ((store != null && (isObject(store) || isFunction(store)) ||\r\n\t\t\t\t\t((typeof Promise !== \"undefined\") &&\r\n\t\t\t\t\t\t(store instanceof Promise))) &&\r\n\t\t\t\tisFunction(store.then)) {\r\n\t\t\treturn propify(store)\r\n\t\t}\r\n\r\n\t\treturn gettersetter(store)\r\n\t}\r\n\r\n\tvar roots = []\r\n\tvar components = []\r\n\tvar controllers = []\r\n\tvar lastRedrawId = null\r\n\tvar lastRedrawCallTime = 0\r\n\tvar computePreRedrawHook = null\r\n\tvar computePostRedrawHook = null\r\n\tvar topComponent\r\n\tvar FRAME_BUDGET = 16 // 60 frames per second = 1 call per 16 ms\r\n\r\n\tfunction parameterize(component, args) {\r\n\t\tfunction controller() {\r\n\t\t\t/* eslint-disable no-invalid-this */\r\n\t\t\treturn (component.controller || noop).apply(this, args) || this\r\n\t\t\t/* eslint-enable no-invalid-this */\r\n\t\t}\r\n\r\n\t\tif (component.controller) {\r\n\t\t\tcontroller.prototype = component.controller.prototype\r\n\t\t}\r\n\r\n\t\tfunction view(ctrl) {\r\n\t\t\tvar currentArgs = [ctrl].concat(args)\r\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\r\n\t\t\t\tcurrentArgs.push(arguments[i])\r\n\t\t\t}\r\n\r\n\t\t\treturn component.view.apply(component, currentArgs)\r\n\t\t}\r\n\r\n\t\tview.$original = component.view\r\n\t\tvar output = {controller: controller, view: view}\r\n\t\tif (args[0] && args[0].key != null) output.attrs = {key: args[0].key}\r\n\t\treturn output\r\n\t}\r\n\r\n\tm.component = function (component) {\r\n\t\tvar args = new Array(arguments.length - 1)\r\n\r\n\t\tfor (var i = 1; i < arguments.length; i++) {\r\n\t\t\targs[i - 1] = arguments[i]\r\n\t\t}\r\n\r\n\t\treturn parameterize(component, args)\r\n\t}\r\n\r\n\tvar currentRoute, previousRoute\r\n\r\n\tfunction checkPrevented(component, root, index, isPrevented) {\r\n\t\tif (!isPrevented) {\r\n\t\t\tm.redraw.strategy(\"all\")\r\n\t\t\tm.startComputation()\r\n\t\t\troots[index] = root\r\n\t\t\tvar currentComponent\r\n\r\n\t\t\tif (component) {\r\n\t\t\t\tcurrentComponent = topComponent = component\r\n\t\t\t} else {\r\n\t\t\t\tcurrentComponent = topComponent = component = {controller: noop}\r\n\t\t\t}\r\n\r\n\t\t\tvar controller = new (component.controller || noop)()\r\n\r\n\t\t\t// controllers may call m.mount recursively (via m.route redirects,\r\n\t\t\t// for example)\r\n\t\t\t// this conditional ensures only the last recursive m.mount call is\r\n\t\t\t// applied\r\n\t\t\tif (currentComponent === topComponent) {\r\n\t\t\t\tcontrollers[index] = controller\r\n\t\t\t\tcomponents[index] = component\r\n\t\t\t}\r\n\t\t\tendFirstComputation()\r\n\t\t\tif (component === null) {\r\n\t\t\t\tremoveRootElement(root, index)\r\n\t\t\t}\r\n\t\t\treturn controllers[index]\r\n\t\t} else {\r\n\t\t\tif (component == null) {\r\n\t\t\t\tremoveRootElement(root, index)\r\n\t\t\t}\r\n\r\n\t\t\tif (previousRoute) {\r\n\t\t\t\tcurrentRoute = previousRoute\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tm.mount = m.module = function (root, component) {\r\n\t\tif (!root) {\r\n\t\t\tthrow new Error(\"Ensure the DOM element being passed to \" +\r\n\t\t\t\t\"m.route/m.mount/m.render is not undefined.\")\r\n\t\t}\r\n\r\n\t\tvar index = roots.indexOf(root)\r\n\t\tif (index < 0) index = roots.length\r\n\r\n\t\tvar isPrevented = false\r\n\t\tvar event = {\r\n\t\t\tpreventDefault: function () {\r\n\t\t\t\tisPrevented = true\r\n\t\t\t\tcomputePreRedrawHook = computePostRedrawHook = null\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tforEach(unloaders, function (unloader) {\r\n\t\t\tunloader.handler.call(unloader.controller, event)\r\n\t\t\tunloader.controller.onunload = null\r\n\t\t})\r\n\r\n\t\tif (isPrevented) {\r\n\t\t\tforEach(unloaders, function (unloader) {\r\n\t\t\t\tunloader.controller.onunload = unloader.handler\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tunloaders = []\r\n\t\t}\r\n\r\n\t\tif (controllers[index] && isFunction(controllers[index].onunload)) {\r\n\t\t\tcontrollers[index].onunload(event)\r\n\t\t}\r\n\r\n\t\treturn checkPrevented(component, root, index, isPrevented)\r\n\t}\r\n\r\n\tfunction removeRootElement(root, index) {\r\n\t\troots.splice(index, 1)\r\n\t\tcontrollers.splice(index, 1)\r\n\t\tcomponents.splice(index, 1)\r\n\t\treset(root)\r\n\t\tnodeCache.splice(getCellCacheKey(root), 1)\r\n\t\tunloaders = []\r\n\t}\r\n\r\n\tvar redrawing = false\r\n\tm.redraw = function (force) {\r\n\t\tif (redrawing) return\r\n\t\tredrawing = true\r\n\t\tif (force) forcing = true\r\n\r\n\t\ttry {\r\n\t\t\t// lastRedrawId is a positive number if a second redraw is requested\r\n\t\t\t// before the next animation frame\r\n\t\t\t// lastRedrawId is null if it's the first redraw and not an event\r\n\t\t\t// handler\r\n\t\t\tif (lastRedrawId && !force) {\r\n\t\t\t\t// when setTimeout: only reschedule redraw if time between now\r\n\t\t\t\t// and previous redraw is bigger than a frame, otherwise keep\r\n\t\t\t\t// currently scheduled timeout\r\n\t\t\t\t// when rAF: always reschedule redraw\r\n\t\t\t\tif ($requestAnimationFrame === global.requestAnimationFrame ||\r\n\t\t\t\t\t\tnew Date() - lastRedrawCallTime > FRAME_BUDGET) {\r\n\t\t\t\t\tif (lastRedrawId > 0) $cancelAnimationFrame(lastRedrawId)\r\n\t\t\t\t\tlastRedrawId = $requestAnimationFrame(redraw, FRAME_BUDGET)\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tredraw()\r\n\t\t\t\tlastRedrawId = $requestAnimationFrame(function () {\r\n\t\t\t\t\tlastRedrawId = null\r\n\t\t\t\t}, FRAME_BUDGET)\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tredrawing = forcing = false\r\n\t\t}\r\n\t}\r\n\r\n\tm.redraw.strategy = m.prop()\r\n\tfunction redraw() {\r\n\t\tif (computePreRedrawHook) {\r\n\t\t\tcomputePreRedrawHook()\r\n\t\t\tcomputePreRedrawHook = null\r\n\t\t}\r\n\t\tforEach(roots, function (root, i) {\r\n\t\t\tvar component = components[i]\r\n\t\t\tif (controllers[i]) {\r\n\t\t\t\tvar args = [controllers[i]]\r\n\t\t\t\tm.render(root,\r\n\t\t\t\t\tcomponent.view ? component.view(controllers[i], args) : \"\")\r\n\t\t\t}\r\n\t\t})\r\n\t\t// after rendering within a routed context, we need to scroll back to\r\n\t\t// the top, and fetch the document title for history.pushState\r\n\t\tif (computePostRedrawHook) {\r\n\t\t\tcomputePostRedrawHook()\r\n\t\t\tcomputePostRedrawHook = null\r\n\t\t}\r\n\t\tlastRedrawId = null\r\n\t\tlastRedrawCallTime = new Date()\r\n\t\tm.redraw.strategy(\"diff\")\r\n\t}\r\n\r\n\tfunction endFirstComputation() {\r\n\t\tif (m.redraw.strategy() === \"none\") {\r\n\t\t\tpendingRequests--\r\n\t\t\tm.redraw.strategy(\"diff\")\r\n\t\t} else {\r\n\t\t\tm.endComputation()\r\n\t\t}\r\n\t}\r\n\r\n\tm.withAttr = function (prop, withAttrCallback, callbackThis) {\r\n\t\treturn function (e) {\r\n\t\t\te = e || window.event\r\n\t\t\t/* eslint-disable no-invalid-this */\r\n\t\t\tvar currentTarget = e.currentTarget || this\r\n\t\t\tvar _this = callbackThis || this\r\n\t\t\t/* eslint-enable no-invalid-this */\r\n\t\t\tvar target = prop in currentTarget ?\r\n\t\t\t\tcurrentTarget[prop] :\r\n\t\t\t\tcurrentTarget.getAttribute(prop)\r\n\t\t\twithAttrCallback.call(_this, target)\r\n\t\t}\r\n\t}\r\n\r\n\t// routing\r\n\tvar modes = {pathname: \"\", hash: \"#\", search: \"?\"}\r\n\tvar redirect = noop\r\n\tvar isDefaultRoute = false\r\n\tvar routeParams\r\n\r\n\tm.route = function (root, arg1, arg2, vdom) { // eslint-disable-line\r\n\t\t// m.route()\r\n\t\tif (arguments.length === 0) return currentRoute\r\n\t\t// m.route(el, defaultRoute, routes)\r\n\t\tif (arguments.length === 3 && isString(arg1)) {\r\n\t\t\tredirect = function (source) {\r\n\t\t\t\tvar path = currentRoute = normalizeRoute(source)\r\n\t\t\t\tif (!routeByValue(root, arg2, path)) {\r\n\t\t\t\t\tif (isDefaultRoute) {\r\n\t\t\t\t\t\tthrow new Error(\"Ensure the default route matches \" +\r\n\t\t\t\t\t\t\t\"one of the routes defined in m.route\")\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tisDefaultRoute = true\r\n\t\t\t\t\tm.route(arg1, true)\r\n\t\t\t\t\tisDefaultRoute = false\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar listener = m.route.mode === \"hash\" ?\r\n\t\t\t\t\"onhashchange\" :\r\n\t\t\t\t\"onpopstate\"\r\n\r\n\t\t\tglobal[listener] = function () {\r\n\t\t\t\tvar path = $location[m.route.mode]\r\n\t\t\t\tif (m.route.mode === \"pathname\") path += $location.search\r\n\t\t\t\tif (currentRoute !== normalizeRoute(path)) redirect(path)\r\n\t\t\t}\r\n\r\n\t\t\tcomputePreRedrawHook = setScroll\r\n\t\t\tglobal[listener]()\r\n\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// config: m.route\r\n\t\tif (root.addEventListener || root.attachEvent) {\r\n\t\t\tvar base = m.route.mode !== \"pathname\" ? $location.pathname : \"\"\r\n\t\t\troot.href = base + modes[m.route.mode] + vdom.attrs.href\r\n\t\t\tif (root.addEventListener) {\r\n\t\t\t\troot.removeEventListener(\"click\", routeUnobtrusive)\r\n\t\t\t\troot.addEventListener(\"click\", routeUnobtrusive)\r\n\t\t\t} else {\r\n\t\t\t\troot.detachEvent(\"onclick\", routeUnobtrusive)\r\n\t\t\t\troot.attachEvent(\"onclick\", routeUnobtrusive)\r\n\t\t\t}\r\n\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// m.route(route, params, shouldReplaceHistoryEntry)\r\n\t\tif (isString(root)) {\r\n\t\t\tpreviousRoute = currentRoute\r\n\t\t\tcurrentRoute = root\r\n\r\n\t\t\tvar args = arg1 || {}\r\n\t\t\tvar queryIndex = currentRoute.indexOf(\"?\")\r\n\t\t\tvar params\r\n\r\n\t\t\tif (queryIndex > -1) {\r\n\t\t\t\tparams = parseQueryString(currentRoute.slice(queryIndex + 1))\r\n\t\t\t} else {\r\n\t\t\t\tparams = {}\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i in args) {\r\n\t\t\t\tif (hasOwn.call(args, i)) {\r\n\t\t\t\t\tparams[i] = args[i]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar querystring = buildQueryString(params)\r\n\t\t\tvar currentPath\r\n\r\n\t\t\tif (queryIndex > -1) {\r\n\t\t\t\tcurrentPath = currentRoute.slice(0, queryIndex)\r\n\t\t\t} else {\r\n\t\t\t\tcurrentPath = currentRoute\r\n\t\t\t}\r\n\r\n\t\t\tif (querystring) {\r\n\t\t\t\tcurrentRoute = currentPath +\r\n\t\t\t\t\t(currentPath.indexOf(\"?\") === -1 ? \"?\" : \"&\") +\r\n\t\t\t\t\tquerystring\r\n\t\t\t}\r\n\r\n\t\t\tvar replaceHistory =\r\n\t\t\t\t(arguments.length === 3 ? arg2 : arg1) === true ||\r\n\t\t\t\tpreviousRoute === currentRoute\r\n\r\n\t\t\tif (global.history.pushState) {\r\n\t\t\t\tvar method = replaceHistory ? \"replaceState\" : \"pushState\"\r\n\t\t\t\tcomputePreRedrawHook = setScroll\r\n\t\t\t\tcomputePostRedrawHook = function () {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tglobal.history[method](null, $document.title,\r\n\t\t\t\t\t\t\tmodes[m.route.mode] + currentRoute)\r\n\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\t// In the event of a pushState or replaceState failure,\r\n\t\t\t\t\t\t// fallback to a standard redirect. This is specifically\r\n\t\t\t\t\t\t// to address a Safari security error when attempting to\r\n\t\t\t\t\t\t// call pushState more than 100 times.\r\n\t\t\t\t\t\t$location[m.route.mode] = currentRoute\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tredirect(modes[m.route.mode] + currentRoute)\r\n\t\t\t} else {\r\n\t\t\t\t$location[m.route.mode] = currentRoute\r\n\t\t\t\tredirect(modes[m.route.mode] + currentRoute)\r\n\t\t\t}\r\n\r\n\t\t\tpreviousRoute = null\r\n\t\t}\r\n\t}\r\n\r\n\tm.route.param = function (key) {\r\n\t\tif (!routeParams) {\r\n\t\t\tthrow new Error(\"You must call m.route(element, defaultRoute, \" +\r\n\t\t\t\t\"routes) before calling m.route.param()\")\r\n\t\t}\r\n\r\n\t\tif (!key) {\r\n\t\t\treturn routeParams\r\n\t\t}\r\n\r\n\t\treturn routeParams[key]\r\n\t}\r\n\r\n\tm.route.mode = \"search\"\r\n\r\n\tfunction normalizeRoute(route) {\r\n\t\treturn route.slice(modes[m.route.mode].length)\r\n\t}\r\n\r\n\tfunction routeByValue(root, router, path) {\r\n\t\trouteParams = {}\r\n\r\n\t\tvar queryStart = path.indexOf(\"?\")\r\n\t\tif (queryStart !== -1) {\r\n\t\t\trouteParams = parseQueryString(\r\n\t\t\t\tpath.substr(queryStart + 1, path.length))\r\n\t\t\tpath = path.substr(0, queryStart)\r\n\t\t}\r\n\r\n\t\t// Get all routes and check if there's\r\n\t\t// an exact match for the current path\r\n\t\tvar keys = Object.keys(router)\r\n\t\tvar index = keys.indexOf(path)\r\n\r\n\t\tif (index !== -1){\r\n\t\t\tm.mount(root, router[keys [index]])\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\tfor (var route in router) {\r\n\t\t\tif (hasOwn.call(router, route)) {\r\n\t\t\t\tif (route === path) {\r\n\t\t\t\t\tm.mount(root, router[route])\r\n\t\t\t\t\treturn true\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar matcher = new RegExp(\"^\" + route\r\n\t\t\t\t\t.replace(/:[^\\/]+?\\.{3}/g, \"(.*?)\")\r\n\t\t\t\t\t.replace(/:[^\\/]+/g, \"([^\\\\/]+)\") + \"\\/?$\")\r\n\r\n\t\t\t\tif (matcher.test(path)) {\r\n\t\t\t\t\t/* eslint-disable no-loop-func */\r\n\t\t\t\t\tpath.replace(matcher, function () {\r\n\t\t\t\t\t\tvar keys = route.match(/:[^\\/]+/g) || []\r\n\t\t\t\t\t\tvar values = [].slice.call(arguments, 1, -2)\r\n\t\t\t\t\t\tforEach(keys, function (key, i) {\r\n\t\t\t\t\t\t\trouteParams[key.replace(/:|\\./g, \"\")] =\r\n\t\t\t\t\t\t\t\tdecodeURIComponent(values[i])\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tm.mount(root, router[route])\r\n\t\t\t\t\t})\r\n\t\t\t\t\t/* eslint-enable no-loop-func */\r\n\t\t\t\t\treturn true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction routeUnobtrusive(e) {\r\n\t\te = e || event\r\n\t\tif (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return\r\n\r\n\t\tif (e.preventDefault) {\r\n\t\t\te.preventDefault()\r\n\t\t} else {\r\n\t\t\te.returnValue = false\r\n\t\t}\r\n\r\n\t\tvar currentTarget = e.currentTarget || e.srcElement\r\n\t\tvar args\r\n\r\n\t\tif (m.route.mode === \"pathname\" && currentTarget.search) {\r\n\t\t\targs = parseQueryString(currentTarget.search.slice(1))\r\n\t\t} else {\r\n\t\t\targs = {}\r\n\t\t}\r\n\r\n\t\twhile (currentTarget && !/a/i.test(currentTarget.nodeName)) {\r\n\t\t\tcurrentTarget = currentTarget.parentNode\r\n\t\t}\r\n\r\n\t\t// clear pendingRequests because we want an immediate route change\r\n\t\tpendingRequests = 0\r\n\t\tm.route(currentTarget[m.route.mode]\r\n\t\t\t.slice(modes[m.route.mode].length), args)\r\n\t}\r\n\r\n\tfunction setScroll() {\r\n\t\tif (m.route.mode !== \"hash\" && $location.hash) {\r\n\t\t\t$location.hash = $location.hash\r\n\t\t} else {\r\n\t\t\tglobal.scrollTo(0, 0)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction buildQueryString(object, prefix) {\r\n\t\tvar duplicates = {}\r\n\t\tvar str = []\r\n\r\n\t\tfor (var prop in object) {\r\n\t\t\tif (hasOwn.call(object, prop)) {\r\n\t\t\t\tvar key = prefix ? prefix + \"[\" + prop + \"]\" : prop\r\n\t\t\t\tvar value = object[prop]\r\n\r\n\t\t\t\tif (value === null) {\r\n\t\t\t\t\tstr.push(encodeURIComponent(key))\r\n\t\t\t\t} else if (isObject(value)) {\r\n\t\t\t\t\tstr.push(buildQueryString(value, key))\r\n\t\t\t\t} else if (isArray(value)) {\r\n\t\t\t\t\tvar keys = []\r\n\t\t\t\t\tduplicates[key] = duplicates[key] || {}\r\n\t\t\t\t\t/* eslint-disable no-loop-func */\r\n\t\t\t\t\tforEach(value, function (item) {\r\n\t\t\t\t\t\t/* eslint-enable no-loop-func */\r\n\t\t\t\t\t\tif (!duplicates[key][item]) {\r\n\t\t\t\t\t\t\tduplicates[key][item] = true\r\n\t\t\t\t\t\t\tkeys.push(encodeURIComponent(key) + \"=\" +\r\n\t\t\t\t\t\t\t\tencodeURIComponent(item))\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\tstr.push(keys.join(\"&\"))\r\n\t\t\t\t} else if (value !== undefined) {\r\n\t\t\t\t\tstr.push(encodeURIComponent(key) + \"=\" +\r\n\t\t\t\t\t\tencodeURIComponent(value))\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn str.join(\"&\")\r\n\t}\r\n\r\n\tfunction parseQueryString(str) {\r\n\t\tif (str === \"\" || str == null) return {}\r\n\t\tif (str.charAt(0) === \"?\") str = str.slice(1)\r\n\r\n\t\tvar pairs = str.split(\"&\")\r\n\t\tvar params = {}\r\n\r\n\t\tforEach(pairs, function (string) {\r\n\t\t\tvar pair = string.split(\"=\")\r\n\t\t\tvar key = decodeURIComponent(pair[0])\r\n\t\t\tvar value = pair.length === 2 ? decodeURIComponent(pair[1]) : null\r\n\t\t\tif (params[key] != null) {\r\n\t\t\t\tif (!isArray(params[key])) params[key] = [params[key]]\r\n\t\t\t\tparams[key].push(value)\r\n\t\t\t} else params[key] = value\r\n\t\t})\r\n\r\n\t\treturn params\r\n\t}\r\n\r\n\tm.route.buildQueryString = buildQueryString\r\n\tm.route.parseQueryString = parseQueryString\r\n\r\n\tfunction reset(root) {\r\n\t\tvar cacheKey = getCellCacheKey(root)\r\n\t\tclear(root.childNodes, cellCache[cacheKey])\r\n\t\tcellCache[cacheKey] = undefined\r\n\t}\r\n\r\n\tm.deferred = function () {\r\n\t\tvar deferred = new Deferred()\r\n\t\tdeferred.promise = propify(deferred.promise)\r\n\t\treturn deferred\r\n\t}\r\n\r\n\tfunction propify(promise, initialValue) {\r\n\t\tvar prop = m.prop(initialValue)\r\n\t\tpromise.then(prop)\r\n\t\tprop.then = function (resolve, reject) {\r\n\t\t\treturn propify(promise.then(resolve, reject), initialValue)\r\n\t\t}\r\n\r\n\t\tprop[\"catch\"] = prop.then.bind(null, null)\r\n\t\treturn prop\r\n\t}\r\n\t// Promiz.mithril.js | Zolmeister | MIT\r\n\t// a modified version of Promiz.js, which does not conform to Promises/A+\r\n\t// for two reasons:\r\n\t//\r\n\t// 1) `then` callbacks are called synchronously (because setTimeout is too\r\n\t// slow, and the setImmediate polyfill is too big\r\n\t//\r\n\t// 2) throwing subclasses of Error cause the error to be bubbled up instead\r\n\t// of triggering rejection (because the spec does not account for the\r\n\t// important use case of default browser error handling, i.e. message w/\r\n\t// line number)\r\n\r\n\tvar RESOLVING = 1\r\n\tvar REJECTING = 2\r\n\tvar RESOLVED = 3\r\n\tvar REJECTED = 4\r\n\r\n\tfunction Deferred(onSuccess, onFailure) {\r\n\t\tvar self = this\r\n\t\tvar state = 0\r\n\t\tvar promiseValue = 0\r\n\t\tvar next = []\r\n\r\n\t\tself.promise = {}\r\n\r\n\t\tself.resolve = function (value) {\r\n\t\t\tif (!state) {\r\n\t\t\t\tpromiseValue = value\r\n\t\t\t\tstate = RESOLVING\r\n\r\n\t\t\t\tfire()\r\n\t\t\t}\r\n\r\n\t\t\treturn self\r\n\t\t}\r\n\r\n\t\tself.reject = function (value) {\r\n\t\t\tif (!state) {\r\n\t\t\t\tpromiseValue = value\r\n\t\t\t\tstate = REJECTING\r\n\r\n\t\t\t\tfire()\r\n\t\t\t}\r\n\r\n\t\t\treturn self\r\n\t\t}\r\n\r\n\t\tself.promise.then = function (onSuccess, onFailure) {\r\n\t\t\tvar deferred = new Deferred(onSuccess, onFailure)\r\n\r\n\t\t\tif (state === RESOLVED) {\r\n\t\t\t\tdeferred.resolve(promiseValue)\r\n\t\t\t} else if (state === REJECTED) {\r\n\t\t\t\tdeferred.reject(promiseValue)\r\n\t\t\t} else {\r\n\t\t\t\tnext.push(deferred)\r\n\t\t\t}\r\n\r\n\t\t\treturn deferred.promise\r\n\t\t}\r\n\r\n\t\tfunction finish(type) {\r\n\t\t\tstate = type || REJECTED\r\n\t\t\tnext.map(function (deferred) {\r\n\t\t\t\tif (state === RESOLVED) {\r\n\t\t\t\t\tdeferred.resolve(promiseValue)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject(promiseValue)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tfunction thennable(then, success, failure, notThennable) {\r\n\t\t\tif (((promiseValue != null && isObject(promiseValue)) ||\r\n\t\t\t\t\tisFunction(promiseValue)) && isFunction(then)) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// count protects against abuse calls from spec checker\r\n\t\t\t\t\tvar count = 0\r\n\t\t\t\t\tthen.call(promiseValue, function (value) {\r\n\t\t\t\t\t\tif (count++) return\r\n\t\t\t\t\t\tpromiseValue = value\r\n\t\t\t\t\t\tsuccess()\r\n\t\t\t\t\t}, function (value) {\r\n\t\t\t\t\t\tif (count++) return\r\n\t\t\t\t\t\tpromiseValue = value\r\n\t\t\t\t\t\tfailure()\r\n\t\t\t\t\t})\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tm.deferred.onerror(e)\r\n\t\t\t\t\tpromiseValue = e\r\n\t\t\t\t\tfailure()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnotThennable()\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction fire() {\r\n\t\t\t// check if it's a thenable\r\n\t\t\tvar then\r\n\t\t\ttry {\r\n\t\t\t\tthen = promiseValue && promiseValue.then\r\n\t\t\t} catch (e) {\r\n\t\t\t\tm.deferred.onerror(e)\r\n\t\t\t\tpromiseValue = e\r\n\t\t\t\tstate = REJECTING\r\n\t\t\t\treturn fire()\r\n\t\t\t}\r\n\r\n\t\t\tif (state === REJECTING) {\r\n\t\t\t\tm.deferred.onerror(promiseValue)\r\n\t\t\t}\r\n\r\n\t\t\tthennable(then, function () {\r\n\t\t\t\tstate = RESOLVING\r\n\t\t\t\tfire()\r\n\t\t\t}, function () {\r\n\t\t\t\tstate = REJECTING\r\n\t\t\t\tfire()\r\n\t\t\t}, function () {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (state === RESOLVING && isFunction(onSuccess)) {\r\n\t\t\t\t\t\tpromiseValue = onSuccess(promiseValue)\r\n\t\t\t\t\t} else if (state === REJECTING && isFunction(onFailure)) {\r\n\t\t\t\t\t\tpromiseValue = onFailure(promiseValue)\r\n\t\t\t\t\t\tstate = RESOLVING\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tm.deferred.onerror(e)\r\n\t\t\t\t\tpromiseValue = e\r\n\t\t\t\t\treturn finish()\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (promiseValue === self) {\r\n\t\t\t\t\tpromiseValue = TypeError()\r\n\t\t\t\t\tfinish()\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthennable(then, function () {\r\n\t\t\t\t\t\tfinish(RESOLVED)\r\n\t\t\t\t\t}, finish, function () {\r\n\t\t\t\t\t\tfinish(state === RESOLVING && RESOLVED)\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tm.deferred.onerror = function (e) {\r\n\t\tif (type.call(e) === \"[object Error]\" &&\r\n\t\t\t\t!/ Error/.test(e.constructor.toString())) {\r\n\t\t\tpendingRequests = 0\r\n\t\t\tthrow e\r\n\t\t}\r\n\t}\r\n\r\n\tm.sync = function (args) {\r\n\t\tvar deferred = m.deferred()\r\n\t\tvar outstanding = args.length\r\n\t\tvar results = []\r\n\t\tvar method = \"resolve\"\r\n\r\n\t\tfunction synchronizer(pos, resolved) {\r\n\t\t\treturn function (value) {\r\n\t\t\t\tresults[pos] = value\r\n\t\t\t\tif (!resolved) method = \"reject\"\r\n\t\t\t\tif (--outstanding === 0) {\r\n\t\t\t\t\tdeferred.promise(results)\r\n\t\t\t\t\tdeferred[method](results)\r\n\t\t\t\t}\r\n\t\t\t\treturn value\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (args.length > 0) {\r\n\t\t\tforEach(args, function (arg, i) {\r\n\t\t\t\targ.then(synchronizer(i, true), synchronizer(i, false))\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tdeferred.resolve([])\r\n\t\t}\r\n\r\n\t\treturn deferred.promise\r\n\t}\r\n\r\n\tfunction identity(value) { return value }\r\n\r\n\tfunction handleJsonp(options) {\r\n\t\tvar callbackKey = options.callbackName || \"mithril_callback_\" +\r\n\t\t\tnew Date().getTime() + \"_\" +\r\n\t\t\t(Math.round(Math.random() * 1e16)).toString(36)\r\n\r\n\t\tvar script = $document.createElement(\"script\")\r\n\r\n\t\tglobal[callbackKey] = function (resp) {\r\n\t\t\tscript.parentNode.removeChild(script)\r\n\t\t\toptions.onload({\r\n\t\t\t\ttype: \"load\",\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tresponseText: resp\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\tglobal[callbackKey] = undefined\r\n\t\t}\r\n\r\n\t\tscript.onerror = function () {\r\n\t\t\tscript.parentNode.removeChild(script)\r\n\r\n\t\t\toptions.onerror({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tstatus: 500,\r\n\t\t\t\t\tresponseText: JSON.stringify({\r\n\t\t\t\t\t\terror: \"Error making jsonp request\"\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\tglobal[callbackKey] = undefined\r\n\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\tscript.onload = function () {\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\tscript.src = options.url +\r\n\t\t\t(options.url.indexOf(\"?\") > 0 ? \"&\" : \"?\") +\r\n\t\t\t(options.callbackKey ? options.callbackKey : \"callback\") +\r\n\t\t\t\"=\" + callbackKey +\r\n\t\t\t\"&\" + buildQueryString(options.data || {})\r\n\r\n\t\t$document.body.appendChild(script)\r\n\t}\r\n\r\n\tfunction createXhr(options) {\r\n\t\tvar xhr = new global.XMLHttpRequest()\r\n\t\txhr.open(options.method, options.url, true, options.user,\r\n\t\t\toptions.password)\r\n\r\n\t\txhr.onreadystatechange = function () {\r\n\t\t\tif (xhr.readyState === 4) {\r\n\t\t\t\tif (xhr.status >= 200 && xhr.status < 300) {\r\n\t\t\t\t\toptions.onload({type: \"load\", target: xhr})\r\n\t\t\t\t} else {\r\n\t\t\t\t\toptions.onerror({type: \"error\", target: xhr})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (options.serialize === JSON.stringify &&\r\n\t\t\t\toptions.data &&\r\n\t\t\t\toptions.method !== \"GET\") {\r\n\t\t\txhr.setRequestHeader(\"Content-Type\",\r\n\t\t\t\t\"application/json; charset=utf-8\")\r\n\t\t}\r\n\r\n\t\tif (options.deserialize === JSON.parse) {\r\n\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\r\n\t\t}\r\n\r\n\t\tif (isObject(options.headers)) {\r\n\t\t\tfor (var header in options.headers) {\r\n\t\t\t\tif (hasOwn.call(options.headers, header)) {\r\n\t\t\t\t\txhr.setRequestHeader(header, options.headers[header])\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isFunction(options.config)) {\r\n\t\t\tvar maybeXhr = options.config(xhr, options)\r\n\t\t\tif (maybeXhr != null) xhr = maybeXhr\r\n\t\t}\r\n\r\n\t\tvar data = options.method === \"GET\" || !options.data ? \"\" : options.data\r\n\r\n\t\tif (data && !isString(data) && data.constructor !== global.FormData) {\r\n\t\t\tthrow new Error(\"Request data should be either be a string or \" +\r\n\t\t\t\t\"FormData. Check the `serialize` option in `m.request`\")\r\n\t\t}\r\n\r\n\t\txhr.send(data)\r\n\t\treturn xhr\r\n\t}\r\n\r\n\tfunction ajax(options) {\r\n\t\tif (options.dataType && options.dataType.toLowerCase() === \"jsonp\") {\r\n\t\t\treturn handleJsonp(options)\r\n\t\t} else {\r\n\t\t\treturn createXhr(options)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction bindData(options, data, serialize) {\r\n\t\tif (options.method === \"GET\" && options.dataType !== \"jsonp\") {\r\n\t\t\tvar prefix = options.url.indexOf(\"?\") < 0 ? \"?\" : \"&\"\r\n\t\t\tvar querystring = buildQueryString(data)\r\n\t\t\toptions.url += (querystring ? prefix + querystring : \"\")\r\n\t\t} else {\r\n\t\t\toptions.data = serialize(data)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parameterizeUrl(url, data) {\r\n\t\tif (data) {\r\n\t\t\turl = url.replace(/:[a-z]\\w+/gi, function (token){\r\n\t\t\t\tvar key = token.slice(1)\r\n\t\t\t\tvar value = data[key] || token\r\n\t\t\t\tdelete data[key]\r\n\t\t\t\treturn value\r\n\t\t\t})\r\n\t\t}\r\n\t\treturn url\r\n\t}\r\n\r\n\tm.request = function (options) {\r\n\t\tif (options.background !== true) m.startComputation()\r\n\t\tvar deferred = new Deferred()\r\n\t\tvar isJSONP = options.dataType &&\r\n\t\t\toptions.dataType.toLowerCase() === \"jsonp\"\r\n\r\n\t\tvar serialize, deserialize, extract\r\n\r\n\t\tif (isJSONP) {\r\n\t\t\tserialize = options.serialize =\r\n\t\t\tdeserialize = options.deserialize = identity\r\n\r\n\t\t\textract = function (jsonp) { return jsonp.responseText }\r\n\t\t} else {\r\n\t\t\tserialize = options.serialize = options.serialize || JSON.stringify\r\n\r\n\t\t\tdeserialize = options.deserialize =\r\n\t\t\t\toptions.deserialize || JSON.parse\r\n\t\t\textract = options.extract || function (xhr) {\r\n\t\t\t\tif (xhr.responseText.length || deserialize !== JSON.parse) {\r\n\t\t\t\t\treturn xhr.responseText\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn null\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.method = (options.method || \"GET\").toUpperCase()\r\n\t\toptions.url = parameterizeUrl(options.url, options.data)\r\n\t\tbindData(options, options.data, serialize)\r\n\t\toptions.onload = options.onerror = function (ev) {\r\n\t\t\ttry {\r\n\t\t\t\tev = ev || event\r\n\t\t\t\tvar response = deserialize(extract(ev.target, options))\r\n\t\t\t\tif (ev.type === \"load\") {\r\n\t\t\t\t\tif (options.unwrapSuccess) {\r\n\t\t\t\t\t\tresponse = options.unwrapSuccess(response, ev.target)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (isArray(response) && options.type) {\r\n\t\t\t\t\t\tforEach(response, function (res, i) {\r\n\t\t\t\t\t\t\tresponse[i] = new options.type(res)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else if (options.type) {\r\n\t\t\t\t\t\tresponse = new options.type(response)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdeferred.resolve(response)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (options.unwrapError) {\r\n\t\t\t\t\t\tresponse = options.unwrapError(response, ev.target)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdeferred.reject(response)\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tdeferred.reject(e)\r\n\t\t\t\tm.deferred.onerror(e)\r\n\t\t\t} finally {\r\n\t\t\t\tif (options.background !== true) m.endComputation()\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tajax(options)\r\n\t\tdeferred.promise = propify(deferred.promise, options.initialValue)\r\n\t\treturn deferred.promise\r\n\t}\r\n\r\n\treturn m\r\n}); // eslint-disable-line\r\n","import humanTimeUtil from './humanTime';\n\nfunction updateHumanTimes() {\n $('[data-humantime]').each(function() {\n const $this = $(this);\n const ago = humanTimeUtil($this.attr('datetime'));\n\n $this.html(ago);\n });\n}\n\n/**\n * The `humanTime` initializer sets up a loop every 1 second to update\n * timestamps rendered with the `humanTime` helper.\n */\nexport default function humanTime() {\n setInterval(updateHumanTimes, 10000);\n}\n","import * as extend from './extend';\nimport Session from './Session';\nimport Store from './Store';\nimport evented from './utils/evented';\nimport liveHumanTimes from './utils/liveHumanTimes';\nimport ItemList from './utils/ItemList';\nimport mixin from './utils/mixin';\nimport humanTime from './utils/humanTime';\nimport computed from './utils/computed';\nimport Drawer from './utils/Drawer';\nimport anchorScroll from './utils/anchorScroll';\nimport RequestError from './utils/RequestError';\nimport abbreviateNumber from './utils/abbreviateNumber';\nimport * as string from './utils/string';\nimport SubtreeRetainer from './utils/SubtreeRetainer';\nimport extract from './utils/extract';\nimport ScrollListener from './utils/ScrollListener';\nimport stringToColor from './utils/stringToColor';\nimport patchMithril from './utils/patchMithril';\nimport classList from './utils/classList';\nimport extractText from './utils/extractText';\nimport formatNumber from './utils/formatNumber';\nimport mapRoutes from './utils/mapRoutes';\nimport Notification from './models/Notification';\nimport User from './models/User';\nimport Post from './models/Post';\nimport Discussion from './models/Discussion';\nimport Group from './models/Group';\nimport Forum from './models/Forum';\nimport Component from './Component';\nimport Translator from './Translator';\nimport AlertManager from './components/AlertManager';\nimport Switch from './components/Switch';\nimport Badge from './components/Badge';\nimport LoadingIndicator from './components/LoadingIndicator';\nimport Placeholder from './components/Placeholder';\nimport Separator from './components/Separator';\nimport Dropdown from './components/Dropdown';\nimport SplitDropdown from './components/SplitDropdown';\nimport RequestErrorModal from './components/RequestErrorModal';\nimport FieldSet from './components/FieldSet';\nimport Select from './components/Select';\nimport Navigation from './components/Navigation';\nimport Alert from './components/Alert';\nimport LinkButton from './components/LinkButton';\nimport Checkbox from './components/Checkbox';\nimport SelectDropdown from './components/SelectDropdown';\nimport ModalManager from './components/ModalManager';\nimport Button from './components/Button';\nimport Modal from './components/Modal';\nimport GroupBadge from './components/GroupBadge';\nimport Model from './Model';\nimport Application from './Application';\nimport fullTime from './helpers/fullTime';\nimport avatar from './helpers/avatar';\nimport icon from './helpers/icon';\nimport humanTimeHelper from './helpers/humanTime';\nimport punctuateSeries from './helpers/punctuateSeries';\nimport highlight from './helpers/highlight';\nimport username from './helpers/username';\nimport userOnline from './helpers/userOnline';\nimport listItems from './helpers/listItems';\n\nexport default {\n 'extend': extend,\n 'Session': Session,\n 'Store': Store,\n 'utils/evented': evented,\n 'utils/liveHumanTimes': liveHumanTimes,\n 'utils/ItemList': ItemList,\n 'utils/mixin': mixin,\n 'utils/humanTime': humanTime,\n 'utils/computed': computed,\n 'utils/Drawer': Drawer,\n 'utils/anchorScroll': anchorScroll,\n 'utils/RequestError': RequestError,\n 'utils/abbreviateNumber': abbreviateNumber,\n 'utils/string': string,\n 'utils/SubtreeRetainer': SubtreeRetainer,\n 'utils/extract': extract,\n 'utils/ScrollListener': ScrollListener,\n 'utils/stringToColor': stringToColor,\n 'utils/patchMithril': patchMithril,\n 'utils/classList': classList,\n 'utils/extractText': extractText,\n 'utils/formatNumber': formatNumber,\n 'utils/mapRoutes': mapRoutes,\n 'models/Notification': Notification,\n 'models/User': User,\n 'models/Post': Post,\n 'models/Discussion': Discussion,\n 'models/Group': Group,\n 'models/Forum': Forum,\n 'Component': Component,\n 'Translator': Translator,\n 'components/AlertManager': AlertManager,\n 'components/Switch': Switch,\n 'components/Badge': Badge,\n 'components/LoadingIndicator': LoadingIndicator,\n 'components/Placeholder': Placeholder,\n 'components/Separator': Separator,\n 'components/Dropdown': Dropdown,\n 'components/SplitDropdown': SplitDropdown,\n 'components/RequestErrorModal': RequestErrorModal,\n 'components/FieldSet': FieldSet,\n 'components/Select': Select,\n 'components/Navigation': Navigation,\n 'components/Alert': Alert,\n 'components/LinkButton': LinkButton,\n 'components/Checkbox': Checkbox,\n 'components/SelectDropdown': SelectDropdown,\n 'components/ModalManager': ModalManager,\n 'components/Button': Button,\n 'components/Modal': Modal,\n 'components/GroupBadge': GroupBadge,\n 'Model': Model,\n 'Application': Application,\n 'helpers/fullTime': fullTime,\n 'helpers/avatar': avatar,\n 'helpers/icon': icon,\n 'helpers/humanTime': humanTimeHelper,\n 'helpers/punctuateSeries': punctuateSeries,\n 'helpers/highlight': highlight,\n 'helpers/username': username,\n 'helpers/userOnline': userOnline,\n 'helpers/listItems': listItems\n};\n","/**\n * The `punctuateSeries` helper formats a list of strings (e.g. names) to read\n * fluently in the application's locale.\n *\n * ```js\n * punctuateSeries(['Toby', 'Franz', 'Dominion']) // Toby, Franz, and Dominion\n * ```\n *\n * @param {Array} items\n * @return {VirtualElement}\n */\nexport default function punctuateSeries(items) {\n if (items.length === 2) {\n return app.translator.trans('core.lib.series.two_text', {\n first: items[0],\n second: items[1]\n });\n } else if (items.length >= 3) {\n // If there are three or more items, we will join all but the first and\n // last items with the equivalent of a comma, and then we will feed that\n // into the translator along with the first and last item.\n const second = items\n .slice(1, items.length - 1)\n .reduce((list, item) => list.concat([item, app.translator.trans('core.lib.series.glue_text')]), [])\n .slice(0, -1);\n\n return app.translator.trans('core.lib.series.three_text', {\n first: items[0],\n second,\n third: items[items.length - 1]\n });\n }\n\n return items;\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","module.exports = require(\"core-js/library/fn/get-iterator\");","module.exports = require(\"core-js/library/fn/object/create\");","module.exports = require(\"core-js/library/fn/object/define-property\");","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","module.exports = require('./_hide');\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = function () { /* empty */ };\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","exports.f = {}.propertyIsEnumerable;\n","exports.f = Object.getOwnPropertySymbols;\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","/*jslint browser: true*/\r\n/*jslint jquery: true*/\r\n\r\n/*\r\n * jQuery Hotkeys Plugin\r\n * Copyright 2010, John Resig\r\n * Dual licensed under the MIT or GPL Version 2 licenses.\r\n *\r\n * Based upon the plugin by Tzury Bar Yochay:\r\n * https://github.com/tzuryby/jquery.hotkeys\r\n *\r\n * Original idea by:\r\n * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/\r\n */\r\n\r\n/*\r\n * One small change is: now keys are passed by object { keys: '...' }\r\n * Might be useful, when you want to pass some other data to your handler\r\n */\r\n\r\n(function(jQuery) {\r\n\r\n jQuery.hotkeys = {\r\n version: \"0.2.0\",\r\n\r\n specialKeys: {\r\n 8: \"backspace\",\r\n 9: \"tab\",\r\n 10: \"return\",\r\n 13: \"return\",\r\n 16: \"shift\",\r\n 17: \"ctrl\",\r\n 18: \"alt\",\r\n 19: \"pause\",\r\n 20: \"capslock\",\r\n 27: \"esc\",\r\n 32: \"space\",\r\n 33: \"pageup\",\r\n 34: \"pagedown\",\r\n 35: \"end\",\r\n 36: \"home\",\r\n 37: \"left\",\r\n 38: \"up\",\r\n 39: \"right\",\r\n 40: \"down\",\r\n 45: \"insert\",\r\n 46: \"del\",\r\n 59: \";\",\r\n 61: \"=\",\r\n 96: \"0\",\r\n 97: \"1\",\r\n 98: \"2\",\r\n 99: \"3\",\r\n 100: \"4\",\r\n 101: \"5\",\r\n 102: \"6\",\r\n 103: \"7\",\r\n 104: \"8\",\r\n 105: \"9\",\r\n 106: \"*\",\r\n 107: \"+\",\r\n 109: \"-\",\r\n 110: \".\",\r\n 111: \"/\",\r\n 112: \"f1\",\r\n 113: \"f2\",\r\n 114: \"f3\",\r\n 115: \"f4\",\r\n 116: \"f5\",\r\n 117: \"f6\",\r\n 118: \"f7\",\r\n 119: \"f8\",\r\n 120: \"f9\",\r\n 121: \"f10\",\r\n 122: \"f11\",\r\n 123: \"f12\",\r\n 144: \"numlock\",\r\n 145: \"scroll\",\r\n 173: \"-\",\r\n 186: \";\",\r\n 187: \"=\",\r\n 188: \",\",\r\n 189: \"-\",\r\n 190: \".\",\r\n 191: \"/\",\r\n 192: \"`\",\r\n 219: \"[\",\r\n 220: \"\\\\\",\r\n 221: \"]\",\r\n 222: \"'\"\r\n },\r\n\r\n shiftNums: {\r\n \"`\": \"~\",\r\n \"1\": \"!\",\r\n \"2\": \"@\",\r\n \"3\": \"#\",\r\n \"4\": \"$\",\r\n \"5\": \"%\",\r\n \"6\": \"^\",\r\n \"7\": \"&\",\r\n \"8\": \"*\",\r\n \"9\": \"(\",\r\n \"0\": \")\",\r\n \"-\": \"_\",\r\n \"=\": \"+\",\r\n \";\": \": \",\r\n \"'\": \"\\\"\",\r\n \",\": \"<\",\r\n \".\": \">\",\r\n \"/\": \"?\",\r\n \"\\\\\": \"|\"\r\n },\r\n\r\n // excludes: button, checkbox, file, hidden, image, password, radio, reset, search, submit, url\r\n textAcceptingInputTypes: [\r\n \"text\", \"password\", \"number\", \"email\", \"url\", \"range\", \"date\", \"month\", \"week\", \"time\", \"datetime\",\r\n \"datetime-local\", \"search\", \"color\", \"tel\"],\r\n\r\n // default input types not to bind to unless bound directly\r\n textInputTypes: /textarea|input|select/i,\r\n\r\n options: {\r\n filterInputAcceptingElements: true,\r\n filterTextInputs: true,\r\n filterContentEditable: true\r\n }\r\n };\r\n\r\n function keyHandler(handleObj) {\r\n if (typeof handleObj.data === \"string\") {\r\n handleObj.data = {\r\n keys: handleObj.data\r\n };\r\n }\r\n\r\n // Only care when a possible input has been specified\r\n if (!handleObj.data || !handleObj.data.keys || typeof handleObj.data.keys !== \"string\") {\r\n return;\r\n }\r\n\r\n var origHandler = handleObj.handler,\r\n keys = handleObj.data.keys.toLowerCase().split(\" \");\r\n\r\n handleObj.handler = function(event) {\r\n // Don't fire in text-accepting inputs that we didn't directly bind to\r\n if (this !== event.target &&\r\n (jQuery.hotkeys.options.filterInputAcceptingElements &&\r\n jQuery.hotkeys.textInputTypes.test(event.target.nodeName) ||\r\n (jQuery.hotkeys.options.filterContentEditable && jQuery(event.target).attr('contenteditable')) ||\r\n (jQuery.hotkeys.options.filterTextInputs &&\r\n jQuery.inArray(event.target.type, jQuery.hotkeys.textAcceptingInputTypes) > -1))) {\r\n return;\r\n }\r\n\r\n var special = event.type !== \"keypress\" && jQuery.hotkeys.specialKeys[event.which],\r\n character = String.fromCharCode(event.which).toLowerCase(),\r\n modif = \"\",\r\n possible = {};\r\n\r\n jQuery.each([\"alt\", \"ctrl\", \"shift\"], function(index, specialKey) {\r\n\r\n if (event[specialKey + 'Key'] && special !== specialKey) {\r\n modif += specialKey + '+';\r\n }\r\n });\r\n\r\n // metaKey is triggered off ctrlKey erronously\r\n if (event.metaKey && !event.ctrlKey && special !== \"meta\") {\r\n modif += \"meta+\";\r\n }\r\n\r\n if (event.metaKey && special !== \"meta\" && modif.indexOf(\"alt+ctrl+shift+\") > -1) {\r\n modif = modif.replace(\"alt+ctrl+shift+\", \"hyper+\");\r\n }\r\n\r\n if (special) {\r\n possible[modif + special] = true;\r\n }\r\n else {\r\n possible[modif + character] = true;\r\n possible[modif + jQuery.hotkeys.shiftNums[character]] = true;\r\n\r\n // \"$\" can be triggered as \"Shift+4\" or \"Shift+$\" or just \"$\"\r\n if (modif === \"shift+\") {\r\n possible[jQuery.hotkeys.shiftNums[character]] = true;\r\n }\r\n }\r\n\r\n for (var i = 0, l = keys.length; i < l; i++) {\r\n if (possible[keys[i]]) {\r\n return origHandler.apply(this, arguments);\r\n }\r\n }\r\n };\r\n }\r\n\r\n jQuery.each([\"keydown\", \"keyup\", \"keypress\"], function() {\r\n jQuery.event.special[this] = {\r\n add: keyHandler\r\n };\r\n });\r\n\r\n})(jQuery || this.jQuery || window.jQuery);\r\n","/* ========================================================================\n * Bootstrap: transition.js v3.3.7\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.3.7\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.7'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.7'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.3.7\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.7'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: affix.js v3.3.7\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.7'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","( function _package( factory ){\n\tif( typeof define === 'function' && define.amd ){\n\t\tdefine( [ 'mithril' ], factory )\n\t}\n\telse if( typeof exports === 'object' ){\n\t\tmodule.exports = factory( require( 'mithril' ) )\n\t}\n\telse{\n\t\tfactory( m )\n\t}\n}( function define( m ){\n\tfunction bidi( node, prop ){\n\t\tvar type = node.tag === 'select'\n\t\t\t? node.attrs.multi\n\t\t\t\t? 'multi'\n\t\t\t\t: 'select'\n\t\t\t: node.attrs.type\n\n\t\t// Setup: bind listeners\n\t\tif( type === 'multi' ){\n\t\t\tnode.attrs.onchange = function(){\n\t\t\t\tprop( [].slice.call( this.selectedOptions, function( x ){\n\t\t\t\t\treturn x.value\n\t\t\t\t} ) )\n\t\t\t}\n\t\t}\n\t\telse if( type === 'select' ){\n\t\t\tnode.attrs.onchange = function( e ){\n\t\t\t\tprop( this.selectedOptions[ 0 ].value )\n\t\t\t}\n\t\t}\n\t\telse if( type === 'checkbox' ){\n\t\t\tnode.attrs.onchange = function( e ){\n\t\t\t\tprop( this.checked )\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tnode.attrs.onchange = node.attrs.oninput = function( e ){\n\t\t\t\tprop( this.value )\n\t\t\t}\n\t\t}\n\n\t\tif( node.tag === 'select' ){\n\t\t\tnode.children.forEach( function( option ){\n\t\t\t\tif( option.attrs.value === prop() || option.children[ 0 ] === prop() ){\n\t\t\t\t\toption.attrs.selected = true\n\t\t\t\t}\n\t\t\t} )\n\t\t}\n\t\telse if( type === 'checkbox' ){\n\t\t\tnode.attrs.checked = prop()\n\t\t}\n\t\telse if( type === 'radio' ){\n\t\t\tnode.attrs.checked = prop() === node.attrs.value\n\t\t}\n\t\telse {\n\t\t\tnode.attrs.value = prop()\n\t\t}\n\n\t\treturn node\n\t}\n\n\tbidi.view = function( ctrl, node, prop ){\n\t return bidi( node, node.attrs.bidi )\n\t}\n\n\tif( m.attrs ) m.attrs.bidi = bidi\n\t\n\tm.bidi = bidi\n\n\treturn bidi\n} ) )\n","if(!global[\"m\"]) global[\"m\"] = {};\nmodule.exports = global[\"m\"][\"bidi\"] = require(\"-!./bidi.js\");","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.22.2';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'YYYY-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","module.exports = global[\"moment\"] = require(\"-!./moment.js\");","module.exports = global[\"m\"] = require(\"-!./mithril.js\");","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","module.exports = global[\"jQuery\"] = require(\"-!./jquery.js\");","module.exports = global[\"$\"] = require(\"-!/home/travis/build/flarum/core/js/node_modules/expose-loader/index.js?jQuery!./jquery.js\");","import Component from '../../common/Component';\nimport ItemList from '../../common/utils/ItemList';\nimport listItems from '../../common/helpers/listItems';\n\n/**\n * The `HeaderPrimary` component displays primary header controls. On the\n * default skin, these are shown just to the right of the forum title.\n */\nexport default class HeaderPrimary extends Component {\n view() {\n return (\n <ul className=\"Header-controls\">\n {listItems(this.items().toArray())}\n </ul>\n );\n }\n\n config(isInitialized, context) {\n // Since this component is 'above' the content of the page (that is, it is a\n // part of the global UI that persists between routes), we will flag the DOM\n // to be retained across route changes.\n context.retain = true;\n }\n\n /**\n * Build an item list for the controls.\n *\n * @return {ItemList}\n */\n items() {\n return new ItemList();\n }\n}\n","import avatar from '../../common/helpers/avatar';\nimport username from '../../common/helpers/username';\nimport Dropdown from '../../common/components/Dropdown';\nimport Button from '../../common/components/Button';\nimport ItemList from '../../common/utils/ItemList';\n\n/**\n * The `SessionDropdown` component shows a button with the current user's\n * avatar/name, with a dropdown of session controls.\n */\nexport default class SessionDropdown extends Dropdown {\n static initProps(props) {\n super.initProps(props);\n\n props.className = 'SessionDropdown';\n props.buttonClassName = 'Button Button--user Button--flat';\n props.menuClassName = 'Dropdown-menu--right';\n }\n\n view() {\n this.props.children = this.items().toArray();\n\n return super.view();\n }\n\n getButtonContent() {\n const user = app.session.user;\n\n return [\n avatar(user), ' ',\n <span className=\"Button-label\">{username(user)}</span>\n ];\n }\n\n /**\n * Build an item list for the contents of the dropdown menu.\n *\n * @return {ItemList}\n */\n items() {\n const items = new ItemList();\n\n items.add('logOut',\n Button.component({\n icon: 'fas fa-sign-out-alt',\n children: app.translator.trans('core.admin.header.log_out_button'),\n onclick: app.session.logout.bind(app.session)\n }),\n -100\n );\n\n return items;\n }\n}\n","import Component from '../../common/Component';\nimport SessionDropdown from './SessionDropdown';\nimport ItemList from '../../common/utils/ItemList';\nimport listItems from '../../common/helpers/listItems';\n\n/**\n * The `HeaderSecondary` component displays secondary header controls.\n */\nexport default class HeaderSecondary extends Component {\n view() {\n return (\n <ul className=\"Header-controls\">\n {listItems(this.items().toArray())}\n </ul>\n );\n }\n\n config(isInitialized, context) {\n // Since this component is 'above' the content of the page (that is, it is a\n // part of the global UI that persists between routes), we will flag the DOM\n // to be retained across route changes.\n context.retain = true;\n }\n\n /**\n * Build an item list for the controls.\n *\n * @return {ItemList}\n */\n items() {\n const items = new ItemList();\n\n items.add('session', SessionDropdown.component());\n\n return items;\n }\n}\n","import Component from '../../common/Component';\n\n/**\n * The `Page` component\n *\n * @abstract\n */\nexport default class Page extends Component {\n init() {\n app.previous = app.current;\n app.current = this;\n\n app.modal.close();\n\n /**\n * A class name to apply to the body while the route is active.\n *\n * @type {String}\n */\n this.bodyClass = '';\n }\n\n config(isInitialized, context) {\n if (isInitialized) return;\n\n if (this.bodyClass) {\n $('#app').addClass(this.bodyClass);\n\n context.onunload = () => $('#app').removeClass(this.bodyClass);\n }\n }\n}\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner <toby.zerner@gmail.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport Component from '../../common/Component';\n\nexport default class Widget extends Component {\n view() {\n return (\n <div className={\"Widget \"+this.className()}>\n {this.content()}\n </div>\n );\n }\n\n /**\n * Get the class name to apply to the widget.\n *\n * @return {String}\n */\n className() {\n return '';\n }\n\n /**\n * Get the content of the widget.\n *\n * @return {VirtualElement}\n */\n content() {\n return [];\n }\n}\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner <toby.zerner@gmail.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport DashboardWidget from './DashboardWidget';\nimport icon from '../../common/helpers/icon';\nimport listItems from '../../common/helpers/listItems';\nimport ItemList from '../../common/utils/ItemList';\n\nexport default class StatusWidget extends DashboardWidget {\n className() {\n return 'StatusWidget';\n }\n\n content() {\n return (\n <ul>{listItems(this.items().toArray())}</ul>\n );\n }\n\n items() {\n const items = new ItemList();\n\n items.add('help', (\n <a href=\"http://flarum.org/docs/troubleshooting\" target=\"_blank\">\n {icon('fas fa-question-circle')} {app.translator.trans('core.admin.dashboard.help_link')}\n </a>\n ));\n\n items.add('version-flarum', [<strong>Flarum</strong>, <br/>, app.forum.attribute('version')]);\n items.add('version-php', [<strong>PHP</strong>, <br/>, app.data.phpVersion]);\n items.add('version-mysql', [<strong>MySQL</strong>, <br/>, app.data.mysqlVersion]);\n\n return items;\n }\n}\n","import Page from './Page';\nimport StatusWidget from './StatusWidget';\n\nexport default class DashboardPage extends Page {\n view() {\n return (\n <div className=\"DashboardPage\">\n <div className=\"container\">\n {this.availableWidgets()}\n </div>\n </div>\n );\n }\n\n availableWidgets() {\n return [<StatusWidget/>];\n }\n}\n","export default function saveSettings(settings) {\n const oldSettings = JSON.parse(JSON.stringify(app.data.settings));\n\n Object.assign(app.data.settings, settings);\n\n return app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/settings',\n data: settings\n }).catch(error => {\n app.data.settings = oldSettings;\n throw error;\n });\n}\n","import Page from './Page';\nimport FieldSet from '../../common/components/FieldSet';\nimport Select from '../../common/components/Select';\nimport Button from '../../common/components/Button';\nimport Alert from '../../common/components/Alert';\nimport saveSettings from '../utils/saveSettings';\nimport ItemList from '../../common/utils/ItemList';\nimport Switch from '../../common/components/Switch';\n\nexport default class BasicsPage extends Page {\n init() {\n super.init();\n\n this.loading = false;\n\n this.fields = [\n 'forum_title',\n 'forum_description',\n 'default_locale',\n 'show_language_selector',\n 'default_route',\n 'welcome_title',\n 'welcome_message'\n ];\n this.values = {};\n\n const settings = app.data.settings;\n this.fields.forEach(key => this.values[key] = m.prop(settings[key]));\n\n this.localeOptions = {};\n const locales = app.data.locales;\n for (const i in locales) {\n this.localeOptions[i] = `${locales[i]} (${i})`;\n }\n\n if (typeof this.values.show_language_selector() !== \"number\") this.values.show_language_selector(1);\n }\n\n view() {\n return (\n <div className=\"BasicsPage\">\n <div className=\"container\">\n <form onsubmit={this.onsubmit.bind(this)}>\n {FieldSet.component({\n label: app.translator.trans('core.admin.basics.forum_title_heading'),\n children: [\n <input className=\"FormControl\" value={this.values.forum_title()} oninput={m.withAttr('value', this.values.forum_title)}/>\n ]\n })}\n\n {FieldSet.component({\n label: app.translator.trans('core.admin.basics.forum_description_heading'),\n children: [\n <div className=\"helpText\">\n {app.translator.trans('core.admin.basics.forum_description_text')}\n </div>,\n <textarea className=\"FormControl\" value={this.values.forum_description()} oninput={m.withAttr('value', this.values.forum_description)}/>\n ]\n })}\n\n {Object.keys(this.localeOptions).length > 1\n ? FieldSet.component({\n label: app.translator.trans('core.admin.basics.default_language_heading'),\n children: [\n Select.component({\n options: this.localeOptions,\n value: this.values.default_locale(),\n onchange: this.values.default_locale\n }),\n Switch.component({\n state: this.values.show_language_selector(),\n onchange: this.values.show_language_selector,\n children: app.translator.trans('core.admin.basics.show_language_selector_label'),\n })\n ]\n })\n : ''}\n\n {FieldSet.component({\n label: app.translator.trans('core.admin.basics.home_page_heading'),\n className: 'BasicsPage-homePage',\n children: [\n <div className=\"helpText\">\n {app.translator.trans('core.admin.basics.home_page_text')}\n </div>,\n this.homePageItems().toArray().map(({path, label}) =>\n <label className=\"checkbox\">\n <input type=\"radio\" name=\"homePage\" value={path} checked={this.values.default_route() === path} onclick={m.withAttr('value', this.values.default_route)}/>\n {label}\n </label>\n )\n ]\n })}\n\n {FieldSet.component({\n label: app.translator.trans('core.admin.basics.welcome_banner_heading'),\n className: 'BasicsPage-welcomeBanner',\n children: [\n <div className=\"helpText\">\n {app.translator.trans('core.admin.basics.welcome_banner_text')}\n </div>,\n <div className=\"BasicsPage-welcomeBanner-input\">\n <input className=\"FormControl\" value={this.values.welcome_title()} oninput={m.withAttr('value', this.values.welcome_title)}/>\n <textarea className=\"FormControl\" value={this.values.welcome_message()} oninput={m.withAttr('value', this.values.welcome_message)}/>\n </div>\n ]\n })}\n\n {Button.component({\n type: 'submit',\n className: 'Button Button--primary',\n children: app.translator.trans('core.admin.basics.submit_button'),\n loading: this.loading,\n disabled: !this.changed()\n })}\n </form>\n </div>\n </div>\n );\n }\n\n changed() {\n return this.fields.some(key => this.values[key]() !== app.data.settings[key]);\n }\n\n /**\n * Build a list of options for the default homepage. Each option must be an\n * object with `path` and `label` properties.\n *\n * @return {ItemList}\n * @public\n */\n homePageItems() {\n const items = new ItemList();\n\n items.add('allDiscussions', {\n path: '/all',\n label: app.translator.trans('core.admin.basics.all_discussions_label')\n });\n\n return items;\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (this.loading) return;\n\n this.loading = true;\n app.alerts.dismiss(this.successAlert);\n\n const settings = {};\n\n this.fields.forEach(key => settings[key] = this.values[key]());\n\n saveSettings(settings)\n .then(() => {\n app.alerts.show(this.successAlert = new Alert({type: 'success', children: app.translator.trans('core.admin.basics.saved_message')}));\n })\n .catch(() => {})\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","import Modal from '../../common/components/Modal';\nimport Button from '../../common/components/Button';\nimport Badge from '../../common/components/Badge';\nimport Group from '../../common/models/Group';\n\n/**\n * The `EditGroupModal` component shows a modal dialog which allows the user\n * to create or edit a group.\n */\nexport default class EditGroupModal extends Modal {\n init() {\n this.group = this.props.group || app.store.createRecord('groups');\n\n this.nameSingular = m.prop(this.group.nameSingular() || '');\n this.namePlural = m.prop(this.group.namePlural() || '');\n this.icon = m.prop(this.group.icon() || '');\n this.color = m.prop(this.group.color() || '');\n }\n\n className() {\n return 'EditGroupModal Modal--small';\n }\n\n title() {\n return [\n this.color() || this.icon() ? Badge.component({\n icon: this.icon(),\n style: {backgroundColor: this.color()}\n }) : '',\n ' ',\n this.namePlural() || app.translator.trans('core.admin.edit_group.title')\n ];\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form\">\n <div className=\"Form-group\">\n <label>{app.translator.trans('core.admin.edit_group.name_label')}</label>\n <div className=\"EditGroupModal-name-input\">\n <input className=\"FormControl\" placeholder={app.translator.trans('core.admin.edit_group.singular_placeholder')} value={this.nameSingular()} oninput={m.withAttr('value', this.nameSingular)}/>\n <input className=\"FormControl\" placeholder={app.translator.trans('core.admin.edit_group.plural_placeholder')} value={this.namePlural()} oninput={m.withAttr('value', this.namePlural)}/>\n </div>\n </div>\n\n <div className=\"Form-group\">\n <label>{app.translator.trans('core.admin.edit_group.color_label')}</label>\n <input className=\"FormControl\" placeholder=\"#aaaaaa\" value={this.color()} oninput={m.withAttr('value', this.color)}/>\n </div>\n\n <div className=\"Form-group\">\n <label>{app.translator.trans('core.admin.edit_group.icon_label')}</label>\n <div className=\"helpText\">\n {app.translator.trans('core.admin.edit_group.icon_text', {a: <a href=\"http://fortawesome.github.io/Font-Awesome/icons/\" tabindex=\"-1\"/>})}\n </div>\n <input className=\"FormControl\" placeholder=\"bolt\" value={this.icon()} oninput={m.withAttr('value', this.icon)}/>\n </div>\n\n <div className=\"Form-group\">\n {Button.component({\n type: 'submit',\n className: 'Button Button--primary EditGroupModal-save',\n loading: this.loading,\n children: app.translator.trans('core.admin.edit_group.submit_button')\n })}\n {this.group.exists && this.group.id() !== Group.ADMINISTRATOR_ID ? (\n <button type=\"button\" className=\"Button EditGroupModal-delete\" onclick={this.deleteGroup.bind(this)}>\n {app.translator.trans('core.admin.edit_group.delete_button')}\n </button>\n ) : ''}\n </div>\n </div>\n </div>\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n this.group.save({\n nameSingular: this.nameSingular(),\n namePlural: this.namePlural(),\n color: this.color(),\n icon: this.icon()\n }, {errorHandler: this.onerror.bind(this)})\n .then(this.hide.bind(this))\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n }\n\n deleteGroup() {\n if (confirm(app.translator.trans('core.admin.edit_group.delete_confirmation'))) {\n this.group.delete().then(() => m.redraw());\n this.hide();\n }\n }\n}\n","import Dropdown from '../../common/components/Dropdown';\nimport Button from '../../common/components/Button';\nimport Separator from '../../common/components/Separator';\nimport Group from '../../common/models/Group';\nimport Badge from '../../common/components/Badge';\nimport GroupBadge from '../../common/components/GroupBadge';\n\nfunction badgeForId(id) {\n const group = app.store.getById('groups', id);\n\n return group ? GroupBadge.component({group, label: null}) : '';\n}\n\nfunction filterByRequiredPermissions(groupIds, permission) {\n app.getRequiredPermissions(permission)\n .forEach(required => {\n const restrictToGroupIds = app.data.permissions[required] || [];\n\n if (restrictToGroupIds.indexOf(Group.GUEST_ID) !== -1) {\n // do nothing\n } else if (restrictToGroupIds.indexOf(Group.MEMBER_ID) !== -1) {\n groupIds = groupIds.filter(id => id !== Group.GUEST_ID);\n } else if (groupIds.indexOf(Group.MEMBER_ID) !== -1) {\n groupIds = restrictToGroupIds;\n } else {\n groupIds = restrictToGroupIds.filter(id => groupIds.indexOf(id) !== -1);\n }\n\n groupIds = filterByRequiredPermissions(groupIds, required);\n });\n\n return groupIds;\n}\n\nexport default class PermissionDropdown extends Dropdown {\n static initProps(props) {\n super.initProps(props);\n\n props.className = 'PermissionDropdown';\n props.buttonClassName = 'Button Button--text';\n }\n\n view() {\n this.props.children = [];\n\n let groupIds = app.data.permissions[this.props.permission] || [];\n\n groupIds = filterByRequiredPermissions(groupIds, this.props.permission);\n\n const everyone = groupIds.indexOf(Group.GUEST_ID) !== -1;\n const members = groupIds.indexOf(Group.MEMBER_ID) !== -1;\n const adminGroup = app.store.getById('groups', Group.ADMINISTRATOR_ID);\n\n if (everyone) {\n this.props.label = Badge.component({icon: 'fas fa-globe'});\n } else if (members) {\n this.props.label = Badge.component({icon: 'fas fa-user'});\n } else {\n this.props.label = [\n badgeForId(Group.ADMINISTRATOR_ID),\n groupIds.map(badgeForId)\n ];\n }\n\n if (this.showing) {\n if (this.props.allowGuest) {\n this.props.children.push(\n Button.component({\n children: [Badge.component({icon: 'fas fa-globe'}), ' ', app.translator.trans('core.admin.permissions_controls.everyone_button')],\n icon: everyone ? 'fas fa-check' : true,\n onclick: () => this.save([Group.GUEST_ID]),\n disabled: this.isGroupDisabled(Group.GUEST_ID)\n })\n );\n }\n\n this.props.children.push(\n Button.component({\n children: [Badge.component({icon: 'fas fa-user'}), ' ', app.translator.trans('core.admin.permissions_controls.members_button')],\n icon: members ? 'fas fa-check' : true,\n onclick: () => this.save([Group.MEMBER_ID]),\n disabled: this.isGroupDisabled(Group.MEMBER_ID)\n }),\n\n Separator.component(),\n\n Button.component({\n children: [badgeForId(adminGroup.id()), ' ', adminGroup.namePlural()],\n icon: !everyone && !members ? 'fas fa-check' : true,\n disabled: !everyone && !members,\n onclick: e => {\n if (e.shiftKey) e.stopPropagation();\n this.save([]);\n }\n })\n );\n\n [].push.apply(\n this.props.children,\n app.store.all('groups')\n .filter(group => [Group.ADMINISTRATOR_ID, Group.GUEST_ID, Group.MEMBER_ID].indexOf(group.id()) === -1)\n .map(group => Button.component({\n children: [badgeForId(group.id()), ' ', group.namePlural()],\n icon: groupIds.indexOf(group.id()) !== -1 ? 'fas fa-check' : true,\n onclick: (e) => {\n if (e.shiftKey) e.stopPropagation();\n this.toggle(group.id());\n },\n disabled: this.isGroupDisabled(group.id()) && this.isGroupDisabled(Group.MEMBER_ID) && this.isGroupDisabled(Group.GUEST_ID)\n }))\n );\n }\n\n return super.view();\n }\n\n save(groupIds) {\n const permission = this.props.permission;\n\n app.data.permissions[permission] = groupIds;\n\n app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/permission',\n data: {permission, groupIds}\n });\n }\n\n toggle(groupId) {\n const permission = this.props.permission;\n\n let groupIds = app.data.permissions[permission] || [];\n\n const index = groupIds.indexOf(groupId);\n\n if (index !== -1) {\n groupIds.splice(index, 1);\n } else {\n groupIds.push(groupId);\n groupIds = groupIds.filter(id => [Group.GUEST_ID, Group.MEMBER_ID].indexOf(id) === -1);\n }\n\n this.save(groupIds);\n }\n\n isGroupDisabled(id) {\n return filterByRequiredPermissions([id], this.props.permission).indexOf(id) === -1;\n }\n}\n","import SelectDropdown from '../../common/components/SelectDropdown';\nimport Button from '../../common/components/Button';\nimport saveSettings from '../utils/saveSettings';\n\nexport default class SettingDropdown extends SelectDropdown {\n static initProps(props) {\n super.initProps(props);\n\n props.className = 'SettingDropdown';\n props.buttonClassName = 'Button Button--text';\n props.caretIcon = 'fas fa-caret-down';\n props.defaultLabel = 'Custom';\n\n props.children = props.options.map(({value, label}) => {\n const active = app.data.settings[props.key] === value;\n\n return Button.component({\n children: label,\n icon: active ? 'fas fa-check' : true,\n onclick: saveSettings.bind(this, {[props.key]: value}),\n active\n });\n });\n }\n}\n","import Component from '../../common/Component';\nimport PermissionDropdown from './PermissionDropdown';\nimport SettingDropdown from './SettingDropdown';\nimport Button from '../../common/components/Button';\nimport ItemList from '../../common/utils/ItemList';\nimport icon from '../../common/helpers/icon';\n\nexport default class PermissionGrid extends Component {\n init() {\n this.permissions = this.permissionItems().toArray();\n }\n\n view() {\n const scopes = this.scopeItems().toArray();\n\n const permissionCells = permission => {\n return scopes.map(scope => (\n <td>\n {scope.render(permission)}\n </td>\n ));\n };\n\n return (\n <table className=\"PermissionGrid\">\n <thead>\n <tr>\n <td></td>\n {scopes.map(scope => (\n <th>\n {scope.label}{' '}\n {scope.onremove ? Button.component({icon: 'fas fa-times', className: 'Button Button--text PermissionGrid-removeScope', onclick: scope.onremove}) : ''}\n </th>\n ))}\n <th>{this.scopeControlItems().toArray()}</th>\n </tr>\n </thead>\n {this.permissions.map(section => (\n <tbody>\n <tr className=\"PermissionGrid-section\">\n <th>{section.label}</th>\n {permissionCells(section)}\n <td/>\n </tr>\n {section.children.map(child => (\n <tr className=\"PermissionGrid-child\">\n <th>{icon(child.icon)}{child.label}</th>\n {permissionCells(child)}\n <td/>\n </tr>\n ))}\n </tbody>\n ))}\n </table>\n );\n }\n\n permissionItems() {\n const items = new ItemList();\n\n items.add('view', {\n label: app.translator.trans('core.admin.permissions.read_heading'),\n children: this.viewItems().toArray()\n }, 100);\n\n items.add('start', {\n label: app.translator.trans('core.admin.permissions.create_heading'),\n children: this.startItems().toArray()\n }, 90);\n\n items.add('reply', {\n label: app.translator.trans('core.admin.permissions.participate_heading'),\n children: this.replyItems().toArray()\n }, 80);\n\n items.add('moderate', {\n label: app.translator.trans('core.admin.permissions.moderate_heading'),\n children: this.moderateItems().toArray()\n }, 70);\n\n return items;\n }\n\n viewItems() {\n const items = new ItemList();\n\n items.add('viewDiscussions', {\n icon: 'fas fa-eye',\n label: app.translator.trans('core.admin.permissions.view_discussions_label'),\n permission: 'viewDiscussions',\n allowGuest: true\n }, 100);\n\n items.add('viewUserList', {\n icon: 'fas fa-users',\n label: app.translator.trans('core.admin.permissions.view_user_list_label'),\n permission: 'viewUserList',\n allowGuest: true\n }, 100);\n\n items.add('signUp', {\n icon: 'fas fa-user-plus',\n label: app.translator.trans('core.admin.permissions.sign_up_label'),\n setting: () => SettingDropdown.component({\n key: 'allow_sign_up',\n options: [\n {value: '1', label: app.translator.trans('core.admin.permissions_controls.signup_open_button')},\n {value: '0', label: app.translator.trans('core.admin.permissions_controls.signup_closed_button')}\n ]\n })\n }, 90);\n\n return items;\n }\n\n startItems() {\n const items = new ItemList();\n\n items.add('start', {\n icon: 'fas fa-edit',\n label: app.translator.trans('core.admin.permissions.start_discussions_label'),\n permission: 'startDiscussion'\n }, 100);\n\n items.add('allowRenaming', {\n icon: 'fas fa-i-cursor',\n label: app.translator.trans('core.admin.permissions.allow_renaming_label'),\n setting: () => {\n const minutes = parseInt(app.data.settings.allow_renaming, 10);\n\n return SettingDropdown.component({\n defaultLabel: minutes\n ? app.translator.transChoice('core.admin.permissions_controls.allow_some_minutes_button', minutes, {count: minutes})\n : app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button'),\n key: 'allow_renaming',\n options: [\n {value: '-1', label: app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button')},\n {value: '10', label: app.translator.trans('core.admin.permissions_controls.allow_ten_minutes_button')},\n {value: 'reply', label: app.translator.trans('core.admin.permissions_controls.allow_until_reply_button')}\n ]\n });\n }\n }, 90);\n\n return items;\n }\n\n replyItems() {\n const items = new ItemList();\n\n items.add('reply', {\n icon: 'fas fa-reply',\n label: app.translator.trans('core.admin.permissions.reply_to_discussions_label'),\n permission: 'discussion.reply'\n }, 100);\n\n items.add('allowPostEditing', {\n icon: 'fas fa-pencil-alt',\n label: app.translator.trans('core.admin.permissions.allow_post_editing_label'),\n setting: () => {\n const minutes = parseInt(app.data.settings.allow_post_editing, 10);\n\n return SettingDropdown.component({\n defaultLabel: minutes\n ? app.translator.transChoice('core.admin.permissions_controls.allow_some_minutes_button', minutes, {count: minutes})\n : app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button'),\n key: 'allow_post_editing',\n options: [\n {value: '-1', label: app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button')},\n {value: '10', label: app.translator.trans('core.admin.permissions_controls.allow_ten_minutes_button')},\n {value: 'reply', label: app.translator.trans('core.admin.permissions_controls.allow_until_reply_button')}\n ]\n });\n }\n }, 90);\n\n return items;\n }\n\n moderateItems() {\n const items = new ItemList();\n\n items.add('viewIpsPosts', {\n icon: 'fas fa-bullseye',\n label: app.translator.trans('core.admin.permissions.view_post_ips_label'),\n permission: 'discussion.viewIpsPosts'\n }, 110);\n\n items.add('renameDiscussions', {\n icon: 'fas fa-i-cursor',\n label: app.translator.trans('core.admin.permissions.rename_discussions_label'),\n permission: 'discussion.rename'\n }, 100);\n\n items.add('hideDiscussions', {\n icon: 'far fa-trash-alt',\n label: app.translator.trans('core.admin.permissions.delete_discussions_label'),\n permission: 'discussion.hide'\n }, 90);\n\n items.add('deleteDiscussions', {\n icon: 'fas fa-times',\n label: app.translator.trans('core.admin.permissions.delete_discussions_forever_label'),\n permission: 'discussion.delete'\n }, 80);\n\n items.add('editPosts', {\n icon: 'fas fa-pencil-alt',\n label: app.translator.trans('core.admin.permissions.edit_and_delete_posts_label'),\n permission: 'discussion.editPosts'\n }, 70);\n\n items.add('deletePosts', {\n icon: 'fas fa-times',\n label: app.translator.trans('core.admin.permissions.delete_posts_forever_label'),\n permission: 'discussion.deletePosts'\n }, 60);\n\n return items;\n }\n\n scopeItems() {\n const items = new ItemList();\n\n items.add('global', {\n label: app.translator.trans('core.admin.permissions.global_heading'),\n render: item => {\n if (item.setting) {\n return item.setting();\n } else if (item.permission) {\n return PermissionDropdown.component({\n permission: item.permission,\n allowGuest: item.allowGuest\n });\n }\n\n return '';\n }\n }, 100);\n\n return items;\n }\n\n scopeControlItems() {\n return new ItemList();\n }\n}\n","import Page from './Page';\nimport GroupBadge from '../../common/components/GroupBadge';\nimport EditGroupModal from './EditGroupModal';\nimport Group from '../../common/models/Group';\nimport icon from '../../common/helpers/icon';\nimport PermissionGrid from './PermissionGrid';\n\nexport default class PermissionsPage extends Page {\n view() {\n return (\n <div className=\"PermissionsPage\">\n <div className=\"PermissionsPage-groups\">\n <div className=\"container\">\n {app.store.all('groups')\n .filter(group => [Group.GUEST_ID, Group.MEMBER_ID].indexOf(group.id()) === -1)\n .map(group => (\n <button className=\"Button Group\" onclick={() => app.modal.show(new EditGroupModal({group}))}>\n {GroupBadge.component({\n group,\n className: 'Group-icon',\n label: null\n })}\n <span className=\"Group-name\">{group.namePlural()}</span>\n </button>\n ))}\n <button className=\"Button Group Group--add\" onclick={() => app.modal.show(new EditGroupModal())}>\n {icon('fas fa-plus', {className: 'Group-icon'})}\n <span className=\"Group-name\">{app.translator.trans('core.admin.permissions.new_group_button')}</span>\n </button>\n </div>\n </div>\n\n <div className=\"PermissionsPage-permissions\">\n <div className=\"container\">\n {PermissionGrid.component()}\n </div>\n </div>\n </div>\n );\n }\n}\n","import Modal from '../../common/components/Modal';\nimport Button from '../../common/components/Button';\nimport saveSettings from '../utils/saveSettings';\n\nexport default class SettingsModal extends Modal {\n init() {\n this.settings = {};\n this.loading = false;\n }\n\n form() {\n return '';\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form\">\n {this.form()}\n\n <div className=\"Form-group\">\n {this.submitButton()}\n </div>\n </div>\n </div>\n );\n }\n\n submitButton() {\n return (\n <Button\n type=\"submit\"\n className=\"Button Button--primary\"\n loading={this.loading}\n disabled={!this.changed()}>\n {app.translator.trans('core.admin.settings.submit_button')}\n </Button>\n );\n }\n\n setting(key, fallback = '') {\n this.settings[key] = this.settings[key] || m.prop(app.data.settings[key] || fallback);\n\n return this.settings[key];\n }\n\n dirty() {\n const dirty = {};\n\n Object.keys(this.settings).forEach(key => {\n const value = this.settings[key]();\n\n if (value !== app.data.settings[key]) {\n dirty[key] = value;\n }\n });\n\n return dirty;\n }\n\n changed() {\n return Object.keys(this.dirty()).length;\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n saveSettings(this.dirty()).then(\n this.onsaved.bind(this),\n this.loaded.bind(this)\n );\n }\n\n onsaved() {\n this.hide();\n }\n}\n","import SettingsModal from './SettingsModal';\n\nexport default class EditCustomCssModal extends SettingsModal {\n className() {\n return 'EditCustomCssModal Modal--large';\n }\n\n title() {\n return app.translator.trans('core.admin.edit_css.title');\n }\n\n form() {\n return [\n <p>{app.translator.trans('core.admin.edit_css.customize_text', {a: <a href=\"https://github.com/flarum/core/tree/master/less\" target=\"_blank\"/>})}</p>,\n <div className=\"Form-group\">\n <textarea className=\"FormControl\" rows=\"30\" bidi={this.setting('custom_less')}/>\n </div>\n ];\n }\n\n onsaved() {\n window.location.reload();\n }\n}\n","import SettingsModal from './SettingsModal';\n\nexport default class EditCustomHeaderModal extends SettingsModal {\n className() {\n return 'EditCustomHeaderModal Modal--large';\n }\n\n title() {\n return app.translator.trans('core.admin.edit_header.title');\n }\n\n form() {\n return [\n <p>{app.translator.trans('core.admin.edit_header.customize_text')}</p>,\n <div className=\"Form-group\">\n <textarea className=\"FormControl\" rows=\"30\" bidi={this.setting('custom_header')}/>\n </div>\n ];\n }\n\n onsaved() {\n window.location.reload();\n }\n}\n","import SettingsModal from './SettingsModal';\n\nexport default class EditCustomFooterModal extends SettingsModal {\n className() {\n return 'EditCustomFooterModal Modal--large';\n }\n\n title() {\n return app.translator.trans('core.admin.edit_footer.title');\n }\n\n form() {\n return [\n <p>{app.translator.trans('core.admin.edit_footer.customize_text')}</p>,\n <div className=\"Form-group\">\n <textarea className=\"FormControl\" rows=\"30\" bidi={this.setting('custom_footer')}/>\n </div>\n ];\n }\n\n onsaved() {\n window.location.reload();\n }\n}\n","import Button from '../../common/components/Button';\n\nexport default class UploadImageButton extends Button {\n init() {\n this.loading = false;\n }\n\n view() {\n this.props.loading = this.loading;\n this.props.className = (this.props.className || '') + ' Button';\n\n if (app.data.settings[this.props.name + '_path']) {\n this.props.onclick = this.remove.bind(this);\n this.props.children = app.translator.trans('core.admin.upload_image.remove_button');\n\n return (\n <div>\n <p><img src={app.forum.attribute(this.props.name+'Url')} alt=\"\"/></p>\n <p>{super.view()}</p>\n </div>\n );\n } else {\n this.props.onclick = this.upload.bind(this);\n this.props.children = app.translator.trans('core.admin.upload_image.upload_button');\n }\n\n return super.view();\n }\n\n /**\n * Prompt the user to upload an image.\n */\n upload() {\n if (this.loading) return;\n\n const $input = $('<input type=\"file\">');\n\n $input.appendTo('body').hide().click().on('change', e => {\n const data = new FormData();\n data.append(this.props.name, $(e.target)[0].files[0]);\n\n this.loading = true;\n m.redraw();\n\n app.request({\n method: 'POST',\n url: this.resourceUrl(),\n serialize: raw => raw,\n data\n }).then(\n this.success.bind(this),\n this.failure.bind(this)\n );\n });\n }\n\n /**\n * Remove the logo.\n */\n remove() {\n this.loading = true;\n m.redraw();\n\n app.request({\n method: 'DELETE',\n url: this.resourceUrl()\n }).then(\n this.success.bind(this),\n this.failure.bind(this)\n );\n }\n\n resourceUrl() {\n return app.forum.attribute('apiUrl') + '/' + this.props.name;\n }\n\n /**\n * After a successful upload/removal, reload the page.\n *\n * @param {Object} response\n * @protected\n */\n success(response) {\n window.location.reload();\n }\n\n /**\n * If upload/removal fails, stop loading.\n *\n * @param {Object} response\n * @protected\n */\n failure(response) {\n this.loading = false;\n m.redraw();\n }\n}\n","import Page from './Page';\nimport Button from '../../common/components/Button';\nimport Switch from '../../common/components/Switch';\nimport EditCustomCssModal from './EditCustomCssModal';\nimport EditCustomHeaderModal from './EditCustomHeaderModal';\nimport EditCustomFooterModal from './EditCustomFooterModal';\nimport UploadImageButton from './UploadImageButton';\nimport saveSettings from '../utils/saveSettings';\n\nexport default class AppearancePage extends Page {\n init() {\n super.init();\n\n this.primaryColor = m.prop(app.data.settings.theme_primary_color);\n this.secondaryColor = m.prop(app.data.settings.theme_secondary_color);\n this.darkMode = m.prop(app.data.settings.theme_dark_mode === '1');\n this.coloredHeader = m.prop(app.data.settings.theme_colored_header === '1');\n }\n\n view() {\n return (\n <div className=\"AppearancePage\">\n <div className=\"container\">\n <form onsubmit={this.onsubmit.bind(this)}>\n <fieldset className=\"AppearancePage-colors\">\n <legend>{app.translator.trans('core.admin.appearance.colors_heading')}</legend>\n <div className=\"helpText\">\n {app.translator.trans('core.admin.appearance.colors_text')}\n </div>\n\n <div className=\"AppearancePage-colors-input\">\n <input className=\"FormControl\" type=\"text\" placeholder=\"#aaaaaa\" value={this.primaryColor()} onchange={m.withAttr('value', this.primaryColor)}/>\n <input className=\"FormControl\" type=\"text\" placeholder=\"#aaaaaa\" value={this.secondaryColor()} onchange={m.withAttr('value', this.secondaryColor)}/>\n </div>\n\n {Switch.component({\n state: this.darkMode(),\n children: app.translator.trans('core.admin.appearance.dark_mode_label'),\n onchange: this.darkMode\n })}\n\n {Switch.component({\n state: this.coloredHeader(),\n children: app.translator.trans('core.admin.appearance.colored_header_label'),\n onchange: this.coloredHeader\n })}\n\n {Button.component({\n className: 'Button Button--primary',\n type: 'submit',\n children: app.translator.trans('core.admin.appearance.submit_button'),\n loading: this.loading\n })}\n </fieldset>\n </form>\n\n <fieldset>\n <legend>{app.translator.trans('core.admin.appearance.logo_heading')}</legend>\n <div className=\"helpText\">\n {app.translator.trans('core.admin.appearance.logo_text')}\n </div>\n <UploadImageButton name=\"logo\"/>\n </fieldset>\n\n <fieldset>\n <legend>{app.translator.trans('core.admin.appearance.favicon_heading')}</legend>\n <div className=\"helpText\">\n {app.translator.trans('core.admin.appearance.favicon_text')}\n </div>\n <UploadImageButton name=\"favicon\"/>\n </fieldset>\n\n <fieldset>\n <legend>{app.translator.trans('core.admin.appearance.custom_header_heading')}</legend>\n <div className=\"helpText\">\n {app.translator.trans('core.admin.appearance.custom_header_text')}\n </div>\n {Button.component({\n className: 'Button',\n children: app.translator.trans('core.admin.appearance.edit_header_button'),\n onclick: () => app.modal.show(new EditCustomHeaderModal())\n })}\n </fieldset>\n\n <fieldset>\n <legend>{app.translator.trans('core.admin.appearance.custom_footer_heading')}</legend>\n <div className=\"helpText\">\n {app.translator.trans('core.admin.appearance.custom_footer_text')}\n </div>\n {Button.component({\n className: 'Button',\n children: app.translator.trans('core.admin.appearance.edit_footer_button'),\n onclick: () => app.modal.show(new EditCustomFooterModal())\n })}\n </fieldset>\n\n <fieldset>\n <legend>{app.translator.trans('core.admin.appearance.custom_styles_heading')}</legend>\n <div className=\"helpText\">\n {app.translator.trans('core.admin.appearance.custom_styles_text')}\n </div>\n {Button.component({\n className: 'Button',\n children: app.translator.trans('core.admin.appearance.edit_css_button'),\n onclick: () => app.modal.show(new EditCustomCssModal())\n })}\n </fieldset>\n </div>\n </div>\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n const hex = /^#[0-9a-f]{3}([0-9a-f]{3})?$/i;\n\n if (!hex.test(this.primaryColor()) || !hex.test(this.secondaryColor())) {\n alert(app.translator.trans('core.admin.appearance.enter_hex_message'));\n return;\n }\n\n this.loading = true;\n\n saveSettings({\n theme_primary_color: this.primaryColor(),\n theme_secondary_color: this.secondaryColor(),\n theme_dark_mode: this.darkMode(),\n theme_colored_header: this.coloredHeader()\n }).then(() => window.location.reload());\n }\n}\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner <toby.zerner@gmail.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport Modal from '../../common/components/Modal';\n\nexport default class AddExtensionModal extends Modal {\n className() {\n return 'AddExtensionModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.admin.add_extension.title');\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <p>{app.translator.trans('core.admin.add_extension.temporary_text')}</p>\n <p>{app.translator.trans('core.admin.add_extension.install_text', {a: <a href=\"https://discuss.flarum.org/t/extensions\" target=\"_blank\"/>})}</p>\n <p>{app.translator.trans('core.admin.add_extension.developer_text', {a: <a href=\"http://flarum.org/docs/extend\" target=\"_blank\"/>})}</p>\n </div>\n );\n }\n}\n","import Modal from '../../common/components/Modal';\n\nexport default class LoadingModal extends Modal {\n isDismissible() {\n return false;\n }\n\n className() {\n return 'LoadingModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.admin.loading.title');\n }\n\n content() {\n return '';\n }\n}\n","import Page from './Page';\nimport LinkButton from '../../common/components/LinkButton';\nimport Button from '../../common/components/Button';\nimport Dropdown from '../../common/components/Dropdown';\nimport Separator from '../../common/components/Separator';\nimport AddExtensionModal from './AddExtensionModal';\nimport LoadingModal from './LoadingModal';\nimport ItemList from '../../common/utils/ItemList';\nimport icon from '../../common/helpers/icon';\nimport listItems from '../../common/helpers/listItems';\n\nexport default class ExtensionsPage extends Page {\n view() {\n return (\n <div className=\"ExtensionsPage\">\n <div className=\"ExtensionsPage-header\">\n <div className=\"container\">\n {Button.component({\n children: app.translator.trans('core.admin.extensions.add_button'),\n icon: 'fas fa-plus',\n className: 'Button Button--primary',\n onclick: () => app.modal.show(new AddExtensionModal())\n })}\n </div>\n </div>\n\n <div className=\"ExtensionsPage-list\">\n <div className=\"container\">\n <ul className=\"ExtensionList\">\n {Object.keys(app.data.extensions)\n .map(id => {\n const extension = app.data.extensions[id];\n const controls = this.controlItems(extension.id).toArray();\n\n return <li className={'ExtensionListItem ' + (!this.isEnabled(extension.id) ? 'disabled' : '')}>\n <div className=\"ExtensionListItem-content\">\n <span className=\"ExtensionListItem-icon ExtensionIcon\" style={extension.icon}>\n {extension.icon ? icon(extension.icon.name) : ''}\n </span>\n {controls.length ? (\n <Dropdown\n className=\"ExtensionListItem-controls\"\n buttonClassName=\"Button Button--icon Button--flat\"\n menuClassName=\"Dropdown-menu--right\"\n icon=\"fas fa-ellipsis-h\">\n {controls}\n </Dropdown>\n ) : ''}\n <label className=\"ExtensionListItem-title\">\n <input type=\"checkbox\" checked={this.isEnabled(extension.id)} onclick={this.toggle.bind(this, extension.id)}/> {' '}\n {extension.extra['flarum-extension'].title}\n </label>\n <div className=\"ExtensionListItem-version\">{extension.version}</div>\n </div>\n </li>;\n })}\n </ul>\n </div>\n </div>\n </div>\n );\n }\n\n controlItems(name) {\n const items = new ItemList();\n const enabled = this.isEnabled(name);\n\n if (app.extensionSettings[name]) {\n items.add('settings', Button.component({\n icon: 'fas fa-cog',\n children: app.translator.trans('core.admin.extensions.settings_button'),\n onclick: app.extensionSettings[name]\n }));\n }\n\n if (!enabled) {\n items.add('uninstall', Button.component({\n icon: 'far fa-trash-alt',\n children: app.translator.trans('core.admin.extensions.uninstall_button'),\n onclick: () => {\n app.request({\n url: app.forum.attribute('apiUrl') + '/extensions/' + name,\n method: 'DELETE'\n }).then(() => window.location.reload());\n\n app.modal.show(new LoadingModal());\n }\n }));\n }\n\n return items;\n }\n\n isEnabled(name) {\n const enabled = JSON.parse(app.data.settings.extensions_enabled);\n\n return enabled.indexOf(name) !== -1;\n }\n\n toggle(id) {\n const enabled = this.isEnabled(id);\n\n app.request({\n url: app.forum.attribute('apiUrl') + '/extensions/' + id,\n method: 'PATCH',\n data: {enabled: !enabled}\n }).then(() => {\n if (!enabled) localStorage.setItem('enabledExtension', id);\n window.location.reload();\n });\n\n app.modal.show(new LoadingModal());\n }\n}\n","import Page from './Page';\nimport FieldSet from '../../common/components/FieldSet';\nimport Button from '../../common/components/Button';\nimport Alert from '../../common/components/Alert';\nimport saveSettings from '../utils/saveSettings';\n\nexport default class MailPage extends Page {\n init() {\n super.init();\n\n this.loading = false;\n\n this.fields = [\n 'mail_driver',\n 'mail_host',\n 'mail_from',\n 'mail_port',\n 'mail_username',\n 'mail_password',\n 'mail_encryption'\n ];\n this.values = {};\n\n const settings = app.data.settings;\n this.fields.forEach(key => this.values[key] = m.prop(settings[key]));\n\n this.localeOptions = {};\n const locales = app.locales;\n for (const i in locales) {\n this.localeOptions[i] = `${locales[i]} (${i})`;\n }\n }\n\n view() {\n return (\n <div className=\"MailPage\">\n <div className=\"container\">\n <form onsubmit={this.onsubmit.bind(this)}>\n <h2>{app.translator.trans('core.admin.email.heading')}</h2>\n <div className=\"helpText\">\n {app.translator.trans('core.admin.email.text')}\n </div>\n\n {FieldSet.component({\n label: app.translator.trans('core.admin.email.server_heading'),\n className: 'MailPage-MailSettings',\n children: [\n <div className=\"MailPage-MailSettings-input\">\n <label>{app.translator.trans('core.admin.email.driver_label')}</label>\n <input className=\"FormControl\" value={this.values.mail_driver() || ''} oninput={m.withAttr('value', this.values.mail_driver)} />\n <label>{app.translator.trans('core.admin.email.host_label')}</label>\n <input className=\"FormControl\" value={this.values.mail_host() || ''} oninput={m.withAttr('value', this.values.mail_host)} />\n <label>{app.translator.trans('core.admin.email.port_label')}</label>\n <input className=\"FormControl\" value={this.values.mail_port() || ''} oninput={m.withAttr('value', this.values.mail_port)} />\n <label>{app.translator.trans('core.admin.email.encryption_label')}</label>\n <input className=\"FormControl\" value={this.values.mail_encryption() || ''} oninput={m.withAttr('value', this.values.mail_encryption)} />\n </div>\n ]\n })}\n\n {FieldSet.component({\n label: app.translator.trans('core.admin.email.account_heading'),\n className: 'MailPage-MailSettings',\n children: [\n <div className=\"MailPage-MailSettings-input\">\n <label>{app.translator.trans('core.admin.email.username_label')}</label>\n <input className=\"FormControl\" value={this.values.mail_username() || ''} oninput={m.withAttr('value', this.values.mail_username)} />\n <label>{app.translator.trans('core.admin.email.password_label')}</label>\n <input className=\"FormControl\" value={this.values.mail_password() || ''} oninput={m.withAttr('value', this.values.mail_password)} />\n </div>\n ]\n })}\n\n {FieldSet.component({\n label: app.translator.trans('core.admin.email.addresses_heading'),\n className: 'MailPage-MailSettings',\n children: [\n <div className=\"MailPage-MailSettings-input\">\n <label>{app.translator.trans('core.admin.email.from_label')}</label>\n <input className=\"FormControl\" value={this.values.mail_from() || ''} oninput={m.withAttr('value', this.values.mail_from)} />\n </div>\n ]\n })}\n\n {Button.component({\n type: 'submit',\n className: 'Button Button--primary',\n children: app.translator.trans('core.admin.email.submit_button'),\n loading: this.loading,\n disabled: !this.changed()\n })}\n </form>\n </div>\n </div>\n );\n }\n\n changed() {\n return this.fields.some(key => this.values[key]() !== app.data.settings[key]);\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (this.loading) return;\n\n this.loading = true;\n app.alerts.dismiss(this.successAlert);\n\n const settings = {};\n\n this.fields.forEach(key => settings[key] = this.values[key]());\n\n saveSettings(settings)\n .then(() => {\n app.alerts.show(this.successAlert = new Alert({type: 'success', children: app.translator.trans('core.admin.basics.saved_message')}));\n })\n .catch(() => {})\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","import DashboardPage from './components/DashboardPage';\nimport BasicsPage from './components/BasicsPage';\nimport PermissionsPage from './components/PermissionsPage';\nimport AppearancePage from './components/AppearancePage';\nimport ExtensionsPage from './components/ExtensionsPage';\nimport MailPage from './components/MailPage';\n\n/**\n * The `routes` initializer defines the forum app's routes.\n *\n * @param {App} app\n */\nexport default function(app) {\n app.routes = {\n 'dashboard': {path: '/', component: DashboardPage.component()},\n 'basics': {path: '/basics', component: BasicsPage.component()},\n 'permissions': {path: '/permissions', component: PermissionsPage.component()},\n 'appearance': {path: '/appearance', component: AppearancePage.component()},\n 'extensions': {path: '/extensions', component: ExtensionsPage.component()},\n 'mail': {path: '/mail', component: MailPage.component()}\n };\n}\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner <toby.zerner@gmail.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport LinkButton from '../../common/components/LinkButton';\n\nexport default class AdminLinkButton extends LinkButton {\n getButtonContent() {\n const content = super.getButtonContent();\n\n content.push(\n <div className=\"AdminLinkButton-description\">\n {this.props.description}\n </div>\n );\n\n return content;\n }\n}\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner <toby.zerner@gmail.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport Component from '../../common/Component';\nimport AdminLinkButton from './AdminLinkButton';\nimport SelectDropdown from '../../common/components/SelectDropdown';\nimport ItemList from '../../common/utils/ItemList';\n\nexport default class AdminNav extends Component {\n view() {\n return (\n <SelectDropdown\n className=\"AdminNav App-titleControl\"\n buttonClassName=\"Button\">\n {this.items().toArray()}\n </SelectDropdown>\n );\n }\n\n /**\n * Build an item list of links to show in the admin navigation.\n *\n * @return {ItemList}\n */\n items() {\n const items = new ItemList();\n\n items.add('dashboard', AdminLinkButton.component({\n href: app.route('dashboard'),\n icon: 'far fa-chart-bar',\n children: app.translator.trans('core.admin.nav.dashboard_button'),\n description: app.translator.trans('core.admin.nav.dashboard_text')\n }));\n\n items.add('basics', AdminLinkButton.component({\n href: app.route('basics'),\n icon: 'fas fa-pencil-alt',\n children: app.translator.trans('core.admin.nav.basics_button'),\n description: app.translator.trans('core.admin.nav.basics_text')\n }));\n\n items.add('mail', AdminLinkButton.component({\n href: app.route('mail'),\n icon: 'fas fa-envelope',\n children: app.translator.trans('core.admin.nav.email_button'),\n description: app.translator.trans('core.admin.nav.email_text')\n }));\n\n items.add('permissions', AdminLinkButton.component({\n href: app.route('permissions'),\n icon: 'fas fa-key',\n children: app.translator.trans('core.admin.nav.permissions_button'),\n description: app.translator.trans('core.admin.nav.permissions_text')\n }));\n\n items.add('appearance', AdminLinkButton.component({\n href: app.route('appearance'),\n icon: 'fas fa-paint-brush',\n children: app.translator.trans('core.admin.nav.appearance_button'),\n description: app.translator.trans('core.admin.nav.appearance_text')\n }));\n\n items.add('extensions', AdminLinkButton.component({\n href: app.route('extensions'),\n icon: 'fas fa-puzzle-piece',\n children: app.translator.trans('core.admin.nav.extensions_button'),\n description: app.translator.trans('core.admin.nav.extensions_text')\n }));\n\n return items;\n }\n}\n","import HeaderPrimary from './components/HeaderPrimary';\nimport HeaderSecondary from './components/HeaderSecondary';\nimport routes from './routes';\nimport Application from '../common/Application';\nimport Navigation from '../common/components/Navigation';\nimport AdminNav from './components/AdminNav';\n\nexport default class AdminApplication extends Application {\n extensionSettings = {};\n\n history = {\n canGoBack: () => true,\n getPrevious: () => {},\n backUrl: () => this.forum.attribute('baseUrl'),\n back: function() {\n window.location = this.backUrl();\n }\n };\n\n constructor() {\n super();\n\n routes(this);\n }\n\n /**\n * @inheritdoc\n */\n mount() {\n m.mount(document.getElementById('app-navigation'), Navigation.component({className: 'App-backControl', drawer: true}));\n m.mount(document.getElementById('header-navigation'), Navigation.component());\n m.mount(document.getElementById('header-primary'), HeaderPrimary.component());\n m.mount(document.getElementById('header-secondary'), HeaderSecondary.component());\n m.mount(document.getElementById('admin-navigation'), AdminNav.component());\n\n m.route.mode = 'hash';\n super.mount();\n\n // If an extension has just been enabled, then we will run its settings\n // callback.\n const enabled = localStorage.getItem('enabledExtension');\n if (enabled && this.extensionSettings[enabled]) {\n this.extensionSettings[enabled]();\n localStorage.removeItem('enabledExtension');\n }\n }\n\n getRequiredPermissions(permission) {\n const required = [];\n\n if (permission === 'startDiscussion' || permission.indexOf('discussion.') === 0) {\n required.push('viewDiscussions');\n }\n if (permission === 'discussion.delete') {\n required.push('discussion.hide');\n }\n if (permission === 'discussion.deletePosts') {\n required.push('discussion.editPosts');\n }\n\n return required;\n };\n}\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner <toby.zerner@gmail.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport Component from '../../common/Component';\n\nexport default class DashboardWidget extends Component {\n view() {\n return (\n <div className={\"DashboardWidget \"+this.className()}>\n {this.content()}\n </div>\n );\n }\n\n /**\n * Get the class name to apply to the widget.\n *\n * @return {String}\n */\n className() {\n return '';\n }\n\n /**\n * Get the content of the widget.\n *\n * @return {VirtualElement}\n */\n content() {\n return [];\n }\n}\n","import compat from '../common/compat';\n\nimport saveSettings from './utils/saveSettings';\nimport SettingDropdown from './components/SettingDropdown';\nimport EditCustomFooterModal from './components/EditCustomFooterModal';\nimport SessionDropdown from './components/SessionDropdown';\nimport HeaderPrimary from './components/HeaderPrimary';\nimport AppearancePage from './components/AppearancePage';\nimport Page from './components/Page';\nimport StatusWidget from './components/StatusWidget';\nimport HeaderSecondary from './components/HeaderSecondary';\nimport SettingsModal from './components/SettingsModal';\nimport DashboardWidget from './components/DashboardWidget';\nimport AddExtensionModal from './components/AddExtensionModal';\nimport ExtensionsPage from './components/ExtensionsPage';\nimport AdminLinkButton from './components/AdminLinkButton';\nimport PermissionGrid from './components/PermissionGrid';\nimport Widget from './components/Widget';\nimport MailPage from './components/MailPage';\nimport UploadImageButton from './components/UploadImageButton';\nimport LoadingModal from './components/LoadingModal';\nimport DashboardPage from './components/DashboardPage';\nimport BasicsPage from './components/BasicsPage';\nimport EditCustomHeaderModal from './components/EditCustomHeaderModal';\nimport PermissionsPage from './components/PermissionsPage';\nimport PermissionDropdown from './components/PermissionDropdown';\nimport AdminNav from './components/AdminNav';\nimport EditCustomCssModal from './components/EditCustomCssModal';\nimport EditGroupModal from './components/EditGroupModal';\nimport routes from './routes';\nimport AdminApplication from './AdminApplication';\n\nexport default Object.assign(compat, {\n 'utils/saveSettings': saveSettings,\n 'components/SettingDropdown': SettingDropdown,\n 'components/EditCustomFooterModal': EditCustomFooterModal,\n 'components/SessionDropdown': SessionDropdown,\n 'components/HeaderPrimary': HeaderPrimary,\n 'components/AppearancePage': AppearancePage,\n 'components/Page': Page,\n 'components/StatusWidget': StatusWidget,\n 'components/HeaderSecondary': HeaderSecondary,\n 'components/SettingsModal': SettingsModal,\n 'components/DashboardWidget': DashboardWidget,\n 'components/AddExtensionModal': AddExtensionModal,\n 'components/ExtensionsPage': ExtensionsPage,\n 'components/AdminLinkButton': AdminLinkButton,\n 'components/PermissionGrid': PermissionGrid,\n 'components/Widget': Widget,\n 'components/MailPage': MailPage,\n 'components/UploadImageButton': UploadImageButton,\n 'components/LoadingModal': LoadingModal,\n 'components/DashboardPage': DashboardPage,\n 'components/BasicsPage': BasicsPage,\n 'components/EditCustomHeaderModal': EditCustomHeaderModal,\n 'components/PermissionsPage': PermissionsPage,\n 'components/PermissionDropdown': PermissionDropdown,\n 'components/AdminNav': AdminNav,\n 'components/EditCustomCssModal': EditCustomCssModal,\n 'components/EditGroupModal': EditGroupModal,\n 'routes': routes,\n 'AdminApplication': AdminApplication\n});\n","import AdminApplication from './AdminApplication';\n\nconst app = new AdminApplication();\n\n// Backwards compatibility\nwindow.app = app;\n\nexport { app };\n\n// Export public API\n\n\n// Export compat API\nimport compat from './compat';\n\ncompat.app = app;\n\nexport { compat };\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner <toby.zerner@gmail.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nexport * from './src/common';\nexport * from './src/admin';"],"sourceRoot":""} |