mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-14 15:13:29 +01:00
1 line
3.4 MiB
1 line
3.4 MiB
{"version":3,"sources":["script.js","pdf.pdfmake.js","bootstrap.js","jquery.js","jquery-ui.js","jquery.dataTables.js","datatables.js","knockout.js","knockout.mapping-latest.js","knockout-sortable.js","underscore.js","bootstrap-datepicker.js","bootstrap-datepicker.de.min.js","bootstrap-datepicker.da.min.js","bootstrap-datepicker.pt-BR.min.js","bootstrap-datepicker.nl.min.js","bootstrap-datepicker.fr.min.js","bootstrap-datepicker.it.min.js","bootstrap-datepicker.lt.min.js","bootstrap-datepicker.no.min.js","bootstrap-datepicker.es.min.js","bootstrap-datepicker.sv.min.js","dropzone.js","typeahead.jquery.js","accounting.js","spectrum.js","moment.js","moment-timezone-with-data.js","es6-promise.auto.js","sweetalert2.js","nouislider.js","mousetrap.js","fuse.js","bootstrap-combobox.js"],"names":["generatePDF","invoice","javascript","force","cb","refreshTimer","clearTimeout","setTimeout","calculateAmounts","pdfDoc","GetPdfMake","getDataUrl","copyObject","orig","JSON","parse","stringify","processVariables","str","variables","i","length","variable","regexp","RegExp","matches","match","j","offset","split","parseInt","replace","getDatePart","part","getMonth","getQuarter","getYear","today","Date","months","month","year","getFullYear","quarter","Math","floor","isStorageSupported","window","e","isValidEmailAddress","emailAddress","pattern","test","enableHoverClick","$combobox","$entityId","url","setAsLink","$input","enable","css","setComboboxValue","id","name","find","val","combobox","addClass","removeClass","convertDataURIToBinary","dataURI","base64Index","indexOf","BASE64_MARKER","base64","substring","base64DecToArr","getContactDisplayName","contact","first_name","last_name","$","trim","email","getClientDisplayName","client","contacts","populateInvoiceComboboxes","clientId","invoiceId","clientMap","invoiceMap","invoicesForClientMap","$clientSelect","invoices","hasOwnProperty","public_id","push","clients","append","Option","clientName","on","preventDefault","$invoiceCombobox","remove","end","list","invoice_number","invoice_status","formatMoneyInvoice","amount","balance","$invoiceSelect","$clientCombobox","parseFloat","toFixed","trigger","formatAddress","city","state","zip","swap","concatStrings","concatStr","data","arguments","string","total","hasTaxes","taxes","has_product_key","invoice_design_id","invoice_items","item","lineTotal","is_statement","roundToTwo","NINJA","cost","qty","taxRate1","taxName1","taxRate2","taxName2","product_key","tax_name1","tax_rate1","tax_name2","tax_rate2","discount","is_amount_discount","taxAmount1","key","rate","taxAmount2","subtotal_amount","custom_value1","custom_taxes1","custom_value2","custom_taxes2","total_amount","discount_amount","tax_amount1","tax_amount2","item_taxes","partial","balance_amount","objectEquals","x","y","Function","toString","undefined","valueOf","Object","p","keys","every","b64ToUint6","nChr","sBase64","nBlocksSize","nMod3","nMod4","sB64Enc","nInLen","nOutLen","ceil","taBytes","Uint8Array","nUint24","nOutIdx","nInIdx","charCodeAt","uint6ToB64","nUint6","base64EncArr","aBytes","nLen","nIdx","String","fromCharCode","substr","UTF8ArrToStr","nPart","sView","strToUTF8Arr","sDOMStr","nStrLen","nArrLen","nMapIdx","nChrIdx","hexToR","h","cutHex","hexToG","hexToB","charAt","setDocHexColor","doc","hex","r","g","b","setTextColor","setDocHexFill","setFillColor","setDocHexDraw","setDrawColor","toggleDatePicker","field","datepicker","num","round","roundToFour","truncate","endsWith","suffix","secondsToTime","secs","hours","divisor_for_minutes","minutes","divisor_for_seconds","seconds","obj","m","s","twoDigits","value","toSnakeCase","$1","toLowerCase","snakeToCamel","toUpperCase","getDescendantProp","desc","arr","shift","doubleDollarSign","actionListHandler","closest","mouseover","this","show","hide","mouseout","$dropdown","hasClass","loadImages","selector","each","index","src","attr","prettyJson","json","cls","searchData","fuzzy","q","options","fuse","Fuse","search","substrRegex","escapeRegExp","firstJSONError","subKey","pad","n","width","z","Array","join","callback","jsonCallBack","parts","node","table","body","widths","primaryColor","secondaryColor","features","customize_invoice_design","page","pages","account","all_pages_header","remove_created_by","updatePageCount","all_pages_footer","parseMarkdownText","addFont","font","ninjaFontVfs","folder","pdfMake","fonts","normal","italics","bold","bolditalics","decodeJavascript","dd","isEdge","footer","columns","image","logoImages","imageLogo1","alignment","margin","foundColumns","stack","imageLogo3","pageSize","page_size","invoiceFonts","invoice_fonts","defaultStyle","bodyFont","createPdf","save","fileName","download","global","factory","module","exports","document","w","Error","noGlobal","isArraylike","type","jQuery","isWindow","nodeType","winnow","elements","qualifier","not","isFunction","grep","elem","call","risSimple","filter","inArray","sibling","cur","dir","createOptions","object","optionsCache","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","rmultiDash","getAttribute","rbrace","parseJSON","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","dest","hasData","l","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","defaultSelected","selected","defaultValue","actualDisplay","style","appendTo","display","getDefaultComputedStyle","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","vendorPropName","capName","slice","origName","cssPrefixes","showHide","hidden","values","isHidden","setPositiveNumber","subtract","rnumsplit","max","augmentWidthOrHeight","extra","isBorderBox","styles","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","Tween","prop","easing","prototype","init","createFxNow","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","result","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","responses","firstDataType","ct","finalDataType","contents","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","error","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","class2type","hasOwn","version","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","pushStack","prevObject","args","first","eq","last","len","sort","splice","copyIsArray","copy","clone","isPlainObject","random","isReady","msg","isNumeric","ownLast","globalEval","execScript","makeArray","results","second","invert","callbackInverse","callbackExpect","arg","proxy","Sizzle","seed","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","qsaError","select","createCache","Expr","cacheLength","markFunction","assert","div","removeChild","addHandle","handler","attrHandle","siblingCheck","a","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","unloadHandler","els","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","targets","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","once","stopOnFalse","disable","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","raw","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","opener","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","padding","border","expanded","unit","propHooks","eased","step","linear","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","rclass","classes","clazz","finalValue","proceed","toggleClass","stateVal","classNames","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","requireNonComma","depth","comma","open","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","isLocal","processData","contentType","accepts","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","noConflict","focusable","element","isTabIndexNotNaN","mapName","img","datepicker_getZindex","isNaN","Datepicker","_curInst","_keyEvent","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","dateFormat","firstDay","isRTL","showMonthAfterYear","yearSuffix","_defaults","showOn","showAnim","showOptions","defaultDate","appendText","buttonText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","minDate","maxDate","beforeShowDay","beforeShow","onSelect","onChangeMonthYear","onClose","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","en","dpDiv","datepicker_bindHover","datepicker_handleMouseover","_isDisabledDatepicker","datepicker_instActive","inline","datepicker_extendRemove","spinner_modifier","previous","_refresh","_trigger","ui","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","scrollParent","includeHidden","excludeStaticParent","overflowRegex","uniqueId","uuid","removeUniqueId","dataName","tabbable","isTabIndexNaN","outerWidth","reduce","side","innerWidth","innerHeight","outerHeight","ie","navigator","userAgent","disableSelection","eventType","enableSelection","plugin","proto","plugins","instance","allowDisconnected","widget_uuid","widget_slice","widget","fullName","existingConstructor","basePrototype","proxiedPrototype","Widget","_createWidget","_proto","_childConstructors","_super","_superApply","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","_init","defaultElement","create","eventNamespace","bindings","hoverable","_on","destroy","_getCreateOptions","_create","_getCreateEventData","_destroy","curOption","_setOptions","_setOption","suppressDisabledCheck","delegateElement","handlerProxy","_off","_delay","_hoverable","_focusable","focusout","defaultEffect","effect","hasOptions","effectName","effects","mouseHandled","mouseup","cancel","distance","_mouseInit","that","_mouseDown","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","elIsCancel","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","documentMode","_mouseDrag","_mouseStop","abs","getOffsets","offsets","rpercent","parseCss","property","getDimensions","cachedScrollbarWidth","supportsOffsetFractions","rhorizontal","rvertical","roffset","_position","scrollbarWidth","w1","w2","innerDiv","clientWidth","getScrollInfo","within","isDocument","hasOverflowX","scrollWidth","hasOverflowY","getWithinInfo","withinElement","of","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","scrollInfo","collision","at","horizontalOffset","verticalOffset","collisionPosition","elemWidth","elemHeight","marginLeft","marginTop","collisionWidth","collisionHeight","myOffset","my","right","bottom","feedback","horizontal","vertical","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","newOverLeft","offsetLeft","newOverTop","offsetTop","flipfit","testElement","testElementParent","testElementStyle","background","collapsible","heightStyle","icons","activeHeader","activate","beforeActivate","hideProps","borderTopWidth","borderBottomWidth","paddingTop","paddingBottom","showProps","prevShow","prevHide","_processPanels","panel","_createIcons","_destroyIcons","_activate","_setupEvents","_keydown","altKey","ctrlKey","currentIndex","toFocus","_eventHandler","_panelKeyDown","refresh","prevHeaders","prevPanels","panels","maxHeight","_findActive","headerId","panelId","aria-selected","aria-expanded","aria-hidden","keydown","clicked","clickedIsActive","collapsing","toShow","toHide","eventData","oldHeader","oldPanel","newHeader","newPanel","_toggle","_animate","_toggleComplete","adjust","down","submenu","items","menus","role","activeMenu","mousedown .ui-menu-item","click .ui-menu-item","mouseenter .ui-menu-item","previousFilter","mouseleave .ui-menu","keepActiveItem","collapseAll","_closeOnDocumentClick","character","skip","previousPage","nextPage","_move","collapse","filterTimer","_filterMenuItems","icon","submenus","menu","submenuCarat","_isDivider","_itemRole","listbox","nested","focused","_scrollIntoView","_close","_startOpening","borderTop","scroll","elementHeight","itemHeight","_hasScroll","fromFocus","_open","currentMenu","startMenu","newItem","isFirstItem","isLastItem","direction","escapedCharacter","regex","autoFocus","minLength","requestIndex","pending","suppressKeyPress","suppressKeyPressRepeat","suppressInput","isTextarea","isInput","isMultiLine","valueMethod","isNewMenu","_value","term","_searchTimeout","keypress","selectedItem","cancelBlur","searching","_change","_initSource","_appendTo","mousedown","menuElement","menufocus","label","liveRegion","menuselect","aria-live","aria-relevant","array","request","autocomplete","equalValues","menuVisible","modifierKey","shiftKey","_search","cancelSearch","_response","__response","_normalize","_suggest","ul","_renderMenu","_resizeMenu","_renderItemData","_renderItem","keyEvent","escapeRegex","messages","noResults","message","lastActive","baseClasses","typeClasses","formResetHandler","radioGroup","radios","primary","secondary","_determineButtonType","hasTitle","buttonElement","toggleButton","activeClass","keyup","_resetButton","ancestor","labelSelector","isDisabled","multipleIcons","buttonClasses","buttons","rtl","allButtons","existingButtons","markerClassName","maxRows","_widgetDatepicker","setDefaults","_attachDatepicker","inst","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","alt","title","_lastInput","_hideDatepicker","findMax","maxI","date","names","setMonth","setDate","getDay","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","browserWidth","browserHeight","scrollX","scrollY","_dialogInst","_dialogInput","_pos","clientHeight","blockUI","_destroyDatepicker","$target","_enableDatepicker","cursor","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","noDefault","_setDateFromField","_getDate","dateStr","handled","_selectDay","_adjustDate","_clearDate","_gotoToday","chars","chr","_possibleChars","lastVal","parseDate","_getFormatConfig","beforeShowSettings","isFixed","_findPos","_checkOffset","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","cols","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","viewHeight","min","postProcess","_tidyDialog","unblockUI","_checkExternalClick","period","_adjustInstDate","currentDay","currentMonth","currentYear","getDate","_notifyChange","_selectMonthYear","_selectDate","formatDate","noWeekends","day","checkDate","getTime","format","iFormat","dim","iValue","shortYearCutoffTemp","doy","literal","lookAhead","getNumber","isDoubled","minSize","digits","getName","shortNames","longNames","k","pair","checkLiteral","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","ISO_8601","RFC_822","RFC_850","RFC_1036","RFC_1123","RFC_2822","RSS","TICKS","TIMESTAMP","W3C","formatNumber","formatName","output","dates","_restrictMinMax","_determineDate","offsetNumeric","offsetString","newDate","setHours","setMinutes","setSeconds","setMilliseconds","getHours","noChange","clear","origMonth","origYear","startDate","selectDay","selectMonth","selectYear","maxDraw","gotoDate","controls","buttonPanel","dow","row","group","selectedDate","cornerClass","calender","daysInMonth","leadDays","curRows","numRows","printDate","dRow","daySettings","otherMonth","unselectable","tempDate","isMultiMonth","currentDate","_canAdjustMonth","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","inMinYear","inMaxYear","years","thisYear","determineYear","endYear","monthHtml","onChange","minMax","curYear","curMonth","yearSplit","minYear","maxYear","initialized","otherArgs","mouse","addClasses","axis","connectToSortable","containment","cursorAt","grid","helper","iframeFix","refreshPositions","revert","revertDuration","scope","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","drag","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","o","_blurActiveElement","_getHandle","_blockFrames","iframeBlocks","_unblockFrames","handleElement","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","cssPosition","hasFixedAncestor","positionAbs","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","_clear","dropBehaviour","prepareOffsets","_normalizeRightBottom","dragStart","margins","_getParentOffset","_getRelativeOffset","noPropagation","_convertPositionTo","_uiHash","dropped","drop","dragStop","helperIsFunction","helperProportions","_isRootNode","tagName","po","scrollIsRootNode","isUserScrollable","c","ce","relativeContainer","d","mod","constrainPosition","co","cancelHelperRemoval","draggable","uiSortable","sortables","sortable","isOver","_storedCSS","placeholder","_helper","innermostIntersecting","_intersectsWith","containerCache","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","scrolled","snapElements","$t","$o","ts","bs","ls","x1","x2","y1","y2","snapping","release","snapItem","_zIndex","alsoResize","animateDuration","animateEasing","aspectRatio","autoHide","ghost","handles","minHeight","resize","_num","_isNumber","hname","_aspectRatio","originalElement","_proportionallyResizeElements","resizable","elementIsWrapper","marginBottom","originalResizeStyle","_proportionallyResize","se","sw","ne","nw","_renderAxis","padPos","padWrapper","_handles","resizing","wrapper","exp","capture","curleft","curtop","_renderProxy","originalSize","sizeDiff","originalMousePosition","_propagate","smp","dx","dy","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","pr","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","Infinity","_vBoundaries","cpos","csize","ismaxw","ismaxh","isminw","isminh","dw","dh","cw","ch","_getPaddingPlusBorderDimensions","borders","paddings","prel","outerDimensions","elementOffset","cs","sp","oc","containerElement","containerOffset","containerPosition","parentData","containerSize","woset","hoset","isParent","isOffsetRelative","cp","pRatio","cop","continueResize","ho","_store","os","op","delta","_alsoResize","sum","gridX","gridY","ox","oy","newWidth","newHeight","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","autoOpen","closeOnEscape","dialogClass","modal","topOffset","beforeClose","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_destroyOverlay","_focusedElement","_untrackInstance","_hide","isOpen","moveToTop","_moveToTop","silent","moved","zIndicies","zIndexMax","_focusTabbable","_size","_createOverlay","overlay","_show","_makeFocusTarget","uiDialogButtonPane","uiDialogTitlebarClose","_keepFocus","checkFocus","isActive","tabbables","aria-describedby","uiDialogTitle","uiDialogTitlebar","_title","aria-labelledby","uiButtonSet","_createButtons","buttonOptions","showText","filteredUi","resizeHandles","_minHeight","_trackingInstances","instances","exists","isVisible","resizableOptions","isDraggable","isResizable","nonContentHeight","minContentHeight","maxContentHeight","_allowInteraction","isOpening","overlays","accept","greedy","hoverClass","tolerance","deactivate","out","over","proportions","isover","isout","_addToManager","droppables","_splice","_deactivate","_over","_out","_drop","custom","childrenIntersection","droppable","intersect","isOverAxis","reference","toleranceMode","absolute","default","droppablesLoop","greedyChild","parentInstance","intersects","dataSpace","clamp","allowEmpty","propTypes","def","stringParse","color","rgba","_rgba","stringParsers","parser","re","spaceName","space","spaces","colors","transparent","hue2rgb","stepHooks","rplusequals","execResult","Color","green","blue","alpha","red","hsla","hue","saturation","lightness","byte","degrees","supportElem","backgroundColor","from","same","localCache","isCache","_space","used","transition","other","startColor","startValue","endValue","blend","opaque","rgb","toRgbaString","toHslaString","toHexString","includeAlpha","local","vtype","_hsla","hook","colorInit","borderColor","aqua","black","fuchsia","gray","lime","maroon","navy","olive","purple","silver","teal","white","yellow","getElementStyles","styleDifference","oldStyle","newStyle","shorthandStyles","classAnimationActions","borderBottom","borderLeft","borderRight","borderWidth","setAttr","animateClass","applyClassChange","baseClass","allAnimations","action","styleInfo","dfd","switchClass","_normalizeArguments","standardAnimationOption","restore","setMode","mode","getBaseline","origin","createWrapper","fontSize","removeWrapper","setTransition","factor","cssUnit","effectMethod","baseEasings","pow","Sine","Circ","sqrt","Elastic","sin","Back","Bounce","pow2","bounce","easeIn","blind","rpositivemotion","ref","ref2","motion","upAnim","downAnim","times","anims","queuelen","clip","vert","explode","childComplete","pieces","rows","cells","animComplete","mx","fade","fold","horizFirst","widthFirst","animation1","animation2","highlight","backgroundImage","baseline","props0","props1","props2","cProps","vProps","hProps","zero","c_original","toRef","puff","pulsate","showhide","animateTo","shake","positiveMotion","slide","transfer","targetFixed","fixTop","fixLeft","endPosition","startPosition","oldValue","_constrainedValue","aria-valuemin","valueDiv","_refreshValue","newValue","indeterminate","_percentage","percentage","overlayDiv","aria-valuemax","aria-valuenow","autoRefresh","selecting","unselected","unselecting","selectees","dragged","$this","$element","startselected","opos","selectee","doSelect","hit","selectmenuId","ids","_drawButton","_drawMenu","aria-autocomplete","aria-owns","aria-haspopup","_setText","_resizeButton","_buttonEvents","menuItems","_refreshMenu","menuWrap","menuInstance","_setSelection","_select","focusIndex","_getSelectedItem","_parseOptions","_setAria","_toggleAttr","_documentClick","range","menuWidget","currentOptgroup","li","getSelection","removeAllRanges","addRange","rangeCount","getRangeAt","createRange","_selectFocusedItem","oldIndex","aria-activedescendant","orientation","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_createRange","_createHandles","handleCount","existingHandles","_valueMin","_handleEvents","normValue","closestHandle","allowed","mouseOverHandle","elementSize","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_start","_clickOffset","_slide","_stop","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","uiHash","newVal","otherVal","newValues","vals","_values","valsLength","valModStep","alignValue","remainder","lastValPercent","valPercent","valueMin","valueMax","oRange","_set","curVal","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","beforeStop","receive","update","_isOverAxis","_isFloating","floating","overrideHandle","validHandle","reverting","_refreshItems","_removeCurrentsFromItems","noActivation","currentContainer","domPosition","_createPlaceholder","storedCursor","storedStylesheet","_storedOpacity","_storedZIndex","_preserveHelperProportions","containers","dragging","itemElement","intersection","lastPositionAbs","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","_getItemsAsjQuery","connected","res","attribute","expression","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","verticalDirection","_getDragVerticalDirection","horizontalDirection","_getDragHorizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","addItems","queries","targetData","_queries","queriesLength","toleranceElement","refreshContainers","dist","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","hardRefresh","counter","delayEvent","delayedTriggers","_inst","sender","culture","up","incremental","numberFormat","spin","_draw","_events","mousewheel","spinning","_spin","mousewheelTimer","mousedown .ui-spinner-button","_repeat","mouseup .ui-spinner-button","mouseenter .ui-spinner-button","mouseleave .ui-spinner-button","uiSpinner","_uiSpinnerHtml","_buttonHtml","steps","_adjustValue","_increment","_precision","precision","_precisionOf","decimal","aboveMin","prevValue","_parse","_format","Globalize","isValid","allowAny","stepUp","_stepUp","stepDown","_stepDown","pageUp","pageDown","beforeLoad","_isLocal","anchor","anchorUrl","locationUrl","decodeURIComponent","running","_processTabs","_initialActive","tabs","anchors","locationHash","tab","_getPanelForTab","_tabKeydown","focusedTab","goingForward","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","constrain","lastTabIndex","_setupDisabled","_setupHeightStyle","_sanitizeSelector","lis","tablist","prevTabs","prevAnchors","_getList","anchorId","originalAriaControls","_createPanel","aria-controls","oldTab","newTab","_getIndex","_ajaxSettings","tooltipClass","track","_addDescribedBy","describedby","_removeDescribedBy","tooltips","_disable","tooltipData","_updateContent","_enable","blurEvent","contentOption","positionOption","tooltip","delayedShow","a11yContent","_find","_tooltip","mousemove","fakeEvent","_removeTooltip","closing","hiding","transitionEnd","transEndEventNames","WebkitTransition","MozTransition","OTransition","emulateTransitionEnd","called","$el","bsTransitionEnd","Plugin","Alert","dismiss","VERSION","TRANSITION_DURATION","removeElement","$parent","alert","Constructor","Button","setState","DEFAULTS","isLoading","loadingText","resetText","changed","$btn","Carousel","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","getItemIndex","getItemForDirection","activeIndex","itemIndex","$next","isCycling","fallback","slideEvent","$nextIndicator","slidEvent","carousel","clickHandler","slideIndex","$carousel","getTargetFromTrigger","$trigger","Collapse","transitioning","getParent","addAriaAndCollapsedClass","dimension","hasWidth","activesData","actives","startEvent","scrollSize","clearMenus","backdrop","Dropdown","dropdown","_relatedTarget","Modal","$body","$backdrop","isShown","remote","BACKDROP_TRANSITION_DURATION","checkScrollbar","setScrollbar","escape","adjustBackdrop","adjustDialog","enforceFocus","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","modalIsOverflowing","paddingLeft","bodyIsOverflowing","paddingRight","measureScrollbar","bodyPad","scrollDiv","showEvent","Tooltip","hoverState","placement","template","viewport","getOptions","$viewport","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","defaults","$tip","inDom","tip","tipId","getUID","setContent","autoToken","autoPlace","getPosition","actualWidth","actualHeight","orgPlacement","$container","containerDim","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","isHorizontal","arrow","getTitle","$e","isBody","elRect","elOffset","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","$arrow","toggleEnabled","Popover","getContent","popover","ScrollSpy","process","$scrollElement","activeTarget","getScrollHeight","offsetMethod","offsetBase","$href","maxScroll","scrollspy","$spy","Tab","$ul","$previous","hideEvent","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetBottom","initializing","colliderTop","colliderHeight","getPinnedOffset","affix","affixType","require","dataTable","_fnHungarianMap","newKey","hungarian","_hungarianMap","_fnCamelToHungarian","user","hungarianKey","_fnLanguageCompat","DataTable","oLanguage","zeroRecords","sZeroRecords","sEmptyTable","_fnMap","sLoadingRecords","sInfoThousands","sThousands","sDecimal","_addNumericSort","_fnCompatOpts","_fnCompatMap","searchCols","aoSearchCols","ien","models","oSearch","_fnCompatCols","_fnBrowserDetect","browser","oBrowser","bScrollOversize","bScrollbarLeft","_fnReduce","inc","isSet","_fnAddColumn","oSettings","nTh","oDefaults","column","iCol","aoColumns","oCol","oColumn","sTitle","aDataSort","mData","aoPreSearchCols","_fnColumnOptions","oOptions","oClasses","sWidthOrig","mDataProp","sType","_sManualType","sClass","iDataSort","mDataSrc","_fnGetObjectDataFn","mRender","attrTest","_bAttrSrc","fnGetData","rowData","meta","innerData","fnSetData","_fnSetObjectDataFn","_rowReadObject","oFeatures","bSort","bSortable","sSortableNone","bAsc","asSorting","bDesc","sSortingClass","sSortableAsc","sSortingClassJUI","sSortJUIAscAllowed","sSortableDesc","sSortJUIDescAllowed","sSortable","sSortJUI","_fnAdjustColumnSizing","bAutoWidth","_fnCalculateColumnWidths","iLen","sWidth","oScroll","sY","sX","_fnScrollDraw","_fnCallbackFire","_fnVisibleToColumnIndex","iMatch","aiVis","_fnGetColumns","_fnColumnIndexToVisible","iPos","_fnVisbleColumns","sParam","_fnColumnTypes","jen","ken","detectedType","aoData","ext","detect","_fnGetCellData","_fnApplyColumnDefs","aoColDefs","aoCols","jLen","kLen","aTargets","_fnAddData","aDataIn","nTr","anTds","iRow","oData","oRow","_aData","_fnSetCellData","aiDisplayMaster","bDeferRender","_fnCreateTr","_fnAddTr","trs","_fnGetRowElements","_fnNodeToDataIndex","_DT_RowIndex","_fnNodeToColumnIndex","anCells","rowIdx","colIdx","draw","iDraw","defaultContent","sDefaultContent","cellData","iDrawError","_fnLog","_fnSplitObjNotation","mSource","fetchData","arrayNotation","funcNotation","innerSrc","__reArray","__reFn","setData","aLast","_fnGetDataMaster","_pluck","_fnClearTable","aiDisplay","_fnDeleteIndex","iTarget","iTargetIndex","_fnInvalidate","cellWrite","cell","_aSortData","_aFilterData","_fnRowAttributes","tds","objectRead","cellProcess","_setter","nTrIn","nTd","sCellType","bVisible","fnCreatedCell","oInstance","DT_RowId","DT_RowClass","__rowc","_unique","DT_RowData","_fnBuildHead","nTHead","nTFoot","createHeader","iTabIndex","sTableId","_fnSortAttachListener","_fnRenderer","_fnDetectHeader","aoHeader","sHeaderTH","sFooterTH","aoFooter","nTf","_fnDrawHead","aoSource","bIncludeHidden","nLocalTr","iRowspan","iColspan","aoLocal","aApplied","iColumns","_fnDraw","aPreDraw","_fnProcessingDisplay","anRows","iRowCount","asStripeClasses","iStripes","oLang","aoOpenRows","iInitDisplayStart","bServerSide","_fnDataSource","bDrawing","_iDisplayStart","fnRecordsDisplay","iDisplayStart","iDisplayEnd","fnDisplayEnd","bDeferLoading","bDestroying","_fnAjaxUpdate","iStart","iEnd","iDataIndex","nRow","sStripe","_sRowStripe","sZero","fnRecordsTotal","valign","colSpan","sRowEmpty","nTBody","bSorted","bFiltered","_fnReDraw","holdPosition","bFilter","_fnSort","_fnFilterComplete","oPreviousSearch","_drawHold","_fnAddOptionsHtml","nTable","holding","sWrapper","sNoFooter","nHolding","nTableWrapper","nTableReinsertBefore","featureNode","cOption","nNewNode","cNext","sAttr","aDom","sDom","sJUIHeader","sJUIFooter","aSplit","bPaginate","bLengthChange","_fnFeatureHtmlLength","_fnFeatureHtmlFilter","bProcessing","_fnFeatureHtmlProcessing","_fnFeatureHtmlTable","bInfo","_fnFeatureHtmlInfo","_fnFeatureHtmlPaginate","feature","aoFeatures","cFeature","fnInit","aanFeatures","aLayout","nThead","nCell","iColShifted","iColumn","bUnique","nTrs","fnShiftCol","_fnGetUniqueThs","nHeader","aReturn","bSortCellsTop","_fnBuildAjax","ajaxData","newData","baseAjax","sError","oApi","sServerMethod","thrown","log","oAjaxData","fnServerData","sAjaxSource","bAjaxDataGet","_fnAjaxParameters","_fnAjaxUpdateDraw","dataProp","columnSearch","preSearch","preColSearch","_fnSortFlatten","displayStart","displayLength","_iDisplayLength","sSearch","bRegex","sName","searchable","bSearchable","orderable","legacy","compat","modern","recordsTotal","recordsFiltered","_iRecordsTotal","_iRecordsDisplay","_fnAjaxDataSrc","_bInitComplete","_fnInitComplete","dataSrc","sAjaxDataProp","aaData","tableId","language","previousSearch","sFilterInput","f","sFilter","searchFn","bSmart","bCaseInsensitive","searchDelay","jqFilter","sSearchPlaceholder","_fnThrottle","ev","oInput","iForce","oPrevSearch","aoPrevSearch","fnSaveFilter","oFilter","fnRegex","bEscapeRegex","_fnFilter","_fnFilterColumn","_fnFilterCustom","displayRows","searchStr","smart","caseInsensitive","rpSearch","_fnFilterCreateSearch","invalidated","prevSearch","displayMaster","_fnFilterData","_sFilterRow","_fnEscapeRegex","word","sVal","_re_escape_regex","filterData","fomatters","wasInvalidated","__filter_div","__filter_div_textContent","_fnSearchToCamel","_fnSearchToHung","tid","sInfo","aoDrawCallback","_fnUpdateInfo","sInfoEmpty","sInfoFiltered","sInfoPostFix","_fnInfoMacros","fnInfoCallback","formatter","fnFormatNumber","vis","_fnInitialise","iAjaxStart","bInitialised","_fnStringToCss","aData","_fnLengthChange","_fnLengthOverflow","aLengthMenu","d2","lengths","sLengthSelect","sLength","sLengthMenu","sPaginationType","pager","redraw","sPaging","visRecords","fnUpdate","_fnPageChange","records","sProcessing","captionSide","_captionSide","headerClone","footerClone","_div","scroller","sScrollWrapper","sScrollHead","sScrollHeadInner","box-sizing","sXInner","sScrollBody","sScrollFoot","sScrollFootInner","scrollHead","scrollBody","scrollFoot","nScrollHead","nScrollBody","nScrollFoot","headerTrgEls","footerTrgEls","headerSrcEls","footerSrcEls","headerCopy","footerCopy","correction","sanityWidth","scrollXInner","barWidth","iBarWidth","divHeader","divHeaderStyle","divHeaderInner","divHeaderInnerStyle","divHeaderTable","divBodyEl","divBody","divBodyStyle","divFooter","divFooterInner","divFooterTable","tableEl","tableStyle","ie67","headerWidths","footerWidths","headerContent","zeroOut","nSizer","_fnApplyToChildren","bCollapse","nToSize","iExtra","iOuterWidth","bScrolling","an1","an2","nNode1","nNode2","columnIdx","visibleColumns","headerCells","tableWidthAttr","tableContainer","userInputs","_fnConvertToWidth","tmpTable","_fnGetWidestNode","sContentPadding","_fnScrollingWidthAdjust","_reszEvt","sInstance","freq","frequency","_fnGetMaxLenString","maxIdx","__re_html_remove","_fnScrollBarWidth","__scrollbarWidth","inner","outer","srcCol","aSort","fixed","aaSortingFixed","fixedObj","nestedSort","pre","aaSorting","post","_idx","sortCol","aiOrig","oExtSort","formatters","_fnSortData","dataA","dataB","_fnSortAria","nextSort","oAria","sSortAscending","sSortDescending","_fnSortListener","nextSortIdx","sorting","bSortMulti","sortIdx","attachTo","_fnBindAction","_fnSortingClasses","oldSort","aLastSort","sortClass","sSortColumn","bSortClasses","customData","customSort","sSortDataType","_fnSaveState","bStateSave","oSavedState","fnStateSaveCallback","_fnLoadState","oInit","fnStateLoadCallback","abStateLoad","iStateDuration","oLoadedState","_fnSettingsFromNode","level","tn","console","sErrMode","errMode","mappedName","_fnExtend","extender","breakRefs","_fnCallbackReg","sStore","callbackArr","renderer","host","_numbers","numbers","extPagination","numbers_length","half","_range","DT_el","decimalPlace","__numericReplace","num-fmt","_re_formatted_numeric","html-num","_re_html","html-num-fmt","_ext","_fnExternApiFunc","iApiIndex","internal","_Api","_api_register","_api_registerPlural","_re_dic","_re_new_lines","_re_date_start","_re_date_end","_empty","_intVal","integer","isFinite","_numToDecimal","decimalPoint","formatted","strType","_isHtml","_htmlNumeric","_stripHtml","prop2","_pluck_order","_removeEmpty","again","knew","sSelector","oOpts","api","fnAddData","flatten","fnAdjustColumnSizing","bRedraw","fnClearTable","fnClose","fnDeleteRow","fnDestroy","fnDraw","fnFilter","sInput","bShowGlobal","fnGetNodes","fnGetPosition","columnVisible","fnIsOpen","fnOpen","mHtml","fnPageChange","mAction","fnSetColumnVis","bShow","fnSettings","fnSort","aaSort","fnSortListener","nNode","fnCallback","listener","mRow","bAction","fnVersionCheck","_that","emptyInit","sId","bInitHandedOff","allSettings","bRetrieve","bDestroy","sDestroyWidth","iDisplayLength","fnDrawCallback","fnServerParams","fnStateSaveParams","fnStateLoadParams","fnStateLoaded","fnRowCallback","fnCreatedRow","fnHeaderCallback","fnFooterCallback","fnInitComplete","fnPreDrawCallback","bJQueryUI","oJUIClasses","sTable","iDeferLoading","sUrl","sStripeOdd","sStripeEven","stripeClasses","rowOne","asDestroyStripes","aoColumnsInit","anThs","aoColumnDefs","oDef","sortedColumns","captions","__apiStruct","__arrayProto","_toSettings","mixed","jq","tables","ctxSettings","Api","ctx","iterator","alwaysNew","apiInst","_selector_row_indexes","apiSelector","lastIndexOf","pluck","reduceRight","to$","toJQuery","__dt_wrapper","struct","methodScoping","struc","methodExt","propExt","register","heir","registerPlural","pluralName","singularName","__table_selector","resetPaging","info","recordsDisplay","__reload","_selector_run","selectorType","_selector_opts","_selector_first","displayFiltered","__row_selector","selInt","thatIdx","newRows","modRows","__details_add","klass","addRow","created","_details","_detailsShow","__details_remove","__details_display","__details_events","drawEvent","colvisEvent","destroyEvent","_emp","_child_obj","_child_mth","__re_column_selector","__columnData","r1","r2","__column_selector","visColumns","__setColumnVis","recalc","calc","__cell_selector","allCells","fnSelector","rowSelector","columnSelector","caseInsen","versionCheck","iThis","iThat","aThis","aThat","isDataTable","fnIsDataTable","fnTables","util","throttle","camelToHungarian","jqRows","jqTable","jqTbody","jqWrapper","bJUI","sSortIcon","sSortJUIWrapper","bScrollCollapse","toFormat","sessionStorage","localStorage","getItem","pathname","setItem","oPaginate","sFirst","sLast","sNext","sPrevious","sScrollX","sScrollXInner","sScrollY","aoRowCallback","aoHeaderCallback","aoFooterCallback","aoRowCreatedCallback","aoPreDrawCallback","aoInitComplete","aoStateSaveParams","aoStateLoadParams","aoStateLoaded","aoStateSave","aoStateLoad","aoServerParams","aoDestroyCallback","paginate","oPlugins","pageButton","sVersion","afnFiltering","aTypes","ofnSearch","oSort","afnSortData","oStdClasses","oPagination","sPageButton","sPageButtonActive","sPageButtonDisabled","sSortAsc","sSortDesc","sSortJUIAsc","sSortJUIDesc","_stateDefault","_sortIcon","_headerFooter","full","simple_numbers","full_numbers","btnDisplay","btnClass","attach","data-dt-idx","activeEl","re1","re2","date-pre","html-pre","string-pre","string-asc","string-desc","jqueryui","render","number","thousands","negative","intPart","floatPart","_fnCalculateEnd","dataTableSettings","dataTableExt","sIconClassFirst","sIconClassLast","sIconClassPrevious","sIconClassNext","fnPagingInfo","iLength","iTotal","iFilteredTotal","iPage","iTotalPages","bs_normal","nPaging","fnClickHandler","iListLength","oPaging","an","iHalf","bs_two_button","fnCallbackDraw","sAppend","sPagePrevDisabled","sPageNextDisabled","nPrevious","nNext","bs_four_button","sPageFirst","sPagePrevious","sPageNext","sPageLast","nFirst","nPrev","nLast","bs_full","iStartButton","iEndButton","iPageCount","iFullNumbersShowPages","iPageCountHalf","iPages","iCurrentPage","sList","hasChildNodes","TableTools","print","oTags","liner","A","eval","K","C","ko","G","M","N","O","H","ba","ca","fa","lb","U","gb","da","controlsDescendantBindings","aa","Q","__proto__","MouseEvents","propertychange","mb","hb","ma","ib","ya","la","Y","Sa","na","ra","sa","Oa","Fa","removeNode","ec","R","Bb","ea","Db","ta","kc","Sb","Ea","eb","B","u","ja","ha","createEvent","dispatchEvent","initEvent","fireEvent","ua","Xa","Vb","Cb","mergeAttributes","Tb","ic","mc","nc","oa","ob","fc","Ya","gc","includeFields","D","submitter","L","cleanExternalData","1","8","9","Ab","Qa","clean","innerShiv","Va","xb","Rb","cc","Na","Hb","Ib","Ga","throttleEvaluation","read","rateLimit","Ma","equalityComparer","boolean","Fb","za","Qb","sb","F","V","notifySubscribers","qb","jb","ia","bb","Ka","Wb","tb","zb","Kb","pa","P","E","hc","Ha","ub","Yb","T","trackArrayChanges","removeAll","destroyAll","kb","I","Aa","sparse","subscribe","nb","wa","disposeWhenNodeIsRemoved","disposeWhen","Da","owner","ga","deferEvaluation","$b","Number","Boolean","ab","Gb","__ko__hasDomDataOptionValue__","Pa","X","unknown","in","return","typeof","W","Ra","qa","getBindingHandler","preprocess","valueAccessors","bc","va","ol","yb","rb","Xb","lc","wb","J","Nb","nodeHasBindings","getBindings","getBindingsString","parseBindingsString","getBindingAccessors","preprocessNode","shouldBindDescendants","pb","Eb","$data","$parents","$root","$rawData","Jb","createChildContext","$parentContext","xa","Lb","fb","Ca","Pb","uniqueName","checkedValue","__ko__cssValue","foreach","vb","as","includeDestroyed","afterAdd","beforeRemove","afterRender","beforeMove","afterMove","templateEngine","Ja","hasfocus","__ko_hasfocusUpdating","__ko_hasfocusLastValue","multiple","Ua","selectedOptions","Ob","renderTemplateSource","createJavaScriptEvaluatorBlock","makeTemplateSource","Z","renderTemplate","isTemplateRewritten","allowTemplateRewriting","rewriteTemplate","Za","Ub","dc","Mb","$a","Ba","previousSibling","Wa","Ta","jc","$index","ifnot","dontLimitMoves","S","Ia","ka","Zb","La","ac","tmpl","koBindingContext","templateOptions","fragments","addTemplate","ko_code","ko_with","mapping","getType","ignore","include","observe","mappedProperties","copiedProperties","utils","arrayGetDistinctValues","unwrapObservable","isMapped","dependentObservable","isWriteableObservable","arrayRemoveItem","__DO","observable","isObservable","observableArray","mappedRemove","mappedRemoveAll","arrayIndexOf","mappedDestroy","mappedDestroyAll","mappedIndexOf","mappedGet","mappedCreate","compareArrays","arrayChanged","arrayForEach","arrayMap","fromJS","fromJSON","parseJson","updateFromJS","updateFromJSON","toJS","resetDefaultOptions","visitModel","stringifyJson","defaultOptions","visitedObjects","parentName","ITEMKEY","INDEXKEY","LISTKEY","PARENTKEY","DRAGKEY","dataGet","domData","dataSet","hasNestedSortableFix","addMetaDataAfterRender","prepareTemplateOptions","valueAccessor","actualAfterRender","bindingHandlers","updateIndexFromDestroyedItems","unwrapped","stripTemplateWhitespace","templateSource","templateElement","templateSources","domElement","allBindingsAccessor","startActual","updateActual","connectClass","allowDrop","shouldAdd","toggleDomNodeCssClass","createTimeout","dragItem","sourceParent","targetParent","targetIndex","parentEl","sourceParentNode","cancelDrop","processAllDeferredBindingUpdates","isEnabled","domNodeDisposal","addDisposeCallback","draggableOptions","previousUnderscore","ArrayProto","ObjProto","FuncProto","nativeIsArray","nativeKeys","nativeBind","_wrapped","createCallback","argCount","accumulator","iteratee","identity","isObject","forEach","collect","currentKey","reduceError","foldl","inject","memo","TypeError","foldr","predicate","some","negate","any","invoke","isFunc","where","findWhere","lastComputed","shuffle","rand","shuffled","sample","guard","sortBy","criteria","behavior","groupBy","indexBy","countBy","sortedIndex","low","mid","partition","pass","take","initial","rest","tail","compact","shallow","strict","isArguments","without","difference","uniq","isSorted","isBoolean","seen","union","argsLength","Ctor","bound","boundArgs","bindAll","memoize","hasher","address","later","leading","trailing","debounce","immediate","timestamp","callNow","compose","pairs","functions","methods","pick","omit","tap","interceptor","aStack","bStack","aCtor","bCtor","isEqual","isEmpty","isString","isElement","isNumber","isNull","isUndefined","constant","accum","escapeMap","&","<","\"","'","`","unescapeMap","createEscaper","escaper","testRegexp","replaceRegexp","unescape","idCounter","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","oldSettings","chain","_chain","mixin","UTCDate","UTC","UTCToday","isUTCEquals","date1","date2","getUTCFullYear","getUTCMonth","getUTCDate","alias","opts_from_el","re_lower","inkey","opts_from_locale","locale_opts","DateArray","extras","new_array","_process_options","viewDate","defaultViewDate","focusDate","isInline","component","hasInput","picker","DPGlobal","_buildEvents","_attachEvents","viewMode","startView","calendarWeeks","_allow_update","setStartDate","_o","setEndDate","endDate","setDaysOfWeekDisabled","daysOfWeekDisabled","setDatesDisabled","datesDisabled","fillDow","fillMonths","showMode","minViewMode","multidate","multidateSeparator","weekStart","weekEnd","parseFormat","_local_to_utc","_zero_time","plc","_plc","showOnFocus","_secondaryEvents","_applyEvents","evs","_unapplyEvents","_focused_from","place","mousedown touchstart","_detachEvents","_attachSecondaryEvents","_detachSecondaryEvents","altdate","local_date","_utc_to_local","ix","enableOnReadonly","msMaxTouchPoints","disableTouchKeyboard","forceParse","setValue","utc","getTimezoneOffset","_zero_utc_time","getDates","getUTCDates","selected_date","clearDates","autoclose","setDates","setUTCDates","setUTCDate","getFormattedDate","updateNavArrows","calendarWidth","calendarHeight","visualPadding","windowWidth","windowHeight","appendOffset","parentsZindex","itemZIndex","top_overflow","bottom_overflow","yorient","oldDates","fromArgs","fill","dowCnt","daysMin","monthsShort","setRange","getClassNames","todayHighlight","getUTCDay","startYear","startMonth","endMonth","todaytxt","cleartxt","todayBtn","clearBtn","prevMonth","getDaysInMonth","nextMonth","clsName","ws","yth","calWeek","beforeShowMonth","moDate","yearCont","modes","navStep","moveMonth","moveYear","setUTCMonth","setUTCFullYear","_toggle_multidate","toggleActive","new_month","new_date","mag","dateWithinRange","newViewDate","dateChanged","keyboardNavigation","DateRangePicker","inputs","datepickerPlugin","dateUpdated","pickers","updateDates","updateRanges","updating","dp","internal_return","elopts","xopts","locopts","ropts","days","daysShort","navFnc","isLeapYear","validParts","nonpunctuation","separators","match_part","part_re","filtered","setters_order","setters_map","yyyy","yy","fparts","cnt","_date","DD","MM","mm","seps","headTemplate","contTemplate","footTemplate","de","nl","fr","it","no","es","sv","Dropzone","Emitter","camelize","contentLoaded","detectVerticalSquash","drawImageIOSFix","__slice","__hasProp","__extends","ctor","__super__","_callbacks","emit","callbacks","_i","_len","removeListener","removeAllListeners","elementOptions","_ref","previewTemplate","clickableElements","listeners","files","querySelector","dropzone","optionsForElement","forceFallback","isBrowserSupported","acceptedFiles","acceptedMimeTypes","getExistingFallback","previewsContainer","getElement","clickable","getElements","resolveOption","withCredentials","parallelUploads","uploadMultiple","maxFilesize","paramName","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","filesizeBase","maxFiles","ignoreHiddenFiles","autoProcessQueue","autoQueue","addRemoveLinks","hiddenInputContainer","renameFilename","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","messageElement","span","getFallbackForm","srcRatio","trgRatio","srcX","srcY","srcWidth","srcHeight","optWidth","optHeight","trgHeight","trgWidth","classList","dragstart","dragend","dragenter","dragover","dragleave","paste","addedfile","removeFileEvent","removeLink","_j","_k","_len1","_len2","_ref1","_ref2","_results","previewElement","_renameFilename","filesize","_removeLink","_this","UPLOADING","confirm","removeFile","removedfile","_updateMaxFilesReachedClass","thumbnail","dataUrl","thumbnailElement","errormultiple","processing","processingmultiple","uploadprogress","bytesSent","totaluploadprogress","sending","sendingmultiple","successmultiple","canceled","canceledmultiple","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","objects","getAcceptedFiles","accepted","getRejectedFiles","getFilesWithStatus","getQueuedFiles","QUEUED","getUploadingFiles","getAddedFiles","ADDED","getActiveFiles","setupHiddenFileInput","hiddenFileInput","addFile","URL","webkitURL","updateTotalUploadProgress","efct","dataTransfer","effectAllowed","_error","dropEffect","clickableElement","evt","elementInside","removeAllFiles","activeFiles","totalBytes","totalBytesSent","totalUploadProgress","upload","_getParamName","existingFallback","fields","fieldsString","getFallback","setupEventListeners","elementListeners","_results1","removeEventListeners","cancelUpload","cutoff","selectedSize","selectedUnit","units","webkitGetAsEntry","_addFilesFromItems","handleFiles","clipboardData","entry","isFile","getAsFile","isDirectory","_addFilesFromDirectory","kind","directory","path","dirReader","errorHandler","readEntries","createReader","entries","fullPath","isValidFile","_enqueueThumbnail","_errorProcessing","enqueueFile","enqueueFiles","processQueue","_thumbnailQueue","_processingThumbnail","_processThumbnailQueue","createThumbnail","cancelIfNecessary","fileReader","FileReader","createThumbnailFromUrl","readAsDataURL","imageUrl","crossOrigin","canvas","resizeInfo","_ref3","getContext","trgX","trgY","toDataURL","onerror","processingLength","queuedFiles","processFiles","processFile","uploadFiles","_getFilesWithXhr","groupedFile","groupedFiles","CANCELED","uploadFile","formData","handleError","headerName","headerValue","inputName","inputType","progressObj","updateProgress","_l","_len3","_m","_ref4","_ref5","allFilesFinished","loaded","_finished","onprogress","Accept","Cache-Control","X-Requested-With","FormData","hasAttribute","submitRequest","SUCCESS","ERROR","forElement","autoDiscover","discover","checkElements","dropzones","blacklistedBrowsers","capableBrowser","File","FileList","Blob","rejectedItem","question","rejected","baseMimeType","validType","ACCEPTED","PROCESSING","ey","ih","iw","py","ratio","sy","naturalWidth","naturalHeight","drawImage","getImageData","sx","sh","vertSquashRatio","poll","rem","createEventObject","_autoDiscoverFunction","a0","isMsie","isBlankString","escapeRegExChars","isJQuery","toStr","reverseArgs","getIdGenerator","templatify","WWW","build","www","defaultClassNames","buildCss","buildHtml","buildSelectors","hint","boxShadow","verticalAlign","inputWithNoHint","ltr","dataset","suggestion","selectable","EventBus","deprecationMap","cursorchange","deprecatedType","EventEmitter","splitter","bindContext","sync","onAsync","onSync","syncFlush","asyncFlush","getFlush","nextTick","flush","cancelled","getNextTick","nextTickFn","setImmediate","getRegex","patterns","caseSensitive","wordsOnly","regexStr","escapedPatterns","hightlightTextNode","textNode","patternNode","wrapperNode","splitText","traverse","childNode","TEXT_NODE_TYPE","Input","$hint","query","queryWhenFocused","$overflowHelper","buildOverflowHelper","_checkLanguageDirection","setHint","getHint","clearHint","clearHintIfInvalid","whiteSpace","fontFamily","fontStyle","fontVariant","wordSpacing","textIndent","textRendering","textTransform","areQueriesEquivalent","normalizeQuery","withModifier","specialKeyCodeMap","27","37","39","13","38","40","_onBlur","resetInputValue","_onFocus","_onKeydown","keyName","_managePreventDefault","_shouldTrigger","_onInput","_setQuery","getInputValue","areEquivalent","hasDifferentWhitespace","onBlur","onFocus","onKeydown","onInput","getLangDir","getQuery","setQuery","setInputValue","hasQueryChangedSinceLastFocus","valIsPrefixOfHint","hasOverflow","constraint","isCursorAtEnd","valueLength","selectionStart","moveStart","Dataset","templates","notFound","isValidName","nameGenerator","limit","displayFn","getDisplayFn","displayKey","getTemplates","__ttAdapter","_resetLastSuggestion","suggestionTemplate","extractData","_overwrite","suggestions","_renderSuggestions","_renderPending","_renderNotFound","_append","$lastSuggestion","_appendSuggestions","$fragment","_getSuggestionsFragment","_getHeader","_getFooter","_injectQuery","_query","syncCalled","rendered","Menu","initializeDataset","oDataset","$node","datasets","_onSelectableClick","_onRendered","_allDatasetsEmpty","_onCleared","isDatasetEmpty","_getSelectables","_removeCursor","$selectable","getActiveSelectable","_ensureVisible","elTop","elBottom","nodeScrollTop","nodeHeight","onSelectableClick","setLanguageDirection","selectableRelativeToCursor","$selectables","$oldCursor","newIndex","setCursor","getSelectableData","getTopSelectable","updateDataset","isValidUpdate","clearDataset","destroyDataset","DefaultMenu","Typeahead","onFocused","onBlurred","onEnterKeyed","onTabKeyed","onEscKeyed","onUpKeyed","onDownKeyed","onLeftKeyed","onRightKeyed","onQueryChanged","onWhitespaceChanged","eventBus","_hacks","_onSelectableClicked","_onAsyncRequested","_onAsyncCanceled","_onAsyncReceived","_onDatasetRendered","_onDatasetCleared","_onLangDirChanged","$menu","hasActive","_updateHint","_onFocused","_minLengthMet","_onBlurred","_onEnterKeyed","_onTabKeyed","_onEscKeyed","_onUpKeyed","moveCursor","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","_onWhitespaceChanged","_openIfActive","escapedQuery","frontMatchRegEx","setVal","getVal","$candidate","payload","cancelMove","ttEach","$els","typeahead","buildHintFromInput","getBackgroundStyles","spellcheck","prepInput","backgroundAttachment","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","$wrapper","$elOrNull","initialize","defaultHint","defaultMenu","MenuConstructor","defs","nativeMap","checkPrecision","checkCurrencyFormat","lib","currency","neg","symbol","thousand","grouping","unformat","unformatted","power","usePrecision","formatMoney","formats","useFormat","formatColumn","padAfterSymbol","maxLength","fVal","accounting","oldAccounting","paletteTemplate","tooltipFormat","tiny","tinycolor","toHsl","equals","formattedString","swatchStyle","rgbaSupport","toRgbString","toFilter","hideAll","spectrums","instanceOptions","defaultOpts","move","spectrum","applyOptions","showPaletteOnly","showPalette","palette","paletteArray","paletteLookup","flat","showInput","showAlpha","showButtons","showInitial","containerClassName","reflow","palletElementClick","updateOriginalInput","IE","shouldReplace","boundElement","replacer","clearButton","updateSelectionPaletteFromStorage","offsetElement","textInput","setFromTextInput","cancelButton","cancelText","clearText","chooseButton","chooseText","alphaSlider","dragX","dragY","currentAlpha","alphaWidth","slider","currentHue","slideHeight","dragger","shiftMovementDirection","oldDragX","currentSaturation","dragWidth","oldDragY","dragHeight","currentValue","furtherFromX","setSaturation","initialColor","updateUI","currentPreferredFormat","preferredFormat","addColorToSelectionPalette","paletteEvent","paletteContainer","initialColorContainer","localStorageKey","oldPalette","selectionPalette","showSelectionPalette","maxSelectionSize","getUniqueSelectionPalette","drawPalette","currentColor","drawInitial","colorOnShow","draggingClass","ok","colorHasChanged","clickoutFiresChange","ignoreFormatChange","newColor","newHsv","toHsv","fromRatio","updateHelperLocations","flatColor","realColor","displayColor","realHex","realRgb","toRgb","realAlpha","gradient","alphaSliderInner","gradientType","alphaSlideHelper","slideHelper","dragHelper","dragHelperHeight","alphaX","alphaSlideHelperWidth","slideY","slideHelperHeight","fireCallback","hasChanged","slideWidth","getOffset","spect","optionName","optionValue","theme","markup","isInputTypeColor","inputTypeColorSupport","replaceInput","replacerClassName","extraY","onmove","onstart","onstop","prevent","touches","hasTouch","rightclick","duringDragEvents","throttler","colorInput","gradientFix","dataID","loadOpts","localization","palettes","processNativeColorInputs","inputToRGB","roundA","mathRound","_tc_id","tinyCounter","getAlpha","setAlpha","boundAlpha","hsv","rgbToHsv","toHsvString","hsl","rgbToHsl","toHslString","toHex","allow3Char","rgbToHex","toHex8","rgbaToHex","toHex8String","toPercentageRgb","bound01","toPercentageRgbString","toName","hexNames","secondColor","hex8String","secondHex8String","formatSet","hasAlphaAndFormatNotSet","formatWithAlpha","stringInputToObject","rgbToRgb","convertToPercentage","hsvToRgb","hslToRgb","mathMin","mathMax","math","pad2","convertDecimalToHex","flipped","isOnePointZero","processPercent","isPercentage","clamp01","parseIntFromHex","convertHexToDecimal","trimLeft","trimRight","named","hex8","hex6","hex3","mathRandom","color1","color2","desaturate","saturate","greyscale","lighten","darken","complement","triad","tetrad","splitcomplement","analogous","slices","monochromatic","modification","readability","brightnessA","brightnessB","colorDiff","brightness","readable","mostReadable","baseColor","colorList","bestColor","bestScore","bestIsReadable","score","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","moment","utils_hooks__hooks","hookCallback","setHookCallback","isObjectEmpty","isDate","hasOwnProp","create_utc__createUTC","locale","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","getParsingFlags","_pf","valid__isValid","_isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","valid__createInvalid","NaN","copyConfig","_isAMomentObject","_f","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","array1","array2","dontConvert","lengthDiff","diffs","warn","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecateSimple","deprecations","locale_set__set","_config","_ordinalParseLenient","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","locale_calendar__calendar","mom","_calendar","longDateFormat","_longDateFormat","formatUpper","invalidDate","_invalidDate","ordinal","_ordinal","relative__relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","addUnitAlias","shorthand","lowerCase","aliases","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","addUnitPriority","priority","priorities","getPrioritizedUnits","unitsObj","makeGetSet","keepTime","get_set__set","get_set__get","stringGet","stringSet","prioritized","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","addFormatToken","padded","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","expandFormat","formatFunctions","replaceLongDateFormatTokens","localFormattingTokens","lastIndex","addRegexToken","strictRegex","regexes","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","localeMonths","_months","isFormat","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","units_month__handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","monthsParse","getSetMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","defaultMonthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","getIsLeapYear","createDate","ms","setFullYear","createUTCDate","firstWeekOffset","fwd","fwdlw","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","day_of_week__handleStrictParse","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","weekdays","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","defaultWeekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","normalizeLocale","chooseLocale","loadLocale","oldLocale","locales","globalLocale","_abbr","locale_locales__getSetGlobalLocale","locale_locales__getLocale","defineLocale","baseConfig","abbr","parentLocale","updateLocale","locale_locales__listLocales","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","configFromISO","allowTime","timeFormat","tzFormat","extendedIsoRegex","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","weekdayOverflow","GG","local__createLocal","gg","parsedInput","skipped","stringLength","totalParsedInputLength","_meridiem","meridiemFixWrap","hour","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","configFromObject","minute","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","quarters","weeks","milliseconds","_milliseconds","_days","_bubble","isDuration","absRound","separator","utcOffset","offsetFromString","chunk","chunkOffset","cloneWithOffset","model","setTime","getDateOffset","getSetOffset","keepLocalTime","localAdjust","matchShortOffset","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isUtcOffset","isUtc","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","dur","isAdding","getCalendarFormat","myMoment","moment_calendar__calendar","sod","startOf","calendarFormat","calendar","localInput","endOf","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","anchor2","wholeMonthDiff","moment_format__toISOString","toISOString","toDate","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","isoWeekday","to_type__valueOf","unix","toObject","moment_valid__isValid","parsingFlags","invalidAt","creationData","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","isoWeek","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfYear","parseMs","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","preParsePostFormat","lists__get","listMonthsImpl","listWeekdaysImpl","localeSorted","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","absCeil","monthsFromDays","monthsToDays","daysToMonths","duration_as__valueOf","makeAs","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeRounding","roundingFunction","duration_humanize__getSetRelativeTimeThreshold","threshold","withSuffix","iso_string__toISOString","iso_string__abs","asSeconds","fun","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","hh","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","ordinalParse","meridiemParse","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","isoWeekYear","getSetDayOfMonth","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","isoWeeks","isoWeeksInYear","isDST","zoneAbbr","zoneName","zone","isDSTShifted","momentPrototype","prototype__proto","firstDayOfYear","firstDayOfWeek","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_prototype__proto","toIsoString","invalid","relativeTimeRounding","relativeTimeThreshold","_moment","charCodeToInt","unpackBase60","whole","fractional","multiplier","arrayToInt","intToUntil","mapIndices","indices","unpack","untils","abbrs","Zone","packedString","normalizeName","addZone","packed","normalized","zones","getZone","caller","link","links","getNames","addLink","normal0","normal1","loadData","tz","dataVersion","zoneExists","didShowError","logError","needsOffset","abbrWrap","_z","resetZoneWrap","momentVersion","major","minor","unpacked","_index","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","_zones","_links","_names","defaultZone","setDefault","ES6Promise","objectOrFunction","setScheduler","scheduleFn","customSchedulerFn","setAsap","asapFn","asap","useNextTick","useVertxTimer","vertxNext","useSetTimeout","useMutationObserver","iterations","observer","BrowserMutationObserver","characterData","useMessageChannel","channel","MessageChannel","port1","onmessage","port2","postMessage","globalSetTimeout","attemptVertx","vertx","runOnLoop","runOnContext","onFulfillment","onRejection","_arguments","PROMISE_ID","makePromise","_state","invokeCallback","_result","_resolve","selfFulfillment","cannotReturnOwn","getThen","GET_THEN_ERROR","tryThen","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","reason","_reject","_label","handleOwnThenable","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","then$$","publishRejection","_onerror","publish","PENDING","_subscribers","subscribers","settled","detail","ErrorObject","tryCatch","TRY_CATCH_ERROR","hasCallback","succeeded","failed","initializePromise","resolver","nextId","Enumerator","_instanceConstructor","_input","_remaining","_enumerate","validationError","race","needsResolver","needsNew","Promise","polyfill","promiseToString","cast","_isArray","scheduleFlush","browserWindow","browserGlobal","MutationObserver","WebKitMutationObserver","isWorker","Uint8ClampedArray","importScripts","_eachEntry","resolve$$","_then","_settledAt","_willSettleAt","enumerator","_setScheduler","_setAsap","_asap","catch","Sweetalert2","fixScrollbar","states","previousBodyPadding","undoScrollbar","iOSfix","iOS","MSStream","swalClasses","iosfix","undoIOSfix","modalDependant","modalParams","extraParams","inputValidator","emailRegex","setParameters","getModal","setFocus","increment","focusableElements","getFocusableElements","focusCancel","handleKeyDown","$targetElement","btnIndex","stopEventPropagation","fireClick","$cancelButton","$confirmButton","allowEscapeKey","sweetAlert","closeModal","getInput","getChildByClass","inputAutoTrim","focusInput","showLoaderOnConfirm","showLoading","preConfirm","preConfirmValue","hideLoading","showValidationError","onButtonEvent","confirmBtn","getConfirmButton","cancelBtn","getCancelButton","targetedConfirm","targetedCancel","buttonsStyling","colorLuminance","confirmButtonColor","cancelButtonColor","inputValue","disableInput","enableInput","$buttons","onclick","onmouseover","onmouseout","onmousedown","getCloseButton","sweetContainer","allowOutsideClick","reverseButtons","previousWindowKeyDown","onkeydown","borderLeftColor","borderRightColor","enableLoading","getSpacer","loading","disableLoading","showConfirmButton","showCancelButton","enableButtons","disableButtons","enableConfirmButton","disableConfirmButton","radiosContainer","recalculateHeight","prevState","getValidationError","inputerror","resetValidationError","getProgressSteps","progressSteps","setProgressSteps","showProgressSteps","hideProgressSteps","inputTypes","inputClass","inputContainer","attrName","inputAttributes","populateInputOptions","inputPlaceholder","rangeInput","rangeOutput","inputOptions","radioInput","radioLabel","radioLabelSpan","checkboxInput","textarea","openModal","onOpen","swal2Observer","childList","subtree","swalPrefix","iconTypes","defaultParams","customClass","confirmButtonText","confirmButtonClass","cancelButtonText","cancelButtonClass","showCloseButton","imageWidth","imageHeight","imageClass","currentProgressStep","progressStepsDistance","sweetHTML","progresssteps","warning","validationerror","spacer","existingSweetContainers","lum","previousActiveElement","oninput","clickConfirm","onchange","elementByClass","getIcons","getClientRects","removeStyleProperty","removeProperty","MouseEvent","mevt","view","bubbles","cancelable","animationEndEvent","testEl","WebkitAnimation","OAnimation","msAnimation","resetPrevState","$title","$content","$confirmBtn","$cancelBtn","$closeButton","progressStepsContainer","getQueueStep","circle","progresscircle","activeprogressstep","line","progressline","iconType","$icon","$customImage","styled","noanimation","onComplete","swalCloseEventFinished","resetQueue","queueResult","insertQueueStep","deleteQueueStep","$successIcon","$errorIcon","$warningIcon","hideModalAndResetState","clickCancel","userParams","resetDefaults","swal","noUiSlider","rect","pageOffset","getPageOffset","addClassFor","asArray","countDecimals","numStr","supportPageOffset","isCSS1Compat","compatMode","getActions","pointerEnabled","msPointerEnabled","subRangeRatio","fromPercentage","toPercentage","getJ","toStepping","xVal","xPct","fromStepping","getStep","xSteps","handleEntryPoint","handleStepPoint","Spectrum","singleStep","xNumSteps","ordered","testStep","testRange","testStart","testSnap","testAnimate","testAnimationDuration","animationDuration","testConnect","connect","testOrientation","ort","testMargin","getMargin","testLimit","testDirection","testBehaviour","testTooltips","testFormat","testCssPrefix","cssPrefix","testCssClasses","cssClasses","testOptions","tests","defaultFormatter","behaviour","handleLower","handleUpper","stacking","pips","pipsHorizontal","pipsVertical","marker","markerHorizontal","markerVertical","markerNormal","markerLarge","markerSub","valueHorizontal","valueVertical","valueNormal","valueLarge","valueSub","closure","getPositions","delimit","fixEvent","touch","pointer","changedTouches","points","classModifier","addConnection","addHandles","nrHandles","addSlider","addTooltip","tips","scope_Handles","bindEvent","getGroup","stepped","scope_Spectrum","spread","generateSpread","density","safeIncrement","originalSpectrumDirection","indexes","firstInRange","lastInRange","ignoreFirst","ignoreLast","prevPct","newPct","pctDifference","pctPos","realSteps","stepsize","addMarking","filterFunc","getClasses","orientationClasses","valueOrientationClasses","markerOrientationClasses","sizeClasses","valueSizeClasses","markerSizeClasses","getTags","addSpread","scope_Target","baseSize","scope_Base","handleNumber","scope_Locations","scope_Events","targetEvent","scope_Self","valueGet","inSliderOrder","scope_Values","actions","calcPoint","appVersion","buttonsProperty","positions","proposal","setHandle","noUiListener","noUiListeners","documentLeave","moveEvent","endEvent","outEvent","noLimitOption","lowerMargin","upperMargin","lowerLimit","upperLimit","requestAnimationFrame","setValues","valueSet","fireSetEvent","retour","getCurrentStep","getApplicableStep","stepDecimals","decrement","namespacedEvent","tEvent","tNamespace","updateOptions","optionsToUpdate","newOptions","convert","_addEvent","_characterFromEvent","_MAP","_KEYCODE_MAP","_modifiersMatch","modifiers1","modifiers2","_eventModifiers","modifiers","_preventDefault","_stopPropagation","_isModifier","_getReverseMap","_REVERSE_MAP","_pickBestAction","_keysFromString","combination","_getKeyInfo","_SPECIAL_ALIASES","_SHIFT_MAP","_belongsTo","Mousetrap","targetElement","_resetSequences","doNotReset","activeSequences","_sequenceLevels","_nextExpectedAction","_getMatches","sequenceName","seq","deleteCombo","combo","deleteSequence","_fireCallback","sequence","stopCallback","_handleKeyEvent","_ignoreNextKeyup","handleKey","_resetSequenceTimer","_resetTimer","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","isFinal","wrappedCallback","_bindSingle","_directMap","_ignoreNextKeypress","_handleKey","maxLevel","processedSequenceCallback","ignoreThisKeypress","_bindMultiple","combinations","16","17","18","20","32","33","34","35","36","45","46","91","93","224","106","107","109","110","111","186","187","188","189","190","191","192","219","220","221","222","!","@","#","%","^","(",")",":","?","|","command","plus","platform","isContentEditable","addKeycodes","documentMousetrap","deepValue","firstSegment","dotIndex","BitapSearcher","maxPatternLength","patternLen","matchmask","patternAlphabet","_calculatePatternAlphabet","MULTI_CHAR_REGEX","shouldSort","sortFn","getFn","verbose","resultMap","_prepareSearchers","_startSearch","_computeScore","_sort","tokenSearchers","fullSeacher","listLen","keysLen","_analyze","entity","words","scores","tokenSearchersLen","existingResult","averageScore","finalScore","scoresLen","mainSearchResult","tokenSearcher","termScores","tokenSearchResult","isMatch","totalScore","currScore","scoreLen","replaceValue","getItemAtIndex","resultItem","includeVal","mask","_bitapScore","errors","accuracy","proximity","textLen","bestLoc","binMin","binMid","binMax","bitArr","lastBitArr","charMatch","locations","isMatched","Combobox","$source","$button","sorter","highlighter","shown","transferAttributes","listen","selectedValue","setSelected","updater","lookup","beginswith","clearTarget","triggerChange","clearElement","eventSupported","isSupported","mousedover","isOpera","opera","isFirefox","InstallTrigger","isSafari","HTMLElement","isChrome","chrome","isChromium","isChrome48","isIE","isMobile","bootstrap","dropdownOptions","registerEventHandler","datePicker","underlyingObservable","applyBindingsToNode","viewModel","bindingContext","allBindings","datum","CONSTS","INVOICE_STATUS_DRAFT","INVOICE_STATUS_SENT","INVOICE_STATUS_VIEWED","INVOICE_STATUS_APPROVED","INVOICE_STATUS_PARTIAL","INVOICE_STATUS_PAID","nativeAlert","TEMPLATES","CLEAN","BOLD","MODERN","NORMAL","BUSINESS","CREATIVE","ELEGANT","HIPSTER","PLAYFUL","PHOTO","pageNumber","pageCount","pageNumberRegExp","pageCountRegExp","blankImage","accountName","accountLogo","accountDetails","accountAddress","invoiceDetails","invoiceDetailsHeight","invoiceLineItems","statementLines","invoiceLines","invoiceLineItemColumns","statementColumns","invoiceColumns","invoiceDocuments","quantityWidth","taxWidth","clientDetails","notesAndTerms","subtotals","statementSubtotals","subtotalsHeight","subtotalsWithoutBalance","subtotalsBalance","balanceDue","invoiceFooter","invoiceNumber","entityType","invoiceLabels","statement","is_quote","quote","credit_note","entityTypeUC","entityTaxType","tax_quote","tax_invoice","fontSizeLarger","fontSizeLargest","fontSizeSmaller","headerFont","regExp","public_notes","is_recurring","terms","prepareDataList","invoice_date","due_date","rowStyle","date_format","prepareDataTable","invoice_settings","custom_invoice_item_label1","custom_invoice_item_label2","hide_quantity","show_item_taxes","invoice_footer","shownItem","hideQuantity","showItemTaxes","description","unit_cost","quantity","tax","line_total","notes","productKey","tax1","tax2","include_item_taxes_inline","formatAmount","currency_id","addDoc","vfs","stackItem","invoice_embed_documents","documents","expenses","expense","balance_due","prepareDataPairs","hideBalance","subtotal","customValue1","customValue1Label","custom_invoice_label1","surcharge","customValue2","customValue2Label","custom_invoice_label2","taxRate","taxStr","paid","hide_paid_to_date","paid_to_date","isPartial","partial_due","invoice_fields","account_fields1","renderClientOrAccountField","account_fields2","renderInvoiceField","quote_number","credit_number","po_number","statement_date","quote_date","credit_date","valid_until","custom_text_value1","custom_invoice_text_label1","custom_text_value2","custom_invoice_text_label2","id_number","vat_number","address1","address2","cityStatePostal","postal_code","country","swap_postal_code","postalCityState","clientEmail","phone","custom_client_label1","custom_client_label2","website","work_email","work_phone","custom_label1","custom_label2","client_fields","getPrimaryColor","defaultColor","getSecondaryColor","section","processItem","newRow","isBlank","groupText","rules","rule","parseRegExp","regExpStr","parseRegExpLine"],"mappings":"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AA0C,gBA0lBA,OAzlBA,mBAAAtvK,OAAA+V,UAAAlW,SAAAoM,KAAAqjK,IAEAA,EAAAp0K,KAAA,MACAo0K,EAAAp0K,KAAA,OACAo0K,IAEAA,EAAAyiB,GAAA,MAGAR,GACAxzK,QAAA,QACA+yK,OACA,2CACA,+SACA,0FACA,iQACA,6CACA,2DACA,gDACA,ywBACA,+lBACA,6wBACA,+hBACA,oFACA,sQACA,6DACA,uEACA,uPACA,kPACA,8mBACA,m4BACA,64BACA,+CACA,+UACA,+ZACA,oaACA,kaACA,8ZACA,waACA,2aACA,uaACA,qZACA,waACA,ibACA,6aACA,kaACA,4DACA,gzBACA,6FACA,kYACA,qnBACA,uHACA,kNACA,wWACA,oFACA,4OACA,oEACA,g6BACA,2xBACA,0vBACA,mTACA,qEACA,8DACA,0SACA,k5CACA,ylBACA,yGACA,gDACA,yuBACA,yQACA,2xBACA,gZACA,27BACA,u2BACA,07BACA,mPACA,kFACA,m6BACA,q4BACA,6mBACA,uQACA,y2BACA,iuBACA,qvCACA,qfACA,wGACA,4CACA,wFACA,i2CACA,06BACA,yJACA,i7BACA,2oBACA,2tBACA,ioBACA,ugBACA,ioBACA,oqBACA,wuBACA,owBACA,+KACA,g4BACA,4kCACA,45BACA,6DACA,sIACA,wmCACA,qRACA,gJACA,8NACA,wEACA,2hBACA,0mBACA,62BACA,6jBACA,wPACA,woBACA,6oBACA,kuCACA,yjBACA,mkBACA,y3CACA,g5BACA,84CACA,uzBACA,o4BACA,2QACA,w6BACA,w6BACA,26BACA,2jBACA,6CACA,4xBACA,iHACA,sGACA,qiBACA,0OACA,wNACA,gEACA,2zBACA,wuBACA,0QACA,+XACA,ouBACA,m8BACA,kOACA,8uBACA,4JACA,uvBACA,ovBACA,w3BACA,w7CACA,oNACA,6FACA,2kBACA,01BACA,goCACA,+xBACA,smCACA,m3BACA,gwBACA,2EACA,uFACA,wEACA,okBACA,4DACA,y8BACA,kiBACA,2CACA,2CACA,+aACA,4CACA,g2BACA,yCACA,2VACA,ouBACA,kdACA,4ZACA,4XACA,mPACA,gXACA,8DACA,gvBACA,6CACA,y1BACA,qZACA,4DACA,kFACA,sdACA,qoBACA,oIACA,sHACA,oHACA,+6BACA,+FACA,2CACA,iOACA,u4BACA,m5BACA,iIACA,4cACA,mmBACA,+cACA,siCACA,gHACA,qEACA,23BACA,uCACA,kcACA,+IACA,6CACA,gEACA,sfACA,mdACA,uIACA,yLACA,iTACA,+cACA,qFACA,yFACA,4xBACA,ueACA,8cACA,4cACA,kZACA,sIACA,8FACA,6YACA,4EACA,+dACA,+OACA,gNACA,iJACA,8dACA,+RACA,+OACA,uZACA,oqBACA,4DACA,6FACA,0mBACA,0fACA,mdACA,+cACA,0fACA,udACA,o1CACA,0xBACA,+uBACA,uFACA,otBACA,+0CACA,kcACA,mCACA,qcACA,01BACA,61BACA,uIACA,i2BACA,s2BACA,wFACA,kJACA,k5BACA,itBACA,6JACA,g2BACA,gJACA,2zBACA,s4BACA,ynBACA,quBACA,gBACA,s4BACA,+1CACA,qBACA,wBACA,0BACA,0BACA,0BACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,yBACA,2BACA,2BACA,2BACA,2BACA,2BACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,mBACA,mBACA,gmCACA,8pBACA,q2BACA,g6CACA,0tBACA,22BACA,i2BACA,ymCACA,+0BACA,s5BACA,4tBACA,w4BACA,4yBACA,ksCACA,ouBACA,+iBACA,gxBACA,i1CACA,uoCACA,6/BACA,w/BACA,seACA,ooCACA,sjBACA,0nCACA,0zBACA,i/BACA,6fACA,4gBACA,6wBACA,4tBACA,4xBACA,8zBACA,kwBACA,g1BACA,uxBACA,+fACA,+/BACA,uxBACA,gBACA,+DACA,8BACA,0BACA,0CACA,4CACA,2CACA,gFACA,+CACA,kDACA,2zBACA,gBACA,s4BACA,6xBACA,s4BACA,oaACA,sEACA,4BACA,gLACA,2DACA,0CACA,8YACA,8BACA,iEACA,+CACA,oDACA,yCACA,yEACA,4DACA,kDACA,yCACA,6CACA,0EACA,mFACA,oDACA,8EACA,4FACA,2BACA,0CACA,8BACA,kCACA,4LACA,8CACA,6BACA,0FACA,2BACA,4BACA;AAEAI,OACA,+BACA,+BACA,gCACA,8BACA,iCACA,6BACA,mCACA,oCACA,iCACA,iCACA,oCACA,mCACA,mCACA,0CACA,qCACA,oCACA,sCACA,oCACA,yCACA,mCACA,oCACA,mCACA,8BACA,gCACA,6BACA,kCACA,8BACA,8BACA,8BACA,kCACA,mCACA,kCACA,gCACA,gCACA,oCACA,gCACA,gCACA,qBACA,oCACA,qCACA,8BACA,uBACA,4BACA,2BACA,8BACA,mCACA,oCACA,mCACA,sCACA,mCACA,sCACA,yCACA,yCACA,oCACA,oCACA,qCACA,sCACA,mCACA,kCACA,sDACA,+DACA,gDACA,4CACA,4CACA,wCACA,4CACA,gCACA,mCACA,sCACA,yCACA,6BACA,kCACA,wBACA,6BACA,8BACA,mCACA,mCACA,oCACA,kDACA,0CACA,qCACA,kCACA,sBACA,uCACA,yCACA,0BACA,iDACA,iCACA,qCACA,6BACA,kCACA,qCACA,mCACA,kCACA,8BACA,mCACA,6BACA,wCACA,iCACA,0CACA,qCACA,qCACA,gCACA,uCACA,mCACA,kCACA,kCACA,2CACA,wBACA,sCACA,yCACA,kCACA,wBACA,wBACA,+BACA,0BACA,+BACA,8BACA,6BACA,gCACA,6BACA,+BACA,qBACA,wBACA,yBACA,+BACA,0BACA,gCACA,uBACA,+BACA,wBACA,2BACA,+BACA,wBACA,mCACA,8BACA,iBACA,2BACA,kBACA,mBACA,2BACA,mBACA,mCACA,iCACA,6BACA,mCACA,8BACA,iCACA,qCACA,0CACA,6CACA,mCACA,sCACA,oCACA,yCACA,iCACA,oCACA,qBACA,oBACA,sBACA,qBACA,0BACA,gBACA,kBACA,kBACA,iBACA,sBACA,cACA,wBACA,mBACA,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","file":"built.js","sourcesContent":["// http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser\nvar isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;\nvar isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+\nvar isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;\nvar isEdge = navigator.userAgent.indexOf('Edge/') >= 0;\nvar isChrome = !!window.chrome && !isOpera && !isEdge; // Chrome 1+\nvar isChromium = isChrome && navigator.userAgent.indexOf('Chromium') >= 0;\n// https://code.google.com/p/chromium/issues/detail?id=574648\nvar isChrome48 = isChrome && navigator.userAgent.indexOf('Chrome/48') >= 0;\nvar isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6\nvar isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\nvar refreshTimer;\nfunction generatePDF(invoice, javascript, force, cb) {\n if (!invoice || !javascript) {\n return;\n }\n //console.log('== generatePDF - force: %s', force);\n if (force) {\n refreshTimer = null;\n } else {\n if (refreshTimer) {\n clearTimeout(refreshTimer);\n }\n refreshTimer = setTimeout(function() {\n generatePDF(invoice, javascript, true, cb);\n }, 500);\n return;\n }\n\n invoice = calculateAmounts(invoice);\n var pdfDoc = GetPdfMake(invoice, javascript, cb);\n\n if (cb) {\n pdfDoc.getDataUrl(cb);\n }\n\n return pdfDoc;\n}\n\nfunction copyObject(orig) {\n if (!orig) return false;\n return JSON.parse(JSON.stringify(orig));\n}\n\n/* Handle converting variables in the invoices (ie, MONTH+1) */\nfunction processVariables(str) {\n if (!str) return '';\n var variables = ['MONTH','QUARTER','YEAR'];\n for (var i=0; i<variables.length; i++) {\n var variable = variables[i];\n var regexp = new RegExp(':' + variable + '[+-]?[\\\\d]*', 'g');\n var matches = str.match(regexp);\n if (!matches) {\n continue;\n }\n for (var j=0; j<matches.length; j++) {\n var match = matches[j];\n var offset = 0;\n if (match.split('+').length > 1) {\n offset = match.split('+')[1];\n } else if (match.split('-').length > 1) {\n offset = parseInt(match.split('-')[1]) * -1;\n }\n str = str.replace(match, getDatePart(variable, offset));\n }\n }\n\n return str;\n}\n\nfunction getDatePart(part, offset) {\n offset = parseInt(offset);\n if (!offset) {\n offset = 0;\n }\n if (part == 'MONTH') {\n return getMonth(offset);\n } else if (part == 'QUARTER') {\n return getQuarter(offset);\n } else if (part == 'YEAR') {\n return getYear(offset);\n }\n}\n\nfunction getMonth(offset) {\n var today = new Date();\n var months = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n var month = today.getMonth();\n month = parseInt(month) + offset;\n month = month % 12;\n if (month < 0) {\n month += 12;\n }\n return months[month];\n}\n\nfunction getYear(offset) {\n var today = new Date();\n var year = today.getFullYear();\n return parseInt(year) + offset;\n}\n\nfunction getQuarter(offset) {\n var today = new Date();\n var quarter = Math.floor((today.getMonth() + 3) / 3);\n quarter += offset;\n quarter = quarter % 4;\n if (quarter == 0) {\n quarter = 4;\n }\n return 'Q' + quarter;\n}\n\n\n/* Default class modification */\nif ($.fn.dataTableExt) {\n $.extend( $.fn.dataTableExt.oStdClasses, {\n \"sWrapper\": \"dataTables_wrapper form-inline\"\n } );\n\n\n /* API method to get paging information */\n $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )\n {\n return {\n \"iStart\": oSettings._iDisplayStart,\n \"iEnd\": oSettings.fnDisplayEnd(),\n \"iLength\": oSettings._iDisplayLength,\n \"iTotal\": oSettings.fnRecordsTotal(),\n \"iFilteredTotal\": oSettings.fnRecordsDisplay(),\n \"iPage\": oSettings._iDisplayLength === -1 ?\n 0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),\n \"iTotalPages\": oSettings._iDisplayLength === -1 ?\n 0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )\n };\n };\n\n\n /* Bootstrap style pagination control */\n $.extend( $.fn.dataTableExt.oPagination, {\n \"bootstrap\": {\n \"fnInit\": function( oSettings, nPaging, fnDraw ) {\n var oLang = oSettings.oLanguage.oPaginate;\n var fnClickHandler = function ( e ) {\n e.preventDefault();\n if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\n fnDraw( oSettings );\n }\n };\n\n $(nPaging).addClass('pagination').append(\n '<ul class=\"pagination\">'+\n '<li class=\"prev disabled\"><a href=\"#\">«</a></li>'+\n '<li class=\"next disabled\"><a href=\"#\">»</a></li>'+\n '</ul>'\n );\n var els = $('a', nPaging);\n $(els[0]).bind( 'click.DT', { action: \"previous\" }, fnClickHandler );\n $(els[1]).bind( 'click.DT', { action: \"next\" }, fnClickHandler );\n },\n\n \"fnUpdate\": function ( oSettings, fnDraw ) {\n var iListLength = 5;\n var oPaging = oSettings.oInstance.fnPagingInfo();\n var an = oSettings.aanFeatures.p;\n var i, ien, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\n\n if ( oPaging.iTotalPages < iListLength) {\n iStart = 1;\n iEnd = oPaging.iTotalPages;\n }\n else if ( oPaging.iPage <= iHalf ) {\n iStart = 1;\n iEnd = iListLength;\n } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\n iStart = oPaging.iTotalPages - iListLength + 1;\n iEnd = oPaging.iTotalPages;\n } else {\n iStart = oPaging.iPage - iHalf + 1;\n iEnd = iStart + iListLength - 1;\n }\n\n for ( i=0, ien=an.length ; i<ien ; i++ ) {\n // Remove the middle elements\n $('li:gt(0)', an[i]).filter(':not(:last)').remove();\n\n // Add the new list items and their event handlers\n for ( j=iStart ; j<=iEnd ; j++ ) {\n sClass = (j==oPaging.iPage+1) ? 'class=\"active\"' : '';\n $('<li '+sClass+'><a href=\"#\">'+j+'</a></li>')\n .insertBefore( $('li:last', an[i])[0] )\n .bind('click', function (e) {\n e.preventDefault();\n oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;\n fnDraw( oSettings );\n } );\n }\n\n // Add / remove disabled classes from the static elements\n if ( oPaging.iPage === 0 ) {\n $('li:first', an[i]).addClass('disabled');\n } else {\n $('li:first', an[i]).removeClass('disabled');\n }\n\n if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n $('li:last', an[i]).addClass('disabled');\n } else {\n $('li:last', an[i]).removeClass('disabled');\n }\n }\n }\n }\n } );\n}\n\n/*\n * TableTools Bootstrap compatibility\n * Required TableTools 2.1+\n */\nif ( $.fn.DataTable.TableTools ) {\n // Set the classes that TableTools uses to something suitable for Bootstrap\n $.extend( true, $.fn.DataTable.TableTools.classes, {\n \"container\": \"DTTT btn-group\",\n \"buttons\": {\n \"normal\": \"btn\",\n \"disabled\": \"disabled\"\n },\n \"collection\": {\n \"container\": \"DTTT_dropdown dropdown-menu\",\n \"buttons\": {\n \"normal\": \"\",\n \"disabled\": \"disabled\"\n }\n },\n \"print\": {\n \"info\": \"DTTT_print_info modal\"\n },\n \"select\": {\n \"row\": \"active\"\n }\n } );\n\n // Have the collection use a bootstrap compatible dropdown\n $.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {\n \"collection\": {\n \"container\": \"ul\",\n \"button\": \"li\",\n \"liner\": \"a\"\n }\n } );\n}\n\n\nfunction isStorageSupported() {\n try {\n return 'localStorage' in window && window['localStorage'] !== null;\n } catch (e) {\n return false;\n }\n}\n\nfunction isValidEmailAddress(emailAddress) {\n var pattern = new RegExp(/^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i);\n return pattern.test(emailAddress);\n};\n\nfunction enableHoverClick($combobox, $entityId, url) {\n /*\n $combobox.mouseleave(function() {\n $combobox.css('text-decoration','none');\n }).on('mouseenter', function(e) {\n setAsLink($combobox, $combobox.closest('.combobox-container').hasClass('combobox-selected'));\n }).on('focusout mouseleave', function(e) {\n setAsLink($combobox, false);\n }).on('click', function() {\n var clientId = $entityId.val();\n if ($(combobox).closest('.combobox-container').hasClass('combobox-selected')) {\n if (parseInt(clientId) > 0) {\n window.open(url + '/' + clientId, '_blank');\n } else {\n $('#myModal').modal('show');\n }\n };\n });\n */\n}\n\nfunction setAsLink($input, enable) {\n if (enable) {\n $input.css('text-decoration','underline');\n $input.css('cursor','pointer');\n } else {\n $input.css('text-decoration','none');\n $input.css('cursor','text');\n }\n}\n\nfunction setComboboxValue($combobox, id, name) {\n $combobox.find('input').val(id);\n $combobox.find('input.form-control').val(name);\n if (id && name) {\n $combobox.find('select').combobox('setSelected');\n $combobox.find('.combobox-container').addClass('combobox-selected');\n } else {\n $combobox.find('.combobox-container').removeClass('combobox-selected');\n }\n}\n\n\nvar BASE64_MARKER = ';base64,';\nfunction convertDataURIToBinary(dataURI) {\n var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;\n var base64 = dataURI.substring(base64Index);\n return base64DecToArr(base64);\n}\n\nif (window.ko) {\n ko.bindingHandlers.dropdown = {\n init: function (element, valueAccessor, allBindingsAccessor) {\n var options = allBindingsAccessor().dropdownOptions|| {};\n var value = ko.utils.unwrapObservable(valueAccessor());\n var id = (value && value.public_id) ? value.public_id() : (value && value.id) ? value.id() : value ? value : false;\n if (id) $(element).val(id);\n //console.log(\"combo-init: %s\", id);\n $(element).combobox(options);\n\n /*\n ko.utils.registerEventHandler(element, \"change\", function () {\n console.log(\"change: %s\", $(element).val());\n //var\n valueAccessor($(element).val());\n //$(element).combobox('refresh');\n });\n */\n },\n update: function (element, valueAccessor) {\n var value = ko.utils.unwrapObservable(valueAccessor());\n var id = (value && value.public_id) ? value.public_id() : (value && value.id) ? value.id() : value ? value : false;\n //console.log(\"combo-update: %s\", id);\n if (id) {\n $(element).val(id);\n $(element).combobox('refresh');\n } else {\n $(element).combobox('clearTarget');\n $(element).combobox('clearElement');\n }\n }\n };\n\n ko.bindingHandlers.combobox = {\n init: function (element, valueAccessor, allBindingsAccessor) {\n var options = allBindingsAccessor().dropdownOptions|| {};\n var value = ko.utils.unwrapObservable(valueAccessor());\n var id = (value && value.public_id) ? value.public_id() : (value && value.id) ? value.id() : value ? value : false;\n if (id) $(element).val(id);\n $(element).combobox(options);\n\n ko.utils.registerEventHandler(element, \"change\", function () {\n var value = valueAccessor();\n value($(element).val());\n });\n },\n update: function (element, valueAccessor) {\n var value = ko.utils.unwrapObservable(valueAccessor());\n var id = (value && value.public_id) ? value.public_id() : (value && value.id) ? value.id() : value ? value : false;\n if (id) {\n $(element).val(id);\n $(element).combobox('refresh');\n } else {\n $(element).combobox('clearTarget');\n $(element).combobox('clearElement');\n }\n }\n };\n\n ko.bindingHandlers.datePicker = {\n init: function (element, valueAccessor, allBindingsAccessor) {\n var value = ko.utils.unwrapObservable(valueAccessor());\n if (value) $(element).datepicker('update', value);\n $(element).change(function() {\n var value = valueAccessor();\n value($(element).val());\n })\n },\n update: function (element, valueAccessor) {\n var value = ko.utils.unwrapObservable(valueAccessor());\n if (value) $(element).datepicker('update', value);\n }\n };\n\n ko.bindingHandlers.placeholder = {\n init: function (element, valueAccessor, allBindingsAccessor) {\n var underlyingObservable = valueAccessor();\n ko.applyBindingsToNode(element, { attr: { placeholder: underlyingObservable } } );\n }\n };\n\n ko.bindingHandlers.tooltip = {\n init: function(element, valueAccessor) {\n var local = ko.utils.unwrapObservable(valueAccessor()),\n options = {};\n\n ko.utils.extend(options, ko.bindingHandlers.tooltip.options);\n ko.utils.extend(options, local);\n\n $(element).tooltip(options);\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, function() {\n $(element).tooltip(\"destroy\");\n });\n },\n options: {\n placement: \"bottom\",\n trigger: \"hover\"\n }\n };\n\n ko.bindingHandlers.typeahead = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\n var $element = $(element);\n var allBindings = allBindingsAccessor();\n\n $element.typeahead({\n highlight: true,\n minLength: 0,\n },\n {\n name: 'data',\n display: allBindings.key,\n limit: 50,\n source: searchData(allBindings.items, allBindings.key)\n }).on('typeahead:change', function(element, datum, name) {\n var value = valueAccessor();\n value(datum);\n });\n },\n\n update: function (element, valueAccessor) {\n var value = ko.utils.unwrapObservable(valueAccessor());\n if (value) {\n $(element).typeahead('val', value);\n }\n }\n };\n}\n\nfunction getContactDisplayName(contact)\n{\n if (contact.first_name || contact.last_name) {\n return $.trim((contact.first_name || '') + ' ' + (contact.last_name || ''));\n } else {\n return contact.email;\n }\n}\n\nfunction getClientDisplayName(client)\n{\n var contact = client.contacts ? client.contacts[0] : false;\n if (client.name) {\n return client.name;\n } else if (contact) {\n return getContactDisplayName(contact);\n }\n return '';\n}\n\nfunction populateInvoiceComboboxes(clientId, invoiceId) {\n var clientMap = {};\n var invoiceMap = {};\n var invoicesForClientMap = {};\n var $clientSelect = $('select#client');\n\n for (var i=0; i<invoices.length; i++) {\n var invoice = invoices[i];\n var client = invoice.client;\n\n if (!invoicesForClientMap.hasOwnProperty(client.public_id)) {\n invoicesForClientMap[client.public_id] = [];\n }\n\n invoicesForClientMap[client.public_id].push(invoice);\n invoiceMap[invoice.public_id] = invoice;\n }\n\n for (var i=0; i<clients.length; i++) {\n var client = clients[i];\n clientMap[client.public_id] = client;\n }\n\n $clientSelect.append(new Option('', ''));\n for (var i=0; i<clients.length; i++) {\n var client = clients[i];\n var clientName = getClientDisplayName(client);\n if (!clientName) {\n continue;\n }\n $clientSelect.append(new Option(clientName, client.public_id));\n }\n\n if (clientId) {\n $clientSelect.val(clientId);\n }\n\n $clientSelect.combobox();\n $clientSelect.on('change', function(e) {\n var clientId = $('input[name=client]').val();\n var invoiceId = $('input[name=invoice]').val();\n var invoice = invoiceMap[invoiceId];\n if (invoice && invoice.client.public_id == clientId) {\n e.preventDefault();\n return;\n }\n setComboboxValue($('.invoice-select'), '', '');\n $invoiceCombobox = $('select#invoice');\n $invoiceCombobox.find('option').remove().end().combobox('refresh');\n $invoiceCombobox.append(new Option('', ''));\n var list = clientId ? (invoicesForClientMap.hasOwnProperty(clientId) ? invoicesForClientMap[clientId] : []) : invoices;\n for (var i=0; i<list.length; i++) {\n var invoice = list[i];\n var client = clientMap[invoice.client.public_id];\n if (!client || !getClientDisplayName(client)) continue; // client is deleted/archived\n $invoiceCombobox.append(new Option(invoice.invoice_number + ' - ' + invoice.invoice_status.name + ' - ' +\n getClientDisplayName(client) + ' - ' + formatMoneyInvoice(invoice.amount, invoice) + ' | ' +\n formatMoneyInvoice(invoice.balance, invoice), invoice.public_id));\n }\n $('select#invoice').combobox('refresh');\n });\n\n var $invoiceSelect = $('select#invoice').on('change', function(e) {\n $clientCombobox = $('select#client');\n var invoiceId = $('input[name=invoice]').val();\n if (invoiceId) {\n var invoice = invoiceMap[invoiceId];\n var client = clientMap[invoice.client.public_id];\n invoice.client = client;\n setComboboxValue($('.client-select'), client.public_id, getClientDisplayName(client));\n if (!parseFloat($('#amount').val())) {\n $('#amount').val(parseFloat(invoice.balance).toFixed(2));\n }\n }\n });\n\n $invoiceSelect.combobox();\n\n if (invoiceId) {\n var invoice = invoiceMap[invoiceId];\n var client = clientMap[invoice.client.public_id];\n invoice.client = client;\n setComboboxValue($('.invoice-select'), invoice.public_id, (invoice.invoice_number + ' - ' +\n invoice.invoice_status.name + ' - ' + getClientDisplayName(client) + ' - ' +\n formatMoneyInvoice(invoice.amount, invoice) + ' | ' + formatMoneyInvoice(invoice.balance, invoice)));\n $invoiceSelect.trigger('change');\n } else if (clientId) {\n var client = clientMap[clientId];\n setComboboxValue($('.client-select'), client.public_id, getClientDisplayName(client));\n $clientSelect.trigger('change');\n } else {\n $clientSelect.trigger('change');\n }\n}\n\n\nvar CONSTS = {};\nCONSTS.INVOICE_STATUS_DRAFT = 1;\nCONSTS.INVOICE_STATUS_SENT = 2;\nCONSTS.INVOICE_STATUS_VIEWED = 3;\nCONSTS.INVOICE_STATUS_APPROVED = 4;\nCONSTS.INVOICE_STATUS_PARTIAL = 5;\nCONSTS.INVOICE_STATUS_PAID = 6;\n\n$.fn.datepicker.defaults.autoclose = true;\n$.fn.datepicker.defaults.todayHighlight = true;\n\nfunction formatAddress(city, state, zip, swap) {\n var str = '';\n if (swap) {\n str += zip ? zip + ' ' : '';\n str += city ? city : '';\n str += (city && state) ? ', ' : (city ? ' ' : '');\n str += state;\n } else {\n str += city ? city : '';\n str += (city && state) ? ', ' : (state ? ' ' : '');\n str += state + ' ' + zip;\n }\n return str;\n}\n\nfunction concatStrings() {\n var concatStr = '';\n var data = [];\n for (var i=0; i<arguments.length; i++) {\n var string = arguments[i];\n if (string) {\n data.push(string);\n }\n }\n for (var i=0; i<data.length; i++) {\n concatStr += data[i];\n if (i == 0 && data.length > 1) {\n concatStr += ', ';\n } else if (i < data.length -1) {\n concatStr += ' ';\n }\n }\n return data.length ? concatStr : \"\";\n}\n\nfunction calculateAmounts(invoice) {\n var total = 0;\n var hasTaxes = false;\n var taxes = {};\n invoice.has_product_key = false;\n\n // Bold designs currently breaks w/o the product column\n if (invoice.invoice_design_id == 2) {\n invoice.has_product_key = true;\n }\n\n // sum line item\n for (var i=0; i<invoice.invoice_items.length; i++) {\n var item = invoice.invoice_items[i];\n var lineTotal = invoice.is_statement ? roundToTwo(NINJA.parseFloat(item.balance)) : roundToTwo(NINJA.parseFloat(item.cost)) * roundToTwo(NINJA.parseFloat(item.qty));\n lineTotal = roundToTwo(lineTotal);\n if (lineTotal) {\n total += lineTotal;\n }\n }\n\n for (var i=0; i<invoice.invoice_items.length; i++) {\n var item = invoice.invoice_items[i];\n var taxRate1 = 0;\n var taxName1 = '';\n var taxRate2 = 0;\n var taxName2 = '';\n\n if (item.product_key) {\n invoice.has_product_key = true;\n } else if (invoice.invoice_items.length == 1 && !item.qty) {\n invoice.has_product_key = true;\n }\n\n if (item.tax_name1) {\n taxRate1 = parseFloat(item.tax_rate1);\n taxName1 = item.tax_name1;\n }\n\n if (item.tax_name2) {\n taxRate2 = parseFloat(item.tax_rate2);\n taxName2 = item.tax_name2;\n }\n\n // calculate line item tax\n var lineTotal = roundToTwo(NINJA.parseFloat(item.cost)) * roundToTwo(NINJA.parseFloat(item.qty));\n if (invoice.discount != 0) {\n if (parseInt(invoice.is_amount_discount)) {\n lineTotal -= roundToTwo((lineTotal/total) * invoice.discount);\n } else {\n lineTotal -= roundToTwo(lineTotal * (invoice.discount/100));\n }\n }\n\n var taxAmount1 = roundToTwo(lineTotal * taxRate1 / 100);\n if (taxName1) {\n var key = taxName1 + taxRate1;\n if (taxes.hasOwnProperty(key)) {\n taxes[key].amount += taxAmount1;\n } else {\n taxes[key] = {name: taxName1, rate:taxRate1, amount:taxAmount1};\n }\n }\n\n var taxAmount2 = roundToTwo(lineTotal * taxRate2 / 100);\n if (taxName2) {\n var key = taxName2 + taxRate2;\n if (taxes.hasOwnProperty(key)) {\n taxes[key].amount += taxAmount2;\n } else {\n taxes[key] = {name: taxName2, rate:taxRate2, amount:taxAmount2};\n }\n }\n\n if (item.tax_name1 || item.tax_name2) {\n hasTaxes = true;\n }\n }\n\n invoice.subtotal_amount = total;\n\n var discount = 0;\n if (invoice.discount != 0) {\n if (parseInt(invoice.is_amount_discount)) {\n discount = roundToTwo(invoice.discount);\n } else {\n discount = roundToTwo(total * (invoice.discount/100));\n }\n total -= discount;\n }\n\n // custom fields with taxes\n if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 == '1') {\n total += roundToTwo(invoice.custom_value1);\n }\n if (NINJA.parseFloat(invoice.custom_value2) && invoice.custom_taxes2 == '1') {\n total += roundToTwo(invoice.custom_value2);\n }\n\n taxRate1 = 0;\n taxRate2 = 0;\n if (invoice.tax_rate1 && parseFloat(invoice.tax_rate1)) {\n taxRate1 = parseFloat(invoice.tax_rate1);\n }\n if (invoice.tax_rate2 && parseFloat(invoice.tax_rate2)) {\n taxRate2 = parseFloat(invoice.tax_rate2);\n }\n taxAmount1 = roundToTwo(total * (taxRate1/100));\n taxAmount2 = roundToTwo(total * (taxRate2/100));\n total = total + taxAmount1 + taxAmount2;\n\n for (var key in taxes) {\n if (taxes.hasOwnProperty(key)) {\n total += taxes[key].amount;\n }\n }\n\n // custom fields w/o with taxes\n if (NINJA.parseFloat(invoice.custom_value1) && invoice.custom_taxes1 != '1') {\n total += roundToTwo(invoice.custom_value1);\n }\n if (NINJA.parseFloat(invoice.custom_value2) && invoice.custom_taxes2 != '1') {\n total += roundToTwo(invoice.custom_value2);\n }\n\n invoice.total_amount = roundToTwo(roundToTwo(total) - (roundToTwo(invoice.amount) - roundToTwo(invoice.balance)));\n invoice.discount_amount = discount;\n invoice.tax_amount1 = taxAmount1;\n invoice.tax_amount2 = taxAmount2;\n invoice.item_taxes = taxes;\n\n if (NINJA.parseFloat(invoice.partial)) {\n invoice.balance_amount = roundToTwo(invoice.partial);\n } else {\n invoice.balance_amount = invoice.total_amount;\n }\n\n return invoice;\n}\n\n// http://stackoverflow.com/questions/11941876/correctly-suppressing-warnings-in-datatables\nwindow.alert = (function() {\n var nativeAlert = window.alert;\n return function(message) {\n window.alert = nativeAlert;\n message && message.indexOf(\"DataTables warning\") === 0 ?\n console.error(message) :\n nativeAlert(message);\n }\n})();\n\n\n// http://stackoverflow.com/questions/1068834/object-comparison-in-javascript\nfunction objectEquals(x, y) {\n // if both are function\n if (x instanceof Function) {\n if (y instanceof Function) {\n return x.toString() === y.toString();\n }\n return false;\n }\n if (x === null || x === undefined || y === null || y === undefined) { return x === y; }\n if (x === y || x.valueOf() === y.valueOf()) { return true; }\n\n // if one of them is date, they must had equal valueOf\n if (x instanceof Date) { return false; }\n if (y instanceof Date) { return false; }\n\n // if they are not function or strictly equal, they both need to be Objects\n if (!(x instanceof Object)) { return false; }\n if (!(y instanceof Object)) { return false; }\n\n var p = Object.keys(x);\n return Object.keys(y).every(function (i) { return p.indexOf(i) !== -1; }) ?\n p.every(function (i) { return objectEquals(x[i], y[i]); }) : false;\n}\n\n\n\n/*\\\n|*|\n|*| Base64 / binary data / UTF-8 strings utilities\n|*|\n|*| https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding\n|*|\n\\*/\n\n/* Array of bytes to base64 string decoding */\n\nfunction b64ToUint6 (nChr) {\n\n return nChr > 64 && nChr < 91 ?\n nChr - 65\n : nChr > 96 && nChr < 123 ?\n nChr - 71\n : nChr > 47 && nChr < 58 ?\n nChr + 4\n : nChr === 43 ?\n 62\n : nChr === 47 ?\n 63\n :\n 0;\n\n}\n\nfunction base64DecToArr (sBase64, nBlocksSize) {\n\n var\n sB64Enc = sBase64.replace(/[^A-Za-z0-9\\+\\/]/g, \"\"), nInLen = sB64Enc.length,\n nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2, taBytes = new Uint8Array(nOutLen);\n\n for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3;\n nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\n }\n nUint24 = 0;\n\n }\n }\n\n return taBytes;\n}\n\n/* Base64 string to array encoding */\n\nfunction uint6ToB64 (nUint6) {\n\n return nUint6 < 26 ?\n nUint6 + 65\n : nUint6 < 52 ?\n nUint6 + 71\n : nUint6 < 62 ?\n nUint6 - 4\n : nUint6 === 62 ?\n 43\n : nUint6 === 63 ?\n 47\n :\n 65;\n\n}\n\nfunction base64EncArr (aBytes) {\n\n var nMod3 = 2, sB64Enc = \"\";\n\n for (var nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\n nMod3 = nIdx % 3;\n if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\n sB64Enc += String.fromCharCode(uint6ToB64(nUint24 >>> 18 & 63), uint6ToB64(nUint24 >>> 12 & 63), uint6ToB64(nUint24 >>> 6 & 63), uint6ToB64(nUint24 & 63));\n nUint24 = 0;\n }\n }\n\n return sB64Enc.substr(0, sB64Enc.length - 2 + nMod3) + (nMod3 === 2 ? '' : nMod3 === 1 ? '=' : '==');\n\n}\n\n/* UTF-8 array to DOMString and vice versa */\n\nfunction UTF8ArrToStr (aBytes) {\n\n var sView = \"\";\n\n for (var nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\n nPart = aBytes[nIdx];\n sView += String.fromCharCode(\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\n /* (nPart - 252 << 32) is not possible in ECMAScript! So...: */\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\n : /* nPart < 127 ? */ /* one byte */\n nPart\n );\n }\n\n return sView;\n\n}\n\nfunction strToUTF8Arr (sDOMStr) {\n\n var aBytes, nChr, nStrLen = sDOMStr.length, nArrLen = 0;\n\n /* mapping... */\n\n for (var nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\n nChr = sDOMStr.charCodeAt(nMapIdx);\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\n }\n\n aBytes = new Uint8Array(nArrLen);\n\n /* transcription... */\n\n for (var nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\n nChr = sDOMStr.charCodeAt(nChrIdx);\n if (nChr < 128) {\n /* one byte */\n aBytes[nIdx++] = nChr;\n } else if (nChr < 0x800) {\n /* two bytes */\n aBytes[nIdx++] = 192 + (nChr >>> 6);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x10000) {\n /* three bytes */\n aBytes[nIdx++] = 224 + (nChr >>> 12);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x200000) {\n /* four bytes */\n aBytes[nIdx++] = 240 + (nChr >>> 18);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x4000000) {\n /* five bytes */\n aBytes[nIdx++] = 248 + (nChr >>> 24);\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else /* if (nChr <= 0x7fffffff) */ {\n /* six bytes */\n aBytes[nIdx++] = 252 + /* (nChr >>> 32) is not possible in ECMAScript! So...: */ (nChr / 1073741824);\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n }\n }\n\n return aBytes;\n\n}\n\n\n\nfunction hexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}\nfunction hexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}\nfunction hexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}\nfunction cutHex(h) {return (h.charAt(0)==\"#\") ? h.substring(1,7):h}\nfunction setDocHexColor(doc, hex) {\n var r = hexToR(hex);\n var g = hexToG(hex);\n var b = hexToB(hex);\n return doc.setTextColor(r, g, b);\n}\nfunction setDocHexFill(doc, hex) {\n var r = hexToR(hex);\n var g = hexToG(hex);\n var b = hexToB(hex);\n return doc.setFillColor(r, g, b);\n}\nfunction setDocHexDraw(doc, hex) {\n var r = hexToR(hex);\n var g = hexToG(hex);\n var b = hexToB(hex);\n return doc.setDrawColor(r, g, b);\n}\n\nfunction toggleDatePicker(field) {\n $('#'+field).datepicker('show');\n}\n\nfunction roundToTwo(num, toString) {\n var val = +(Math.round(num + \"e+2\") + \"e-2\");\n return toString ? val.toFixed(2) : (val || 0);\n}\n\nfunction roundToFour(num, toString) {\n var val = +(Math.round(num + \"e+4\") + \"e-4\");\n return toString ? val.toFixed(4) : (val || 0);\n}\n\nfunction truncate(str, length) {\n return (str && str.length > length) ? (str.substr(0, length-1) + '...') : str;\n}\n\n// http://stackoverflow.com/questions/280634/endswith-in-javascript\nfunction endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n}\n\n// http://codeaid.net/javascript/convert-seconds-to-hours-minutes-and-seconds-%28javascript%29\nfunction secondsToTime(secs)\n{\n secs = Math.round(secs);\n var hours = Math.floor(secs / (60 * 60));\n\n var divisor_for_minutes = secs % (60 * 60);\n var minutes = Math.floor(divisor_for_minutes / 60);\n\n var divisor_for_seconds = divisor_for_minutes % 60;\n var seconds = Math.ceil(divisor_for_seconds);\n\n var obj = {\n \"h\": hours,\n \"m\": minutes,\n \"s\": seconds\n };\n return obj;\n}\n\nfunction twoDigits(value) {\n if (value < 10) {\n return '0' + value;\n }\n return value;\n}\n\nfunction toSnakeCase(str) {\n if (!str) return '';\n return str.replace(/([A-Z])/g, function($1){return \"_\"+$1.toLowerCase();});\n}\n\n// https://coderwall.com/p/iprsng/convert-snake-case-to-camelcase\nfunction snakeToCamel(s){\n return s.replace(/_([a-z])/g, function (g) { return g[1].toUpperCase(); });\n}\n\nfunction getDescendantProp(obj, desc) {\n var arr = desc.split(\".\");\n while(arr.length && (obj = obj[arr.shift()]));\n return obj;\n}\n\nfunction doubleDollarSign(str) {\n if (!str) return '';\n if (!str.replace) return str;\n return str.replace(/\\$/g, '\\$\\$\\$');\n}\n\nfunction truncate(string, length){\n if (string.length > length) {\n return string.substring(0, length) + '...';\n } else {\n return string;\n }\n};\n\n// Show/hide the 'Select' option in the datalists\nfunction actionListHandler() {\n $('tbody tr .tr-action').closest('tr').mouseover(function() {\n $(this).closest('tr').find('.tr-action').show();\n $(this).closest('tr').find('.tr-status').hide();\n }).mouseout(function() {\n $dropdown = $(this).closest('tr').find('.tr-action');\n if (!$dropdown.hasClass('open')) {\n $dropdown.hide();\n $(this).closest('tr').find('.tr-status').show();\n }\n });\n}\n\nfunction loadImages(selector) {\n $(selector + ' img').each(function(index, item) {\n var src = $(item).attr('data-src');\n $(item).attr('src', src);\n $(item).attr('data-src', src);\n });\n}\n\n// http://stackoverflow.com/questions/4810841/how-can-i-pretty-print-json-using-javascript\nfunction prettyJson(json) {\n if (typeof json != 'string') {\n json = JSON.stringify(json, undefined, 2);\n }\n json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n return json.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function (match) {\n var cls = 'number';\n if (/^\"/.test(match)) {\n if (/:$/.test(match)) {\n cls = 'key';\n } else {\n cls = 'string';\n }\n } else if (/true|false/.test(match)) {\n cls = 'boolean';\n } else if (/null/.test(match)) {\n cls = 'null';\n }\n match = snakeToCamel(match);\n return '<span class=\"' + cls + '\">' + match + '</span>';\n });\n}\n\nfunction searchData(data, key, fuzzy) {\n return function findMatches(q, cb) {\n var matches, substringRegex;\n if (fuzzy) {\n var options = {\n keys: [key],\n }\n var fuse = new Fuse(data, options);\n matches = fuse.search(q);\n } else {\n matches = [];\n substrRegex = new RegExp(escapeRegExp(q), 'i');\n $.each(data, function(i, obj) {\n if (substrRegex.test(obj[key])) {\n matches.push(obj);\n }\n });\n }\n cb(matches);\n }\n};\n\nfunction escapeRegExp(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n}\n\nfunction firstJSONError(json) {\n for (var key in json) {\n if ( ! json.hasOwnProperty(key)) {\n continue;\n }\n var item = json[key];\n for (var subKey in item) {\n if ( ! item.hasOwnProperty(subKey)) {\n continue;\n }\n return item[subKey];\n }\n }\n return false;\n}\n\n// http://stackoverflow.com/questions/10073699/pad-a-number-with-leading-zeros-in-javascript\nfunction pad(n, width, z) {\n z = z || '0';\n n = n + '';\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n}\n","var NINJA = NINJA || {};\n\nNINJA.TEMPLATES = {\n CLEAN: \"1\",\n BOLD:\"2\",\n MODERN: \"3\",\n NORMAL:\"4\",\n BUSINESS:\"5\",\n CREATIVE:\"6\",\n ELEGANT:\"7\",\n HIPSTER:\"8\",\n PLAYFUL:\"9\",\n PHOTO:\"10\"\n};\n\nfunction GetPdfMake(invoice, javascript, callback) {\n\n javascript = NINJA.decodeJavascript(invoice, javascript);\n\n function jsonCallBack(key, val) {\n\n // handle custom functions\n if (typeof val === 'string') {\n if (val.indexOf('$firstAndLast') === 0) {\n var parts = val.split(':');\n return function (i, node) {\n return (i === 0 || i === node.table.body.length) ? parseFloat(parts[1]) : 0;\n };\n } else if (val.indexOf('$none') === 0) {\n return function (i, node) {\n return 0;\n };\n } else if (val.indexOf('$notFirstAndLastColumn') === 0) {\n var parts = val.split(':');\n return function (i, node) {\n return (i === 0 || i === node.table.widths.length) ? 0 : parseFloat(parts[1]);\n };\n } else if (val.indexOf('$notFirst') === 0) {\n var parts = val.split(':');\n return function (i, node) {\n return i === 0 ? 0 : parseFloat(parts[1]);\n };\n } else if (val.indexOf('$amount') === 0) {\n var parts = val.split(':');\n return function (i, node) {\n return parseFloat(parts[1]);\n };\n } else if (val.indexOf('$primaryColor') === 0) {\n var parts = val.split(':');\n return NINJA.primaryColor || parts[1];\n } else if (val.indexOf('$secondaryColor') === 0) {\n var parts = val.split(':');\n return NINJA.secondaryColor || parts[1];\n }\n }\n\n // determine whether or not to show the header/footer\n if (invoice.features.customize_invoice_design) {\n if (key === 'header') {\n return function(page, pages) {\n if (page === 1 || invoice.account.all_pages_header == '1') {\n if (invoice.features.remove_created_by) {\n return NINJA.updatePageCount(JSON.parse(JSON.stringify(val)), page, pages);\n } else {\n return val;\n }\n } else {\n return '';\n }\n }\n } else if (key === 'footer') {\n return function(page, pages) {\n if (page === pages || invoice.account.all_pages_footer == '1') {\n if (invoice.features.remove_created_by) {\n return NINJA.updatePageCount(JSON.parse(JSON.stringify(val)), page, pages);\n } else {\n return val;\n }\n } else {\n return '';\n }\n }\n }\n }\n\n // check for markdown\n if (key === 'text') {\n val = NINJA.parseMarkdownText(val, true);\n }\n\n /*\n if (key === 'stack') {\n val = NINJA.parseMarkdownStack(val);\n val = NINJA.parseMarkdownText(val, false);\n }\n */\n\n return val;\n }\n\n // Add ninja logo to the footer\n var dd = JSON.parse(javascript, jsonCallBack);\n var designId = invoice.invoice_design_id;\n if (!invoice.features.remove_created_by && ! isEdge) {\n var footer = (typeof dd.footer === 'function') ? dd.footer() : dd.footer;\n if (footer) {\n if (footer.hasOwnProperty('columns')) {\n footer.columns.push({image: logoImages.imageLogo1, alignment: 'right', width: 130, margin: [0, 0, 0, 0]})\n } else {\n var foundColumns;\n for (var i=0; i<footer.length; i++) {\n var item = footer[i];\n if (item.hasOwnProperty('columns')) {\n foundColumns = true;\n var columns = item.columns;\n if (columns[0].hasOwnProperty('stack')) {\n columns[0].stack.push({image: logoImages.imageLogo3, alignment: 'left', width: 130, margin: [40, 6, 0, 0]});\n } else {\n columns.push({image: logoImages.imageLogo1, alignment: 'right', width: 130, margin: [0, -40, 20, 0]})\n }\n }\n }\n if (!foundColumns) {\n footer.push({image: logoImages.imageLogo1, alignment: 'right', width: 130, margin: [0, 0, 10, 10]})\n }\n }\n }\n }\n\n // set page size\n dd.pageSize = invoice.account.page_size;\n\n //dd.watermark = {text: 'PAID', color: 'blue', opacity: 0.3};\n\n pdfMake.fonts = {}\n fonts = window.invoiceFonts || invoice.invoice_fonts;\n\n // Add only the loaded fonts\n $.each(fonts, function(i,font){\n addFont(font);\n });\n\n\n function addFont(font){\n if(window.ninjaFontVfs[font.folder]){\n folder = 'fonts/'+font.folder;\n pdfMake.fonts[font.name] = {\n normal: folder+'/'+font.normal,\n italics: folder+'/'+font.italics,\n bold: folder+'/'+font.bold,\n bolditalics: folder+'/'+font.bolditalics\n }\n }\n }\n\n if(!dd.defaultStyle)dd.defaultStyle = {font:NINJA.bodyFont};\n else if(!dd.defaultStyle.font)dd.defaultStyle.font = NINJA.bodyFont;\n\n doc = pdfMake.createPdf(dd);\n doc.save = function(fileName) {\n this.download(fileName);\n };\n\n return doc;\n}\n\nNINJA.updatePageCount = function(obj, pageNumber, pageCount)\n{\n var pageNumberRegExp = new RegExp('\\\\$pageNumber', 'g');\n var pageCountRegExp = new RegExp('\\\\$pageCount', 'g');\n\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n var val = obj[key];\n if (typeof val === 'string') {\n val = val.replace(pageNumberRegExp, pageNumber);\n val = val.replace(pageCountRegExp, pageCount);\n obj[key] = val;\n } else if (typeof val === 'object') {\n obj[key] = NINJA.updatePageCount(val, pageNumber, pageCount);\n }\n }\n\n return obj;\n}\n\nNINJA.decodeJavascript = function(invoice, javascript)\n{\n var account = invoice.account;\n var blankImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=';\n\n // search/replace variables\n var json = {\n 'accountName': account.name || ' ',\n 'accountLogo': ( ! isEdge && window.accountLogo) ? window.accountLogo : blankImage,\n 'accountDetails': NINJA.accountDetails(invoice),\n 'accountAddress': NINJA.accountAddress(invoice),\n 'invoiceDetails': NINJA.invoiceDetails(invoice),\n 'invoiceDetailsHeight': (NINJA.invoiceDetails(invoice).length * 16) + 16,\n 'invoiceLineItems': invoice.is_statement ? NINJA.statementLines(invoice) : NINJA.invoiceLines(invoice),\n 'invoiceLineItemColumns': invoice.is_statement ? NINJA.statementColumns(invoice) : NINJA.invoiceColumns(invoice),\n 'invoiceDocuments' : isEdge ? [] : NINJA.invoiceDocuments(invoice),\n 'quantityWidth': NINJA.quantityWidth(invoice),\n 'taxWidth': NINJA.taxWidth(invoice),\n 'clientDetails': NINJA.clientDetails(invoice),\n 'notesAndTerms': NINJA.notesAndTerms(invoice),\n 'subtotals': invoice.is_statement ? NINJA.statementSubtotals(invoice) : NINJA.subtotals(invoice),\n 'subtotalsHeight': (NINJA.subtotals(invoice).length * 16) + 16,\n 'subtotalsWithoutBalance': invoice.is_statement ? [[]] : NINJA.subtotals(invoice, true),\n 'subtotalsBalance': NINJA.subtotalsBalance(invoice),\n 'balanceDue': formatMoneyInvoice(invoice.balance_amount, invoice),\n 'invoiceFooter': NINJA.invoiceFooter(invoice),\n 'invoiceNumber': invoice.invoice_number || ' ',\n 'entityType': invoice.is_statement ? invoiceLabels.statement : invoice.is_quote ? invoiceLabels.quote : invoice.balance_amount < 0 ? invoiceLabels.credit_note : invoiceLabels.invoice,\n 'entityTypeUC': (invoice.is_statement ? invoiceLabels.statement : invoice.is_quote ? invoiceLabels.quote : invoice.balance_amount < 0 ? invoiceLabels.credit_note : invoiceLabels.invoice).toUpperCase(),\n 'entityTaxType': invoice.is_statement ? invoiceLabels.statement : invoice.is_quote ? invoiceLabels.tax_quote : invoiceLabels.tax_invoice,\n 'fontSize': NINJA.fontSize,\n 'fontSizeLarger': NINJA.fontSize + 1,\n 'fontSizeLargest': NINJA.fontSize + 2,\n 'fontSizeSmaller': NINJA.fontSize - 1,\n 'bodyFont': NINJA.bodyFont,\n 'headerFont': NINJA.headerFont,\n }\n\n for (var key in json) {\n // remove trailing commas for these fields\n if (['quantityWidth', 'taxWidth'].indexOf(key) >= 0) {\n var regExp = new RegExp('\"\\\\$'+key+'\",', 'g');\n val = json[key];\n } else {\n var regExp = new RegExp('\"\\\\$'+key+'\"', 'g');\n var val = JSON.stringify(json[key]);\n val = doubleDollarSign(val);\n }\n javascript = javascript.replace(regExp, val);\n }\n\n // search/replace labels\n var regExp = new RegExp('\"\\\\$\\\\\\w*?Label(UC)?(:)?(\\\\\\?)?\"', 'g');\n var matches = javascript.match(regExp);\n\n if (matches) {\n for (var i=0; i<matches.length; i++) {\n var match = matches[i];\n field = match.substring(2, match.indexOf('Label'));\n field = toSnakeCase(field);\n var value = getDescendantProp(invoice, field);\n if (match.indexOf('?') < 0 || value) {\n if (invoice.partial > 0 && field == 'balance_due') {\n field = 'partial_due';\n } else if (invoice.is_quote) {\n if (field == 'due_date') {\n field = 'valid_until';\n } else {\n field = field.replace('invoice', 'quote');\n }\n }\n if (invoice.is_statement) {\n if (field == 'your_invoice') {\n field = 'your_statement';\n } else if (field == 'invoice_issued_to') {\n field = 'statement_issued_to';\n } else if (field == 'invoice_to') {\n field = 'statement_to';\n }\n } else if (invoice.balance_amount < 0) {\n if (field == 'your_invoice') {\n field = 'your_credit';\n } else if (field == 'invoice_issued_to') {\n field = 'credit_issued_to';\n } else if (field == 'invoice_to') {\n field = 'credit_to';\n }\n }\n\n var label = invoiceLabels[field];\n if (match.indexOf('UC') >= 0) {\n label = label.toUpperCase();\n }\n if (match.indexOf(':') >= 0) {\n label = label + ':';\n }\n } else {\n label = ' ';\n }\n javascript = javascript.replace(match, '\"'+label+'\"');\n }\n }\n\n // search/replace values\n var regExp = new RegExp('\"\\\\$[a-z][\\\\\\w\\\\\\.]*?[Value]?\"', 'g');\n var matches = javascript.match(regExp);\n\n if (matches) {\n for (var i=0; i<matches.length; i++) {\n var match = matches[i];\n\n // reserved words\n if ([\n '\"$none\"',\n '\"$firstAndLast\"',\n '\"$notFirstAndLastColumn\"',\n '\"$notFirst\"',\n '\"$amount\"',\n '\"$primaryColor\"',\n '\"$secondaryColor\"',\n ].indexOf(match) >= 0) {\n continue;\n }\n\n // legacy style had 'Value' at the end\n if (endsWith(match, 'Value\"')) {\n field = match.substring(2, match.indexOf('Value'));\n } else {\n field = match.substring(2, match.length - 1);\n }\n field = toSnakeCase(field);\n\n var value = getDescendantProp(invoice, field) || ' ';\n value = doubleDollarSign(value);\n javascript = javascript.replace(match, '\"'+value+'\"');\n }\n }\n\n return javascript;\n}\n\n\nNINJA.notesAndTerms = function(invoice)\n{\n var data = [];\n\n if (invoice.public_notes) {\n data.push({stack:[{text: invoice.is_recurring ? processVariables(invoice.public_notes) : invoice.public_notes, style: ['notes']}]});\n data.push({text:' '});\n }\n\n if (invoice.terms) {\n data.push({text:invoiceLabels.terms, style: ['termsLabel']});\n data.push({stack:[{text: invoice.is_recurring ? processVariables(invoice.terms) : invoice.terms, style: ['terms']}]});\n }\n\n return NINJA.prepareDataList(data, 'notesAndTerms');\n}\n\nNINJA.statementColumns = function(invoice)\n{\n return [\"22%\", \"22%\", \"22%\", \"17%\", \"17%\"];\n}\n\nNINJA.statementLines = function(invoice)\n{\n var grid = [[]];\n grid[0].push({text: invoiceLabels.invoice_number, style: ['tableHeader', 'itemTableHeader']});\n grid[0].push({text: invoiceLabels.invoice_date, style: ['tableHeader', 'invoiceDateTableHeader']});\n grid[0].push({text: invoiceLabels.due_date, style: ['tableHeader', 'dueDateTableHeader']});\n grid[0].push({text: invoiceLabels.total, style: ['tableHeader', 'totalTableHeader']});\n grid[0].push({text: invoiceLabels.balance, style: ['tableHeader', 'balanceTableHeader']});\n\n for (var i = 0; i < invoice.invoice_items.length; i++) {\n var item = invoice.invoice_items[i];\n var row = [];\n var rowStyle = (i % 2 == 0) ? 'odd' : 'even';\n grid.push([\n {text: item.invoice_number, style:['invoiceNumber', 'productKey', rowStyle]},\n {text: item.invoice_date && item.invoice_date != '0000-00-00' ? moment(item.invoice_date).format(invoice.date_format) : ' ', style:['invoiceDate', rowStyle]},\n {text: item.due_date && item.due_date != '0000-00-00' ? moment(item.due_date).format(invoice.date_format) : ' ', style:['dueDate', rowStyle]},\n {text: formatMoneyInvoice(item.amount, invoice), style:['subtotals', rowStyle]},\n {text: formatMoneyInvoice(item.balance, invoice), style:['lineTotal', rowStyle]},\n ]);\n }\n\n return NINJA.prepareDataTable(grid, 'invoiceItems');\n}\n\nNINJA.invoiceColumns = function(invoice)\n{\n var account = invoice.account;\n var columns = [];\n\n if (invoice.has_product_key) {\n columns.push(\"15%\");\n }\n\n columns.push(\"*\")\n\n if (invoice.features.invoice_settings && account.custom_invoice_item_label1) {\n columns.push(\"10%\");\n }\n if (invoice.features.invoice_settings && account.custom_invoice_item_label2) {\n columns.push(\"10%\");\n }\n\n var count = 3;\n if (account.hide_quantity == '1') {\n count -= 2;\n }\n if (account.show_item_taxes == '1') {\n count++;\n }\n for (var i=0; i<count; i++) {\n columns.push(\"14%\");\n }\n\n return columns;\n}\n\nNINJA.invoiceFooter = function(invoice)\n{\n var footer = invoice.invoice_footer;\n\n if (invoice.is_recurring) {\n footer = processVariables(footer);\n }\n\n if (!invoice.features.invoice_settings && invoice.invoice_design_id == 3) {\n return footer ? footer.substring(0, 200) : ' ';\n } else {\n return footer || ' ';\n }\n}\n\nNINJA.quantityWidth = function(invoice)\n{\n return invoice.account.hide_quantity == '1' ? '' : '\"14%\", ';\n}\n\nNINJA.taxWidth = function(invoice)\n{\n return invoice.account.show_item_taxes == '1' ? '\"14%\", ' : '';\n}\n\nNINJA.invoiceLines = function(invoice) {\n var account = invoice.account;\n var total = 0;\n var shownItem = false;\n var hideQuantity = invoice.account.hide_quantity == '1';\n var showItemTaxes = invoice.account.show_item_taxes == '1';\n\n var grid = [[]];\n\n if (invoice.has_product_key) {\n grid[0].push({text: invoiceLabels.item, style: ['tableHeader', 'itemTableHeader']});\n }\n\n grid[0].push({text: invoiceLabels.description, style: ['tableHeader', 'descriptionTableHeader']});\n\n if (invoice.features.invoice_settings && account.custom_invoice_item_label1) {\n grid[0].push({text: account.custom_invoice_item_label1, style: ['tableHeader', 'custom1TableHeader']});\n }\n if (invoice.features.invoice_settings && account.custom_invoice_item_label2) {\n grid[0].push({text: account.custom_invoice_item_label2, style: ['tableHeader', 'custom2TableHeader']});\n }\n\n if (!hideQuantity) {\n grid[0].push({text: invoiceLabels.unit_cost, style: ['tableHeader', 'costTableHeader']});\n grid[0].push({text: invoiceLabels.quantity, style: ['tableHeader', 'qtyTableHeader']});\n }\n if (showItemTaxes) {\n grid[0].push({text: invoiceLabels.tax, style: ['tableHeader', 'taxTableHeader']});\n }\n\n grid[0].push({text: invoiceLabels.line_total, style: ['tableHeader', 'lineTotalTableHeader']});\n for (var i = 0; i < invoice.invoice_items.length; i++) {\n\n var row = [];\n var item = invoice.invoice_items[i];\n var cost = formatMoneyInvoice(item.cost, invoice, 'none');\n var qty = NINJA.parseFloat(item.qty) ? roundToTwo(NINJA.parseFloat(item.qty)) + '' : '';\n var notes = item.notes;\n var productKey = item.product_key;\n var tax1 = '';\n var tax2 = '';\n var custom_value1 = item.custom_value1;\n var custom_value2 = item.custom_value2;\n\n if (showItemTaxes) {\n if (item.tax_name1) {\n tax1 = parseFloat(item.tax_rate1);\n }\n if (item.tax_name2) {\n tax2 = parseFloat(item.tax_rate2);\n }\n }\n\n // show at most one blank line\n if (shownItem && !notes && !productKey && (!cost || cost == '0' || cost == '0.00' || cost == '0,00')) {\n continue;\n }\n\n shownItem = true;\n\n // process date variables\n if (invoice.is_recurring) {\n notes = processVariables(notes);\n productKey = processVariables(productKey);\n custom_value1 = processVariables(item.custom_value1);\n custom_value2 = processVariables(item.custom_value2);\n }\n\n var lineTotal = roundToTwo(NINJA.parseFloat(item.cost)) * roundToTwo(NINJA.parseFloat(item.qty));\n if (account.include_item_taxes_inline == '1') {\n if (tax1) {\n lineTotal += lineTotal * tax1 / 100;\n lineTotal = roundToTwo(lineTotal);\n }\n if (tax2) {\n lineTotal += lineTotal * tax2 / 100;\n lineTotal = roundToTwo(lineTotal);\n }\n }\n lineTotal = formatMoneyInvoice(lineTotal, invoice);\n\n rowStyle = (i % 2 == 0) ? 'odd' : 'even';\n\n if (invoice.has_product_key) {\n row.push({style:[\"productKey\", rowStyle], text:productKey || ' '}); // product key can be blank when selecting from a datalist\n }\n row.push({style:[\"notes\", rowStyle], stack:[{text:notes || ' '}]});\n if (invoice.features.invoice_settings && account.custom_invoice_item_label1) {\n row.push({style:[\"customValue1\", rowStyle], text:custom_value1 || ' '});\n }\n if (invoice.features.invoice_settings && account.custom_invoice_item_label2) {\n row.push({style:[\"customValue2\", rowStyle], text:custom_value2 || ' '});\n }\n if (!hideQuantity) {\n row.push({style:[\"cost\", rowStyle], text:cost});\n row.push({style:[\"quantity\", rowStyle], text:formatAmount(qty, invoice.client.currency_id) || ' '});\n }\n if (showItemTaxes) {\n var str = ' ';\n if (item.tax_name1) {\n str += tax1.toString() + '%';\n }\n if (item.tax_name2) {\n if (item.tax_name1) {\n str += ' ';\n }\n str += tax2.toString() + '%';\n }\n row.push({style:[\"tax\", rowStyle], text:str});\n }\n row.push({style:[\"lineTotal\", rowStyle], text:lineTotal || ' '});\n\n grid.push(row);\n }\n\n return NINJA.prepareDataTable(grid, 'invoiceItems');\n}\n\nNINJA.invoiceDocuments = function(invoice) {\n if (invoice.account.invoice_embed_documents != '1') {\n return [];\n }\n\n var j = 0;\n var stack = [];\n var stackItem = null;\n\n if (invoice.documents) {\n for (var i = 0; i < invoice.documents.length; i++) {\n addDoc(invoice.documents[i]);\n }\n }\n\n if (invoice.expenses) {\n for (var i = 0; i < invoice.expenses.length; i++) {\n var expense = invoice.expenses[i];\n for (var j = 0; j < expense.documents.length; j++) {\n addDoc(expense.documents[j]);\n }\n }\n }\n\n function addDoc(document){\n var path = document.base64;\n\n if(!path)path = 'docs/'+document.public_id+'/'+document.name;\n if(path && (window.pdfMake.vfs[path] || document.base64)){\n // Only embed if we actually have an image for it\n if(j%3==0){\n stackItem = {columns:[]};\n stack.push(stackItem);\n }\n stackItem.columns.push({stack:[{image:path,style:'invoiceDocument',fit:[150,150]}], width:175})\n j++;\n }\n }\n\n return stack.length?{stack:stack}:[];\n}\n\nNINJA.statementSubtotals = function(invoice)\n{\n var data = [[\n { text: invoiceLabels.balance_due, style: ['subtotalsLabel', 'balanceDueLabel'] },\n { text: formatMoneyInvoice(invoice.balance_amount, invoice), style: ['subtotals', 'balanceDue'] }\n ]];\n\n return NINJA.prepareDataPairs(data, 'subtotals');\n}\n\nNINJA.subtotals = function(invoice, hideBalance)\n{\n if (!invoice) {\n return;\n }\n\n var account = invoice.account;\n var data = [];\n data.push([{text: invoiceLabels.subtotal, style: ['subtotalsLabel', 'subtotalLabel']}, {text: formatMoneyInvoice(invoice.subtotal_amount, invoice), style: ['subtotals', 'subtotal']}]);\n\n if (invoice.discount_amount != 0) {\n data.push([{text: invoiceLabels.discount , style: ['subtotalsLabel', 'discountLabel']}, {text: formatMoneyInvoice(invoice.discount_amount, invoice), style: ['subtotals', 'discount']}]);\n }\n\n var customValue1 = NINJA.parseFloat(invoice.custom_value1);\n var customValue1Label = customValue1 >= 0 ? (account.custom_invoice_label1 || invoiceLabels.surcharge) : invoiceLabels.discount;\n\n var customValue2 = NINJA.parseFloat(invoice.custom_value2);\n var customValue2Label = customValue2 >= 0 ? (account.custom_invoice_label2 || invoiceLabels.surcharge) : invoiceLabels.discount;\n\n if (customValue1 && invoice.custom_taxes1 == '1') {\n data.push([{text: customValue1Label, style: ['subtotalsLabel', 'customTax1Label']}, {text: formatMoneyInvoice(invoice.custom_value1, invoice), style: ['subtotals', 'customTax1']}]);\n }\n if (customValue2 && invoice.custom_taxes2 == '1') {\n data.push([{text: customValue2Label, style: ['subtotalsLabel', 'customTax2Label']}, {text: formatMoneyInvoice(invoice.custom_value2, invoice), style: ['subtotals', 'customTax2']}]);\n }\n\n for (var key in invoice.item_taxes) {\n if (invoice.item_taxes.hasOwnProperty(key)) {\n var taxRate = invoice.item_taxes[key];\n var taxStr = taxRate.name + ' ' + (taxRate.rate*1).toString() + '%';\n data.push([{text: taxStr, style: ['subtotalsLabel', 'taxLabel']}, {text: formatMoneyInvoice(taxRate.amount, invoice), style: ['subtotals', 'tax']}]);\n }\n }\n\n if (invoice.tax_name1) {\n var taxStr = invoice.tax_name1 + ' ' + (invoice.tax_rate1*1).toString() + '%';\n data.push([{text: taxStr, style: ['subtotalsLabel', 'tax1Label']}, {text: formatMoneyInvoice(invoice.tax_amount1, invoice), style: ['subtotals', 'tax1']}]);\n }\n if (invoice.tax_name2) {\n var taxStr = invoice.tax_name2 + ' ' + (invoice.tax_rate2*1).toString() + '%';\n data.push([{text: taxStr, style: ['subtotalsLabel', 'tax2Label']}, {text: formatMoneyInvoice(invoice.tax_amount2, invoice), style: ['subtotals', 'tax2']}]);\n }\n\n if (customValue1 && invoice.custom_taxes1 != '1') {\n data.push([{text: customValue1Label, style: ['subtotalsLabel', 'custom1Label']}, {text: formatMoneyInvoice(invoice.custom_value1, invoice), style: ['subtotals', 'custom1']}]);\n }\n if (customValue2 && invoice.custom_taxes2 != '1') {\n data.push([{text: customValue2Label, style: ['subtotalsLabel', 'custom2Label']}, {text: formatMoneyInvoice(invoice.custom_value2, invoice), style: ['subtotals', 'custom2']}]);\n }\n\n var paid = invoice.amount - invoice.balance;\n if (!invoice.is_quote && invoice.balance_amount >= 0 && (invoice.account.hide_paid_to_date != '1' || paid)) {\n data.push([{text:invoiceLabels.paid_to_date, style: ['subtotalsLabel', 'paidToDateLabel']}, {text:formatMoneyInvoice(paid, invoice), style: ['subtotals', 'paidToDate']}]);\n }\n\n var isPartial = NINJA.parseFloat(invoice.partial);\n\n if (!hideBalance || isPartial) {\n data.push([\n { text: invoice.is_quote || invoice.balance_amount < 0 ? invoiceLabels.total : invoiceLabels.balance_due, style: ['subtotalsLabel', isPartial ? '' : 'balanceDueLabel'] },\n { text: formatMoneyInvoice(invoice.total_amount, invoice), style: ['subtotals', isPartial ? '' : 'balanceDue'] }\n ]);\n }\n\n if (!hideBalance) {\n if (isPartial) {\n data.push([\n { text: invoiceLabels.partial_due, style: ['subtotalsLabel', 'balanceDueLabel'] },\n { text: formatMoneyInvoice(invoice.balance_amount, invoice), style: ['subtotals', 'balanceDue'] }\n ]);\n }\n }\n\n return NINJA.prepareDataPairs(data, 'subtotals');\n}\n\nNINJA.subtotalsBalance = function(invoice) {\n var isPartial = NINJA.parseFloat(invoice.partial);\n return [[\n {text: isPartial ? invoiceLabels.partial_due : (invoice.is_quote || invoice.balance_amount < 0 ? invoiceLabels.total : invoiceLabels.balance_due), style:['subtotalsLabel', 'balanceDueLabel']},\n {text: formatMoneyInvoice(invoice.balance_amount, invoice), style:['subtotals', 'balanceDue']}\n ]];\n}\n\nNINJA.accountDetails = function(invoice) {\n var account = invoice.account;\n if (invoice.features.invoice_settings && account.invoice_fields) {\n var fields = JSON.parse(account.invoice_fields).account_fields1;\n } else {\n var fields = [\n 'account.company_name',\n 'account.id_number',\n 'account.vat_number',\n 'account.website',\n 'account.email',\n 'account.phone',\n ];\n }\n\n var data = [];\n\n for (var i=0; i < fields.length; i++) {\n var field = fields[i];\n var value = NINJA.renderClientOrAccountField(invoice, field);\n if (value) {\n data.push(value);\n }\n }\n\n return NINJA.prepareDataList(data, 'accountDetails');\n}\n\nNINJA.accountAddress = function(invoice) {\n var account = invoice.account;\n if (invoice.features.invoice_settings && account.invoice_fields) {\n var fields = JSON.parse(account.invoice_fields).account_fields2;\n } else {\n var fields = [\n 'account.address1',\n 'account.address2',\n 'account.city_state_postal',\n 'account.country',\n 'account.custom_value1',\n 'account.custom_value2',\n ]\n }\n\n var data = [];\n\n for (var i=0; i < fields.length; i++) {\n var field = fields[i];\n var value = NINJA.renderClientOrAccountField(invoice, field);\n if (value) {\n data.push(value);\n }\n }\n\n return NINJA.prepareDataList(data, 'accountAddress');\n}\n\nNINJA.renderInvoiceField = function(invoice, field) {\n\n var account = invoice.account;\n\n if (field == 'invoice.invoice_number') {\n if (invoice.is_statement) {\n return false;\n } else {\n return [\n {text: (invoice.is_quote ? invoiceLabels.quote_number : invoice.balance_amount < 0 ? invoiceLabels.credit_number : invoiceLabels.invoice_number), style: ['invoiceNumberLabel']},\n {text: invoice.invoice_number, style: ['invoiceNumber']}\n ];\n }\n } else if (field == 'invoice.po_number') {\n return [\n {text: invoiceLabels.po_number},\n {text: invoice.po_number}\n ];\n } else if (field == 'invoice.invoice_date') {\n return [\n {text: (invoice.is_statement ? invoiceLabels.statement_date : invoice.is_quote ? invoiceLabels.quote_date : invoice.balance_amount < 0 ? invoiceLabels.credit_date : invoiceLabels.invoice_date)},\n {text: invoice.invoice_date}\n ];\n } else if (field == 'invoice.due_date') {\n return [\n {text: (invoice.is_quote ? invoiceLabels.valid_until : invoiceLabels.due_date)},\n {text: invoice.is_recurring ? false : invoice.due_date}\n ];\n } else if (field == 'invoice.custom_text_value1') {\n if (invoice.custom_text_value1 && account.custom_invoice_text_label1) {\n return [\n {text: invoice.account.custom_invoice_text_label1},\n {text: invoice.is_recurring ? processVariables(invoice.custom_text_value1) : invoice.custom_text_value1}\n ];\n } else {\n return false;\n }\n } else if (field == 'invoice.custom_text_value2') {\n if (invoice.custom_text_value2 && account.custom_invoice_text_label2) {\n return [\n {text: invoice.account.custom_invoice_text_label2},\n {text: invoice.is_recurring ? processVariables(invoice.custom_text_value2) : invoice.custom_text_value2}\n ];\n } else {\n return false;\n }\n } else if (field == 'invoice.balance_due') {\n return [\n {text: invoice.is_quote || invoice.balance_amount < 0 ? invoiceLabels.total : invoiceLabels.balance_due, style: ['invoiceDetailBalanceDueLabel']},\n {text: formatMoneyInvoice(invoice.total_amount, invoice), style: ['invoiceDetailBalanceDue']}\n ];\n } else if (field == invoice.partial_due) {\n if (NINJA.parseFloat(invoice.partial)) {\n return [\n {text: invoiceLabels.partial_due, style: ['invoiceDetailBalanceDueLabel']},\n {text: formatMoneyInvoice(invoice.balance_amount, invoice), style: ['invoiceDetailBalanceDue']}\n ];\n } else {\n return false;\n }\n } else if (field == '.blank') {\n return [{text: ' '}, {text: ' '}];\n }\n}\n\nNINJA.invoiceDetails = function(invoice) {\n\n var account = invoice.account;\n if (invoice.features.invoice_settings && account.invoice_fields) {\n var fields = JSON.parse(account.invoice_fields).invoice_fields;\n } else {\n var fields = [\n 'invoice.invoice_number',\n 'invoice.po_number',\n 'invoice.invoice_date',\n 'invoice.due_date',\n 'invoice.balance_due',\n 'invoice.partial_due',\n 'invoice.custom_text_value1',\n 'invoice.custom_text_value2',\n ];\n }\n var data = [];\n\n for (var i=0; i < fields.length; i++) {\n var field = fields[i];\n var value = NINJA.renderInvoiceField(invoice, field);\n if (value) {\n data.push(value);\n }\n }\n\n return NINJA.prepareDataPairs(data, 'invoiceDetails');\n}\n\n\nNINJA.renderClientOrAccountField = function(invoice, field) {\n var client = invoice.client;\n if (!client) {\n return false;\n }\n var account = invoice.account;\n var contact = client.contacts[0];\n var clientName = client.name || (contact.first_name || contact.last_name ? (contact.first_name + ' ' + contact.last_name) : contact.email);\n\n if (field == 'client.client_name') {\n return {text:clientName || ' ', style: ['clientName']};\n } else if (field == 'client.contact_name') {\n return (contact.first_name || contact.last_name) ? {text:contact.first_name + ' ' + contact.last_name} : false;\n } else if (field == 'client.id_number') {\n return {text:client.id_number};\n } else if (field == 'client.vat_number') {\n return {text:client.vat_number};\n } else if (field == 'client.address1') {\n return {text:client.address1};\n } else if (field == 'client.address2') {\n return {text:client.address2};\n } else if (field == 'client.city_state_postal') {\n var cityStatePostal = '';\n if (client.city || client.state || client.postal_code) {\n var swap = client.country && client.country.swap_postal_code;\n cityStatePostal = formatAddress(client.city, client.state, client.postal_code, swap);\n }\n return {text:cityStatePostal};\n } else if (field == 'client.postal_city_state') {\n var postalCityState = '';\n if (client.city || client.state || client.postal_code) {\n postalCityState = formatAddress(client.city, client.state, client.postal_code, true);\n }\n return {text:postalCityState};\n } else if (field == 'client.country') {\n return {text:client.country ? client.country.name : ''};\n } else if (field == 'client.email') {\n var clientEmail = contact.email == clientName ? '' : contact.email;\n return {text:clientEmail};\n } else if (field == 'client.phone') {\n return {text:contact.phone};\n } else if (field == 'client.custom_value1') {\n return {text: account.custom_client_label1 && client.custom_value1 ? account.custom_client_label1 + ' ' + client.custom_value1 : false};\n } else if (field == 'client.custom_value2') {\n return {text: account.custom_client_label2 && client.custom_value2 ? account.custom_client_label2 + ' ' + client.custom_value2 : false};\n }\n\n if (field == 'account.company_name') {\n return {text:account.name, style: ['accountName']};\n } else if (field == 'account.id_number') {\n return {text:account.id_number, style: ['idNumber']};\n } else if (field == 'account.vat_number') {\n return {text:account.vat_number, style: ['vatNumber']};\n } else if (field == 'account.website') {\n return {text:account.website, style: ['website']};\n } else if (field == 'account.email') {\n return {text:account.work_email, style: ['email']};\n } else if (field == 'account.phone') {\n return {text:account.work_phone, style: ['phone']};\n } else if (field == 'account.address1') {\n return {text: account.address1};\n } else if (field == 'account.address2') {\n return {text: account.address2};\n } else if (field == 'account.city_state_postal') {\n var cityStatePostal = '';\n if (account.city || account.state || account.postal_code) {\n var swap = account.country && account.country.swap_postal_code;\n cityStatePostal = formatAddress(account.city, account.state, account.postal_code, swap);\n }\n return {text: cityStatePostal};\n } else if (field == 'account.postal_city_state') {\n var postalCityState = '';\n if (account.city || account.state || account.postal_code) {\n postalCityState = formatAddress(account.city, account.state, account.postal_code, true);\n }\n return {text: postalCityState};\n } else if (field == 'account.country') {\n return account.country ? {text: account.country.name} : false;\n } else if (field == 'account.custom_value1') {\n if (invoice.features.invoice_settings) {\n return invoice.account.custom_label1 && invoice.account.custom_value1 ? {text: invoice.account.custom_label1 + ' ' + invoice.account.custom_value1} : false;\n }\n } else if (field == 'account.custom_value2') {\n if (invoice.features.invoice_settings) {\n return invoice.account.custom_label2 && invoice.account.custom_value2 ? {text: invoice.account.custom_label2 + ' ' + invoice.account.custom_value2} : false;\n }\n } else if (field == '.blank') {\n return {text: ' '};\n }\n\n return false;\n}\n\nNINJA.clientDetails = function(invoice) {\n var account = invoice.account;\n if (invoice.features.invoice_settings && account.invoice_fields) {\n var fields = JSON.parse(account.invoice_fields).client_fields;\n } else {\n var fields = [\n 'client.client_name',\n 'client.id_number',\n 'client.vat_number',\n 'client.address1',\n 'client.address2',\n 'client.city_state_postal',\n 'client.country',\n 'client.email',\n 'client.custom_value1',\n 'client.custom_value2',\n ];\n }\n var data = [];\n\n for (var i=0; i < fields.length; i++) {\n var field = fields[i];\n var value = NINJA.renderClientOrAccountField(invoice, field);\n if (value) {\n data.push(value);\n }\n }\n\n return NINJA.prepareDataList(data, 'clientDetails');\n}\n\nNINJA.getPrimaryColor = function(defaultColor) {\n return NINJA.primaryColor ? NINJA.primaryColor : defaultColor;\n}\n\nNINJA.getSecondaryColor = function(defaultColor) {\n return NINJA.primaryColor ? NINJA.secondaryColor : defaultColor;\n}\n\n// remove blanks and add section style to all elements\nNINJA.prepareDataList = function(oldData, section) {\n var newData = [];\n for (var i=0; i<oldData.length; i++) {\n var item = NINJA.processItem(oldData[i], section);\n if (item.text || item.stack) {\n newData.push(item);\n }\n }\n return newData;\n}\n\nNINJA.prepareDataTable = function(oldData, section) {\n var newData = [];\n for (var i=0; i<oldData.length; i++) {\n var row = oldData[i];\n var newRow = [];\n for (var j=0; j<row.length; j++) {\n var item = NINJA.processItem(row[j], section);\n if (item.text || item.stack) {\n newRow.push(item);\n }\n }\n if (newRow.length) {\n newData.push(newRow);\n }\n }\n return newData;\n}\n\nNINJA.prepareDataPairs = function(oldData, section) {\n var newData = [];\n for (var i=0; i<oldData.length; i++) {\n var row = oldData[i];\n var isBlank = false;\n for (var j=0; j<row.length; j++) {\n var item = NINJA.processItem(row[j], section);\n if (!item.text) {\n isBlank = true;\n }\n if (j == 1) {\n NINJA.processItem(row[j], section + \"Value\");\n }\n }\n if (!isBlank) {\n newData.push(oldData[i]);\n }\n }\n return newData;\n}\n\nNINJA.processItem = function(item, section) {\n if (item.style && item.style instanceof Array) {\n item.style.push(section);\n } else {\n item.style = [section];\n }\n return item;\n}\n\n\nNINJA.parseMarkdownText = function(val, groupText)\n{\n var rules = [\n ['\\\\\\*\\\\\\*(\\\\\\w.+?)\\\\\\*\\\\\\*', {'bold': true}], // **value**\n ['\\\\\\*(\\\\\\w.+?)\\\\\\*', {'italics': true}], // *value*\n ['^###(.*)', {'style': 'help'}], // ### Small/gray help\n ['^##(.*)', {'style': 'subheader'}], // ## Header\n ['^#(.*)', {'style': 'header'}] // # Subheader\n ];\n\n var parts = typeof val === 'string' ? [val] : val;\n for (var i=0; i<rules.length; i++) {\n var rule = rules[i];\n var formatter = function(data) {\n return $.extend(data, rule[1]);\n }\n parts = NINJA.parseRegExp(parts, rule[0], formatter, true);\n }\n\n return parts.length > 1 ? parts : val;\n}\n\n/*\nNINJA.parseMarkdownStack = function(val)\n{\n if (val.length == 1) {\n var item = val[0];\n var line = item.hasOwnProperty('text') ? item.text : item;\n\n if (typeof line === 'string') {\n line = [line];\n }\n\n var regExp = '^\\\\\\* (.*[\\r\\n|\\n|\\r]?)';\n var formatter = function(data) {\n return {\"ul\": [data.text]};\n }\n\n val = NINJA.parseRegExp(line, regExp, formatter, false);\n }\n\n return val;\n}\n*/\n\nNINJA.parseRegExp = function(val, regExpStr, formatter, groupText)\n{\n var regExp = new RegExp(regExpStr, 'gm');\n var parts = [];\n\n for (var i=0; i<val.length; i++) {\n var line = val[i];\n parts = parts.concat(NINJA.parseRegExpLine(line, regExp, formatter, groupText));\n }\n\n return parts.length > 1 ? parts : val;\n}\n\nNINJA.parseRegExpLine = function(line, regExp, formatter, groupText)\n{\n var parts = [];\n var lastIndex = 0;\n\n while (match = regExp.exec(line)) {\n if (match.index > lastIndex) {\n parts.push(line.substring(lastIndex, match.index));\n }\n var data = {};\n data.text = match[1];\n data = formatter(data);\n parts.push(data);\n lastIndex = match.index + match[0].length;\n }\n\n if (parts.length) {\n if (lastIndex < line.length) {\n parts.push(line.substring(lastIndex));\n }\n return parts;\n }\n\n return line;\n}\n","/*!\n * Bootstrap v3.3.1 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.1\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2014 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/* ========================================================================\n * Bootstrap: alert.js v3.3.1\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.1\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state = state + 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n else $parent.find('.active').removeClass('active')\n }\n if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n Plugin.call($btn, 'toggle')\n e.preventDefault()\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.1\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused =\n this.sliding =\n this.interval =\n this.$active =\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var delta = direction == 'prev' ? -1 : 1\n var activeIndex = this.getItemIndex(active)\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var fallback = type == 'next' ? 'first' : 'last'\n var that = this\n\n if (!$next.length) {\n if (!this.options.wrap) return\n $next = this.$element.find('.item')[fallback]()\n }\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.1\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $(this.options.trigger).filter('[href=\"#' + element.id + '\"], [data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true,\n trigger: '[data-toggle=\"collapse\"]'\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && option == 'show') options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.1\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2014 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.1'\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 $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).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('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(.divider):visible a'\n var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + 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 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 $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('hidden.bs.dropdown', relatedTarget)\n })\n }\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\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', '[role=\"menu\"]', Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.1\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2014 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.$backdrop =\n this.isShown = null\n this.scrollbarWidth = 0\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.1'\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.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 if (that.options.backdrop) that.adjustBackdrop()\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element\n .addClass('in')\n .attr('aria-hidden', false)\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$element.find('.modal-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 .attr('aria-hidden', true)\n .off('click.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 (this.$element[0] !== e.target && !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 = $('<div class=\"modal-backdrop ' + animate + '\" />')\n .prependTo(this.$element)\n .on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus.call(this.$element[0])\n : this.hide.call(this)\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 if (this.options.backdrop) this.adjustBackdrop()\n this.adjustDialog()\n }\n\n Modal.prototype.adjustBackdrop = function () {\n this.$backdrop\n .css('height', 0)\n .css('height', this.$element[0].scrollHeight)\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 this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\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', '')\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/* ========================================================================\n * Bootstrap: tooltip.js v3.3.1\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2014 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 =\n this.options =\n this.enabled =\n this.timeout =\n this.hoverState =\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.1'\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 && $(this.options.viewport.selector || this.options.viewport)\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 && self.$tip && self.$tip.is(':visible')) {\n self.hoverState = 'in'\n return\n }\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\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.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 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\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 $container = this.options.container ? $(this.options.container) : this.$element.parent()\n var containerDim = this.getPosition($container)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < containerDim.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 = offset.top + marginTop\n offset.left = 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, isHorizontal) {\n this.arrow()\n .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isHorizontal ? '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 that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\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 && this.$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 elOffset = isBody ? { top: 0, left: 0 } : $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.width) { // 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 return (this.$tip = this.$tip || $(this.options.template))\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 self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\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 })\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 var selector = options && options.selector\n\n if (!data && option == 'destroy') return\n if (selector) {\n if (!data) $this.data('bs.tooltip', (data = {}))\n if (!data[selector]) data[selector] = new Tooltip(this, options)\n } else {\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n }\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/* ========================================================================\n * Bootstrap: popover.js v3.3.1\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n Popover.prototype.tip = function () {\n if (!this.$tip) this.$tip = $(this.options.template)\n return this.$tip\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n var selector = options && options.selector\n\n if (!data && option == 'destroy') return\n if (selector) {\n if (!data) $this.data('bs.popover', (data = {}))\n if (!data[selector]) data[selector] = new Popover(this, options)\n } else {\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n }\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.1\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var process = $.proxy(this.process, this)\n\n this.$body = $('body')\n this.$scrollElement = $(element).is('body') ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', process)\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n var self = this\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n self.offsets.push(this[0])\n self.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (!offsets[i + 1] || scrollTop <= offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.1\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\n\n Tab.VERSION = '3.3.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu')) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.1\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2014 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 =\n this.unpin =\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.1'\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 && colliderTop <= 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 = $('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","/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-04-28T16:19Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making 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// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.11.3\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\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.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\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\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\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\t\tret.context = this.context;\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\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\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(null);\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: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, 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\" && !jQuery.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\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\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) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.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\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\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\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 obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\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\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\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\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\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 value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\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// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\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\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\n\t// Support: iOS 8.2 (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 = \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\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.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\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// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\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// http://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// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + 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 = \":(\" + characterEncoding + \")(?:\\\\((\" +\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( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\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\trescape = /'|\\\\/g,\n\n\t// CSS escapes 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// 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// 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 match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\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} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\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 div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = 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 = attrs.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\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\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 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, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\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( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.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( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.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 programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\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} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\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\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\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 ( 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 http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\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// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\f]' 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// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.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 ( !div.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.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.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 ( !div.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 sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\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 = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.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 ( div.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 ( !div.querySelectorAll(\":enabled\").length ) {\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\tdiv.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( div ) {\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( div, \"div\" );\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( div, \"[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 does not implement inclusive descendent\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 === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || 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 === doc ? -1 :\n\t\t\t\tb === doc ? 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 doc;\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( !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.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, outerCache, node, diff, 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\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 ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\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\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && 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\touterCache[ 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// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\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\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\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\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\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\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\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\tcheckNonElements = base && dir === \"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} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, 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 dir 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\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\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\touterCache[ dir ] = 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};\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;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\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\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, 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// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\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 no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root 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\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.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\trsibling.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( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.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( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.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( div ) {\n\treturn div.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;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\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\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn 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// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\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\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\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// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\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// 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\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.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\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\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 || rootjQuery ).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.context = this[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 ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\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\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.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; 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\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\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 jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\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\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\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 jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.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 jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = 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\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\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\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], 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\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\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\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\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\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\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 && type !== \"string\" ) {\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\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\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\t\t\t\treturn this;\n\t\t\t},\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 ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\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 ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\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\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\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\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\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\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 && jQuery.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.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\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\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\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// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\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[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = 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(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\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// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\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// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\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\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n\nvar strundefined = typeof undefined;\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownLast = i !== \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery(function() {\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n});\n\n\n\n\n(function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ (elem.nodeName + \" \").toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n};\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\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\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\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\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\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// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\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 = jQuery.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\tjQuery._data( elem, \"parsedAttrs\", 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\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( 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 = jQuery._data( 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 || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( 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 intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, 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\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 = jQuery._data( 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 cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\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 = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( 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 ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\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 < length; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n};\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\t// Minified: var a,b,c\n\tvar input = document.createElement( \"input\" ),\n\t\tdiv = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment();\n\n\t// Setup\n\tdiv.innerHTML = \" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav></:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\tdiv.innerHTML = \"<input type='radio' checked='checked' name='t'/>\";\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tsupport.noCloneEvent = true;\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n})();\n\n\n(function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !(support[ i + \"Bubbles\" ] = eventName in window) ) {\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i + \"Bubbles\" ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\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\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( 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// 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\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 !== strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\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/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + 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\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( 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( rnotwhite ) || [ \"\" ];\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] && new 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 || selector === \"**\" && 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 || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\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 the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\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 = 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(\".\") >= 0 ) {\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.namespace_re = 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 && !jQuery.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\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 = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( 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 && jQuery.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 || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\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 && elem[ type ] && !jQuery.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\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\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\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( 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\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++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.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 || handleObj.handler )\n\t\t\t\t\t\t\t.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 sel, handleObj, matches, i,\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\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\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 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\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 ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\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 ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\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\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\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\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\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\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\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\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 jQuery.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\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\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\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\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\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\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 || jQuery.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// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\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 mousenter/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\n// IE submit delegation\nif ( !support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\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\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\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 = jQuery._data( 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\tjQuery._data( 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 = jQuery._data( 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\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( 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\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 ? handleObj.origType + \".\" + handleObj.namespace : handleObj.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\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\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\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\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\tparam: [ 1, \"<object>\", \"</object>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X<div>\", \"</div>\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!support.noCloneEvent || !support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\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; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, 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\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = (rtagName.exec( elem ) || [ \"\", \"\" ])[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1></$2>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\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\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\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// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\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().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( 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 this.domManip( 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 this.domManip( 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 this.domManip( 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\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\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 ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\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( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ (rtagName.exec( value ) || [ \"\", \"\" ])[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\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 arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\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\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\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\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\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// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\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// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optmization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"<iframe frameborder='0' width='0' height='0'/>\" )).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\n\n\n(function() {\n\tvar shrinkWrapBlocksVal;\n\n\tsupport.shrinkWrapBlocks = function() {\n\t\tif ( shrinkWrapBlocksVal != null ) {\n\t\t\treturn shrinkWrapBlocksVal;\n\t\t}\n\n\t\t// Will be changed later if needed.\n\t\tshrinkWrapBlocksVal = false;\n\n\t\t// Minified: var b,c,d\n\t\tvar div, body, container;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE6\n\t\t// Check if elements with layout shrink-wrap their children\n\t\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t\t// Reset CSS: box-sizing; display; margin; border\n\t\t\tdiv.style.cssText =\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\treturn shrinkWrapBlocksVal;\n\t};\n\n})();\nvar rmargin = (/^margin/);\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\n\n\nvar getStyles, curCSS,\n\trposition = /^(top|right|bottom|left)$/;\n\nif ( window.getComputedStyle ) {\n\tgetStyles = function( elem ) {\n\t\t// Support: IE<=11+, 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\tif ( elem.ownerDocument.defaultView.opener ) {\n\t\t\treturn elem.ownerDocument.defaultView.getComputedStyle( elem, null );\n\t\t}\n\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\tcurCSS = function( elem, name, computed ) {\n\t\tvar width, minWidth, maxWidth, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\n\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;\n\n\t\tif ( computed ) {\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\treturn ret === undefined ?\n\t\t\tret :\n\t\t\tret + \"\";\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn elem.currentStyle;\n\t};\n\n\tcurCSS = function( elem, name, computed ) {\n\t\tvar left, rs, rsLeft, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\t\tret = computed ? computed[ name ] : undefined;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trs = elem.runtimeStyle;\n\t\t\trsLeft = rs && rs.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\treturn ret === undefined ?\n\t\t\tret :\n\t\t\tret + \"\" || \"auto\";\n\t};\n}\n\n\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\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\tvar condition = conditionFn();\n\n\t\t\tif ( condition == null ) {\n\t\t\t\t// The test was not ready at this point; screw the hook this time\n\t\t\t\t// but check again when needed next time.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( condition ) {\n\t\t\t\t// Hook not needed (or it's not possible to use it due to missing dependency),\n\t\t\t\t// remove it.\n\t\t\t\t// Since there are no other hooks for marginRight, remove the whole object.\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\n\t\t\treturn (this.get = hookFn).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\n(function() {\n\t// Minified: var b,c,d,e,f,g, h,i\n\tvar div, style, a, pixelPositionVal, boxSizingReliableVal,\n\t\treliableHiddenOffsetsVal, reliableMarginRightVal;\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tdiv.innerHTML = \" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\tstyle = a && a.style;\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !style ) {\n\t\treturn;\n\t}\n\n\tstyle.cssText = \"float:left;opacity:.5\";\n\n\t// Support: IE<9\n\t// Make sure that element opacity exists (as opposed to filter)\n\tsupport.opacity = style.opacity === \"0.5\";\n\n\t// Verify style float existence\n\t// (IE uses styleFloat instead of cssFloat)\n\tsupport.cssFloat = !!style.cssFloat;\n\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\t// Support: Firefox<29, Android 2.3\n\t// Vendor-prefix box-sizing\n\tsupport.boxSizing = style.boxSizing === \"\" || style.MozBoxSizing === \"\" ||\n\t\tstyle.WebkitBoxSizing === \"\";\n\n\tjQuery.extend(support, {\n\t\treliableHiddenOffsets: function() {\n\t\t\tif ( reliableHiddenOffsetsVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableHiddenOffsetsVal;\n\t\t},\n\n\t\tboxSizingReliable: function() {\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\n\t\tpixelPosition: function() {\n\t\t\tif ( pixelPositionVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn pixelPositionVal;\n\t\t},\n\n\t\t// Support: Android 2.3\n\t\treliableMarginRight: function() {\n\t\t\tif ( reliableMarginRightVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableMarginRightVal;\n\t\t}\n\t});\n\n\tfunction computeStyleTests() {\n\t\t// Minified: var b,c,d,j\n\t\tvar div, body, container, contents;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\tdiv.style.cssText =\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;\" +\n\t\t\t\"box-sizing:border-box;display:block;margin-top:1%;top:1%;\" +\n\t\t\t\"border:1px;padding:1px;width:4px;position:absolute\";\n\n\t\t// Support: IE<9\n\t\t// Assume reasonable values in the absence of getComputedStyle\n\t\tpixelPositionVal = boxSizingReliableVal = false;\n\t\treliableMarginRightVal = true;\n\n\t\t// Check for getComputedStyle so that this code is not run in IE<9.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tpixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tboxSizingReliableVal =\n\t\t\t\t( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Support: Android 2.3\n\t\t\t// Div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container (#3333)\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tcontents = div.appendChild( document.createElement( \"div\" ) );\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\tcontents.style.cssText = div.style.cssText =\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;padding:0\";\n\t\t\tcontents.style.marginRight = contents.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\n\t\t\treliableMarginRightVal =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );\n\n\t\t\tdiv.removeChild( contents );\n\t\t}\n\n\t\t// Support: IE8\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\tcontents = div.getElementsByTagName( \"td\" );\n\t\tcontents[ 0 ].style.cssText = \"margin:0;border:0;padding:0;display:none\";\n\t\treliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;\n\t\tif ( reliableHiddenOffsetsVal ) {\n\t\t\tcontents[ 0 ].style.display = \"\";\n\t\t\tcontents[ 1 ].style.display = \"none\";\n\t\t\treliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t}\n\n})();\n\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\njQuery.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\nvar\n\t\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity\\s*=\\s*([^)]*)/,\n\n\t// swappable if display is none or starts with table 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\trnumsplit = new RegExp( \"^(\" + pnum + \")(.*)$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + pnum + \")\", \"i\" ),\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\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\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display && display !== \"none\" || !hidden ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend({\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\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\"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\t\t// normalize float css property\n\t\t\"float\": support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\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 = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the 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 relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\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. See: #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 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n\t\t\t// but it would mean to define eight (for every problematic property) identical functions\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) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\n\t\t\t\t// Support: IE\n\t\t\t\t// Swallow errors from 'invalid' CSS values (#5509)\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\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 num, val, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\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// Return, converting to number 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 || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) && elem.offsetWidth === 0 ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tsupport.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\t// if value === \"\", then remove inline opacity #12685\n\t\t\tif ( ( value >= 1 || value === \"\" ) &&\n\t\t\t\t\tjQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there is no filter style applied in a css rule or unset inline opacity, we are done\n\t\t\t\tif ( value === \"\" || currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\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 ( !rmargin.test( prefix ) ) {\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 ( jQuery.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\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 ( isHidden( 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});\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 || \"swing\";\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\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || 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// so, 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\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\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// 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.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.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\n// Panic based approach to setting things on disconnected nodes\n\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};\n\njQuery.fx = Tween.prototype.init;\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t} ]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, 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 = ( tweeners[ prop ] || [] ).concat( 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\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = jQuery._data( elem, \"fxshow\" );\n\n\t// handle queue: false promises\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\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// 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// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t// Test default display if display is currently \"none\"\n\t\tcheckDisplay = display === \"none\" ?\n\t\t\tjQuery._data( elem, \"olddisplay\" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === \"inline\" && jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !support.shrinkWrapBlocks() ) {\n\t\t\tanim.always(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( 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// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\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\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = jQuery._data( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery._removeData( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( (display === \"none\" ? defaultDisplay( elem.nodeName ) : display) === \"inline\" ) {\n\t\tstyle.display = display;\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 = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.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 wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above 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 = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\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\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\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\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, { specialEasing: {} }, 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\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\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\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 = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\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\t// attach callbacks from options\n\treturn animation.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\njQuery.Animation = jQuery.extend( Animation, {\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\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\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.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\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\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 ( jQuery.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( isHidden ).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\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 || jQuery._data( 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 = jQuery._data( 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 && (type == null || timers[ index ].queue === type) ) {\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 will dequeue\n\t\t\t// 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 = jQuery._data( 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\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\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\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// 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 = setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t});\n};\n\n\n(function() {\n\t// Minified: var a,b,c,d,e\n\tvar input, div, select, a, opt;\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\n\t// First batch of tests.\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px\";\n\n\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\tsupport.getSetAttribute = div.className !== \"t\";\n\n\t// Get the style information from getAttribute\n\t// (IE uses .cssText instead)\n\tsupport.style = /top/.test( a.getAttribute(\"style\") );\n\n\t// Make sure that URLs aren't manipulated\n\t// (IE normalizes it by default)\n\tsupport.hrefNormalized = a.getAttribute(\"href\") === \"/a\";\n\n\t// Check the default checkbox/radio value (\"\" on WebKit; \"on\" elsewhere)\n\tsupport.checkOn = !!input.value;\n\n\t// Make sure that a selected-by-default option has a working selected property.\n\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\tsupport.optSelected = opt.selected;\n\n\t// Tests for enctype support on a form (#6743)\n\tsupport.enctype = !!document.createElement(\"form\").enctype;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE8 only\n\t// Check if we can trust getAttribute(\"value\")\n\tinput = document.createElement( \"input\" );\n\tinput.setAttribute( \"value\", \"\" );\n\tsupport.input = input.getAttribute( \"value\" ) === \"\";\n\n\t// Check if an input maintains its value after becoming a radio\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n})();\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend({\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\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 ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\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\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.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 ( isFunction ) {\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\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.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\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\t// Support: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\tjQuery.trim( 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,\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\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\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// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\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( support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.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\tif ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) {\n\n\t\t\t\t\t\t// Support: IE6\n\t\t\t\t\t\t// When new option element is added to select box we need to\n\t\t\t\t\t\t// force reflow of newly added node in order to workaround delay\n\t\t\t\t\t\t// of initialization properties\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toption.selected = optionSet = true;\n\n\t\t\t\t\t\t} catch ( _ ) {\n\n\t\t\t\t\t\t\t// Will be executed only in IE6\n\t\t\t\t\t\t\toption.scrollHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\toption.selected = false;\n\t\t\t\t\t}\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\n\t\t\t\treturn options;\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 ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t// Support: Webkit\n\t\t\t// \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\n\n\n\n\nvar nodeHook, boolHook,\n\tattrHandle = jQuery.expr.attrHandle,\n\truseDefault = /^(?:checked|selected)$/i,\n\tgetSetAttribute = support.getSetAttribute,\n\tgetSetInput = support.input;\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 hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || 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 === strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\tif ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] =\n\t\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\n\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to default in case type is set after value during creation\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\n// Hook for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t// IE<8 needs the *property* name\n\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n\n\t\t// Use defaultChecked and defaultSelected for oldIE\n\t\t} else {\n\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] = elem[ name ] = true;\n\t\t}\n\n\t\treturn name;\n\t}\n};\n\n// Retrieve booleans specially\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret, handle;\n\t\t\tif ( !isXML ) {\n\t\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\t\thandle = attrHandle[ name ];\n\t\t\t\tattrHandle[ name ] = ret;\n\t\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t\t\tattrHandle[ name ] = handle;\n\t\t\t}\n\t\t\treturn ret;\n\t\t} :\n\t\tfunction( elem, name, isXML ) {\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn elem[ jQuery.camelCase( \"default-\" + name ) ] ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t};\n});\n\n// fix oldIE attroperties\nif ( !getSetInput || !getSetAttribute ) {\n\tjQuery.attrHooks.value = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.defaultValue = value;\n\t\t\t} else {\n\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\telem.setAttributeNode(\n\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tret.value = value += \"\";\n\n\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n\t\t\tif ( name === \"value\" || value === elem.getAttribute( name ) ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n\n\t// Some attributes are constructed with empty-string values when not defined\n\tattrHandle.id = attrHandle.name = attrHandle.coords =\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret;\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn (ret = elem.getAttributeNode( name )) && ret.value !== \"\" ?\n\t\t\t\t\tret.value :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t};\n\n\t// Fixing value retrieval on a button requires this module\n\tjQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( ret && ret.specified ) {\n\t\t\t\treturn ret.value;\n\t\t\t}\n\t\t},\n\t\tset: nodeHook.set\n\t};\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tset: function( elem, value, name ) {\n\t\t\tnodeHook.set( elem, value === \"\" ? false : value, name );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\nif ( !support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n\t\t\t// .cssText, that would destroy case senstitivity in URL's, like in \"background\"\n\t\t\treturn elem.style.cssText || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button|object)$/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\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\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\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// 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\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Some attributes require a special call on IE\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !support.hrefNormalized ) {\n\t// href/src property should get the full normalized URL (#10299/#12915)\n\tjQuery.each([ \"href\", \"src\" ], function( i, name ) {\n\t\tjQuery.propHooks[ name ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.getAttribute( name, 4 );\n\t\t\t}\n\t\t};\n\t});\n}\n\n// Support: Safari, IE9+\n// mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\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\treturn null;\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// IE6/7 call enctype encoding\nif ( !support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\njQuery.fn.extend({\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\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 = jQuery.trim( cur );\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = 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, clazz, j, finalValue,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\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\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\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 = value ? jQuery.trim( cur ) : \"\";\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = 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\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\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 ( type === strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.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\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n});\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( 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\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\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t}\n});\n\n\nvar nonce = jQuery.now();\n\nvar rquery = (/\\?/);\n\n\n\nvar rvalidtokens = /(,)|(\\[|{)|(}|])|\"(?:[^\"\\\\\\r\\n]|\\\\[\"\\\\\\/bfnrt]|\\\\u[\\da-fA-F]{4})*\"\\s*:?|true|false|null|-?(?!0\\d)\\d+(?:\\.\\d+|)(?:[eE][+-]?\\d+|)/g;\n\njQuery.parseJSON = function( data ) {\n\t// Attempt to parse using the native JSON parser first\n\tif ( window.JSON && window.JSON.parse ) {\n\t\t// Support: Android 2.3\n\t\t// Workaround failure to string-cast null input\n\t\treturn window.JSON.parse( data + \"\" );\n\t}\n\n\tvar requireNonComma,\n\t\tdepth = null,\n\t\tstr = jQuery.trim( data + \"\" );\n\n\t// Guard against invalid (and possibly dangerous) input by ensuring that nothing remains\n\t// after removing valid tokens\n\treturn str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) {\n\n\t\t// Force termination if we see a misplaced comma\n\t\tif ( requireNonComma && comma ) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\t// Perform no more replacements after returning to outermost depth\n\t\tif ( depth === 0 ) {\n\t\t\treturn token;\n\t\t}\n\n\t\t// Commas must not follow \"[\", \"{\", or \",\"\n\t\trequireNonComma = open || comma;\n\n\t\t// Determine new depth\n\t\t// array/object open (\"[\" or \"{\"): depth += true - false (increment)\n\t\t// array/object close (\"]\" or \"}\"): depth += false - true (decrement)\n\t\t// other cases (\",\" or primitive): depth += true - true (numeric cast)\n\t\tdepth += !close - !open;\n\n\t\t// Remove this token\n\t\treturn \"\";\n\t}) ) ?\n\t\t( Function( \"return \" + str ) )() :\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, tmp;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\ttry {\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data, \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\t} catch( e ) {\n\t\txml = undefined;\n\t}\n\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\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\trurl = /^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,\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// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\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( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType.charAt( 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\" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\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 deep, key,\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\tvar firstDataType, ct, finalDataType, type,\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\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\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\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\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 { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\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: ajaxLocation,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\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: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\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\": jQuery.parseJSON,\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 // Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers as string\n\t\t\tresponseHeadersString,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\ttransport,\n\t\t\t// Response headers\n\t\t\tresponseHeaders,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\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 && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks(\"once memory\"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\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 ( state === 2 ) {\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 state === 2 ? 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\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || 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 ( !state ) {\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 ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\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} else {\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}\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 ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\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 || ajaxLocation ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\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 = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) )\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 ( state === 2 ) {\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\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\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 anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + nonce++;\n\t\t\t}\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] ] + ( 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 && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\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\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\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\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = 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\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\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// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( 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\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status 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\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\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\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});\n\t};\n});\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\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\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = 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.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\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 ( jQuery.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 isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||\n\t\t(!support.reliableHiddenOffsets() &&\n\t\t\t((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n};\n\njQuery.expr.filters.visible = function( elem ) {\n\treturn !jQuery.expr.filters.hidden( elem );\n};\n\n\n\n\nvar r20 = /%20/g,\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 ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\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\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\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\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, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\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\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( \"&\" ).replace( r20, \"+\" );\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\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\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\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?\n\t// Support: IE6+\n\tfunction() {\n\n\t\t// XHR cannot access local files, always use ActiveX for that case\n\t\treturn !this.isLocal &&\n\n\t\t\t// Support: IE7-8\n\t\t\t// oldIE XHR does not support non-RFC2616 methods (#13240)\n\t\t\t// See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx\n\t\t\t// and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9\n\t\t\t// Although this check for six methods instead of eight\n\t\t\t// since IE also does not support \"trace\" and \"connect\"\n\t\t\t/^(get|post|head|put|delete|options)$/i.test( this.type ) &&\n\n\t\t\tcreateStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\nvar xhrId = 0,\n\txhrCallbacks = {},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\n// Support: IE<10\n// Open requests must be manually aborted on unload (#5280)\n// See https://support.microsoft.com/kb/2856746 for more info\nif ( window.attachEvent ) {\n\twindow.attachEvent( \"onunload\", function() {\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( undefined, true );\n\t\t}\n\t});\n}\n\n// Determine support properties\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nxhrSupported = support.ajax = !!xhrSupported;\n\n// Create transport if the browser can provide an xhr\nif ( xhrSupported ) {\n\n\tjQuery.ajaxTransport(function( options ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !options.crossDomain || support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t\txhr = options.xhr(),\n\t\t\t\t\t\tid = ++xhrId;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\txhr.open( options.type, options.url, options.async, options.username, options.password );\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !options.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set headers\n\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// IE's ActiveXObject throws a 'Type Mismatch' exception when setting\n\t\t\t\t\t\t// request header to a null-value.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// To keep consistent with other XHR implementations, cast the value\n\t\t\t\t\t\t// to string and ignore `undefined`.\n\t\t\t\t\t\tif ( headers[ i ] !== undefined ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] + \"\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( options.hasContent && options.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\t\t\t\t\t\tvar status, statusText, responses;\n\n\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\t\t\t\t\t\t\t// Clean up\n\t\t\t\t\t\t\tdelete xhrCallbacks[ id ];\n\t\t\t\t\t\t\tcallback = undefined;\n\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\t\t\t\t// Abort manually if needed\n\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\txhr.abort();\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\tresponses = {};\n\t\t\t\t\t\t\t\tstatus = xhr.status;\n\n\t\t\t\t\t\t\t\t// Support: IE<10\n\t\t\t\t\t\t\t\t// Accessing binary-data responseText throws an exception\n\t\t\t\t\t\t\t\t// (#11426)\n\t\t\t\t\t\t\t\tif ( typeof xhr.responseText === \"string\" ) {\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\tif ( !status && options.isLocal && !options.crossDomain ) {\n\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\tstatus = 204;\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// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, xhr.getAllResponseHeaders() );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !options.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Add to the list of active xhr callbacks\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ id ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback( undefined, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\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 global\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\ts.global = false;\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\n\t\tvar script,\n\t\t\thead = document.head || jQuery(\"head\")[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\t\tscript.async = true;\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( script.parentNode ) {\n\t\t\t\t\t\t\tscript.parentNode.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = null;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( undefined, true );\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\" && !( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") && rjsonp.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 = jQuery.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\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\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 && jQuery.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// data: string of html\n// context (optional): If specified, the fragment will be created in this context, defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[1] ) ];\n\t}\n\n\tparsed = jQuery.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// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, response, type,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = jQuery.trim( url.slice( off, url.length ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.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\ttype: type,\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}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\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( [ \"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\" ], 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.filters.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\n\nvar docElem = window.document.documentElement;\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\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\tjQuery.inArray(\"auto\", [ curCSSTop, curCSSLeft ] ) > -1;\n\n\t\t// need to be able to calculate position if either 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\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, 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\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend({\n\toffset: function( options ) {\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 docElem, win,\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ],\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it's not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\t// If we don't have gBCR, just use 0,0 rather than error\n\t\t// BlackBerry 5, iOS 3 (original iPhone)\n\t\tif ( typeof elem.getBoundingClientRect !== strundefined ) {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t}\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),\n\t\t\tleft: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\tparentOffset = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ];\n\n\t\t// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\t\t\t// we assume that getBoundingClientRect is available when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\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\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, \"html\" ) && jQuery.css( offsetParent, \"position\" ) === \"static\" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || docElem;\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 = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ 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 : jQuery( win ).scrollLeft(),\n\t\t\t\t\ttop ? val : jQuery( win ).scrollTop()\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, null );\n\t};\n});\n\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// getComputedStyle returns percent when specified for top/left/bottom/right\n// rather than make the css module depend on the offset module, we 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\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 }, function( defaultExtra, funcName ) {\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 ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.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], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\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\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, null );\n\t\t};\n\t});\n});\n\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\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\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\n// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === strundefined ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n\n}));\n","/*! jQuery UI - v1.11.2 - 2014-10-16\n* http://jqueryui.com\n* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js\n* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */\n\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n/*!\n * jQuery UI Core 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\n\n// $.ui might exist from components with no dependencies, e.g., $.ui.position\n$.ui = $.ui || {};\n\n$.extend( $.ui, {\n\tversion: \"1.11.2\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\tscrollParent: function( includeHidden ) {\n\t\tvar position = this.css( \"position\" ),\n\t\t\texcludeStaticParent = position === \"absolute\",\n\t\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\t\tscrollParent = this.parents().filter( function() {\n\t\t\t\tvar parent = $( this );\n\t\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) + parent.css( \"overflow-x\" ) );\n\t\t\t}).eq( 0 );\n\n\t\treturn position === \"fixed\" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;\n\t},\n\n\tuniqueId: (function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each(function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t})(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" )[ 0 ];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().addBack().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = 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\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n// deprecated\n$.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n\n$.fn.extend({\n\tfocus: (function( orig ) {\n\t\treturn function( delay, fn ) {\n\t\t\treturn typeof delay === \"number\" ?\n\t\t\t\tthis.each(function() {\n\t\t\t\t\tvar elem = this;\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, delay );\n\t\t\t\t}) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.focus ),\n\n\tdisableSelection: (function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.bind( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t\t};\n\t})(),\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n});\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\n$.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n/*!\n * jQuery UI Widget 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/jQuery.widget/\n */\n\n\nvar widget_uuid = 0,\n\twidget_slice = Array.prototype.slice;\n\n$.cleanData = (function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n})( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\t// proxiedPrototype allows the provided prototype to remain unmodified\n\t\t// so that it can be used as a mixin for multiple widgets (#8876)\n\t\tproxiedPrototype = {},\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = (function() {\n\t\t\tvar _super = function() {\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t},\n\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t};\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super,\n\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\treturnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t})();\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widget_slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = widget_slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\treturnValue = instance;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widget_uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled\", !!value );\n\n\t\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\t\tif ( value ) {\n\t\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions({ disabled: false });\n\t},\n\tdisable: function() {\n\t\treturn this._setOptions({ disabled: true });\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Mouse 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/mouse/\n */\n\n\nvar mouseHandled = false;\n$( document ).mouseup( function() {\n\tmouseHandled = false;\n});\n\nvar mouse = $.widget(\"ui.mouse\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tcancel: \"input,textarea,button,select,option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind(\"mousedown.\" + this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind(\"click.\" + this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + \".preventClickEvent\")) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + \".preventClickEvent\");\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind(\".\" + this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.unbind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + \".preventClickEvent\")) {\n\t\t\t$.removeData(event.target, this.widgetName + \".preventClickEvent\");\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\n\t\tthis.document\n\t\t\t.bind( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.bind( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {\n\t\t\t\treturn this._mouseUp(event);\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\t\t\t\treturn this._mouseUp( event );\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\tthis.document\n\t\t\t.unbind( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.unbind( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + \".preventClickEvent\", true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\tmouseHandled = false;\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(/* event */) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(/* event */) {},\n\t_mouseDrag: function(/* event */) {},\n\t_mouseStop: function(/* event */) {},\n\t_mouseCapture: function(/* event */) { return true; }\n});\n\n\n/*!\n * jQuery UI Position 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n(function() {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth, supportsOffsetFractions,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[0];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( $.isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\n\t\t\t// support: jQuery 1.6.x\n\t\t\t// jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows\n\t\t\twidth: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow || isDocument ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[0].preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !supportsOffsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function() {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\tsupportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n})();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI Accordion 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/accordion/\n */\n\n\nvar accordion = $.widget( \"ui.accordion\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\thideProps: {\n\t\tborderTopWidth: \"hide\",\n\t\tborderBottomWidth: \"hide\",\n\t\tpaddingTop: \"hide\",\n\t\tpaddingBottom: \"hide\",\n\t\theight: \"hide\"\n\t},\n\n\tshowProps: {\n\t\tborderTopWidth: \"show\",\n\t\tborderBottomWidth: \"show\",\n\t\tpaddingTop: \"show\",\n\t\tpaddingBottom: \"show\",\n\t\theight: \"show\"\n\t},\n\n\t_create: function() {\n\t\tvar options = this.options;\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t// ARIA\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\tthis._processPanels();\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis._refresh();\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-state-default \" +\n\t\t\t\t\"ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom \" +\n\t\t\t\t\"ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeUniqueId();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown: function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options;\n\t\tthis._processPanels();\n\n\t\t// was collapsed or no panel\n\t\tif ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// active false only when collapsible is true\n\t\t} else if ( options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t// was active, but active panel is gone\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining panel are disabled\n\t\t\tif ( this.headers.length === this.headers.find(\".ui-state-disabled\").length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous panel\n\t\t\t} else {\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\n\t\t\t}\n\t\t// was active, active panel still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.headers.index( this.active );\n\t\t}\n\n\t\tthis._destroyIcons();\n\n\t\tthis._refresh();\n\t},\n\n\t_processPanels: function() {\n\t\tvar prevHeaders = this.headers,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.headers = this.element.find( this.options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-state-default ui-corner-all\" );\n\n\t\tthis.panels = this.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.filter( \":not(.ui-accordion-content-active)\" )\n\t\t\t.hide();\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevPanels ) {\n\t\t\tthis._off( prevHeaders.not( this.headers ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t_refresh: function() {\n\t\tvar maxHeight,\n\t\t\toptions = this.options,\n\t\t\theightStyle = options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" )\n\t\t\t.removeClass( \"ui-corner-all\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function() {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._createIcons();\n\n\t\tthis._setupEvents( options.event );\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tkeydown: \"_keydown\"\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.headers.add( this.headers.next() ) );\n\t\tthis._on( this.headers, events );\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr({\n\t\t\t\t\"tabIndex\": -1,\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t});\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\"aria-expanded\": \"true\"\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( this.hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( this.showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;\n\t\t}\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n/*!\n * jQuery UI Menu 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/menu/\n */\n\n\nvar menu = $.widget( \"ui.menu\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\titems: \"> *\",\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left-1 top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\n\t\t// Flag used to prevent firing of the click handler\n\t\t// as the event bubbles up through nested menus\n\t\tthis.mouseHandled = false;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t});\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tif ( !this.mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tthis.select( event );\n\n\t\t\t\t\t// Only set the mouseHandled flag if the event will bubble, see #9469.\n\t\t\t\t\tif ( !event.isPropagationStopped() ) {\n\t\t\t\t\t\tthis.mouseHandled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) && $( this.document[ 0 ].activeElement ).closest( \".ui-menu\" ).length ) {\n\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\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\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\t// Ignore mouse events while typeahead is active, see #10458.\n\t\t\t\t// Prevents focusing the wrong item when typeahead causes a scroll while the mouse\n\t\t\t\t// is over an item in the menu\n\t\t\t\tif ( this.previousFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.find( this.options.items ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this._closeOnDocumentClick( event ) ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tthis.mouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).addBack()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-menu-icons ui-front\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeUniqueId()\n\t\t\t.removeClass( \"ui-state-hover\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t.children().each( function() {\n\t\t\t\tvar elem = $( this );\n\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\telem.remove();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip,\n\t\t\tpreventDefault = true;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tmatch = this._filterMenuItems( character );\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tmatch = this._filterMenuItems( character );\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tthis.previousFilter = character;\n\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}, 1000 );\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.is( \"[aria-haspopup='true']\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus, items,\n\t\t\tthat = this,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\tthis.element.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-front\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.parent(),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\t\titems = menus.find( this.options.items );\n\n\t\t// Initialize menu-items containing spaces and/or dashes only as dividers\n\t\titems.not( \".ui-menu-item\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\tif ( that._isDivider( item ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Don't refresh list items that are already adapted\n\t\titems.not( \".ui-menu-item, .ui-menu-divider\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.uniqueId()\n\t\t\t.attr({\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: this._itemRole()\n\t\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\titems.filter( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.element.find( \".ui-menu-icon\" )\n\t\t\t\t.removeClass( this.options.icons.submenu )\n\t\t\t\t.addClass( value.submenu );\n\t\t}\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.addClass( \"ui-state-focus\" ).removeClass( \"ui-state-active\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.outerHeight();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus. If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \".ui-state-active\" ).not( \".ui-state-focus\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\t_closeOnDocumentClick: function( event ) {\n\t\treturn !$( event.target ).closest( \".ui-menu\" ).length;\n\t},\n\n\t_isDivider: function( item ) {\n\n\t\t// Match hyphen, em dash, en dash\n\t\treturn !/[^\\-\\u2014\\u2013\\s]/.test( item.text() );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.find( this.options.items )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.find( this.options.items )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t},\n\n\t_filterMenuItems: function(character) {\n\t\tvar escapedCharacter = character.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" ),\n\t\t\tregex = new RegExp( \"^\" + escapedCharacter, \"i\" );\n\n\t\treturn this.activeMenu\n\t\t\t.find( this.options.items )\n\n\t\t\t// Only match on items, not dividers or other content (#10571)\n\t\t\t.filter( \".ui-menu-item\" )\n\t\t\t.filter(function() {\n\t\t\t\treturn regex.test( $.trim( $( this ).text() ) );\n\t\t\t});\n\t}\n});\n\n\n/*!\n * jQuery UI Autocomplete 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/autocomplete/\n */\n\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\trequestIndex: 0,\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\n\t\t\tisTextarea = nodeName === \"textarea\",\n\t\t\tisInput = nodeName === \"input\";\n\n\t\tthis.isMultiLine =\n\t\t\t// Textareas are always multi-line\n\t\t\tisTextarea ? true :\n\t\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t\t// IE also treats inputs as contentEditable\n\t\t\tisInput ? false :\n\t\t\t// All other element types are determined by whether or not they're contentEditable\n\t\t\tthis.element.prop( \"isContentEditable\" );\n\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete ui-front\" )\n\t\t\t.appendTo( this._appendTo() )\n\t\t\t.menu({\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.hide()\n\t\t\t.menu( \"instance\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\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\tmenufocus: function( event, ui ) {\n\t\t\t\tvar label, item;\n\t\t\t\t// support: Firefox\n\t\t\t\t// Prevent accidental activation of menu items in Firefox (#7024 #9118)\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem = ui.item.data( \"ui-autocomplete-item\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Announce the value in the liveRegion\n\t\t\t\tlabel = ui.item.attr( \"aria-label\" ) || item.value;\n\t\t\t\tif ( label && $.trim( label ).length ) {\n\t\t\t\t\tthis.liveRegion.children().hide();\n\t\t\t\t\t$( \"<div>\" ).text( label ).appendTo( this.liveRegion );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this._appendTo() );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray( this.options.source ) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse([]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\n\t\t\t// Search if the value has changed, or if the user retypes the same value (see #7434)\n\t\t\tvar equalValues = this.term === this._value(),\n\t\t\t\tmenuVisible = this.menu.element.is( \":visible\" ),\n\t\t\t\tmodifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n\t\t\tif ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar index = ++this.requestIndex;\n\n\t\treturn $.proxy(function( content ) {\n\t\t\tif ( index === this.requestIndex ) {\n\t\t\t\tthis.__response( content );\n\t\t\t}\n\n\t\t\tthis.pending--;\n\t\t\tif ( !this.pending ) {\n\t\t\t\tthis.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t}, this );\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[ 0 ].label && items[ 0 ].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend( {}, item, {\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t});\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element.empty();\n\t\tthis._renderMenu( ul, items );\n\t\tthis.isNewMenu = true;\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ) );\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" ).text( item.label ).appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\n\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\tthis._value( this.term );\n\t\t\t}\n\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t},\n\tfilter: function( array, term ) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), \"i\" );\n\t\treturn $.grep( array, function( value ) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.children().hide();\n\t\t$( \"<div>\" ).text( message ).appendTo( this.liveRegion );\n\t}\n});\n\nvar autocomplete = $.ui.autocomplete;\n\n\n/*!\n * jQuery UI Button 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/button/\n */\n\n\nvar lastActive,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar form = $( this );\n\t\tsetTimeout(function() {\n\t\t\tform.find( \":ui-button\" ).button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tname = name.replace( /'/g, \"\\\\'\" );\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"'][type=radio]\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"'][type=radio]\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Can't use _focusable() because the element that receives focus\n\t\t// and the element that gets the ui-state-focus class are different\n\t\tthis._on({\n\t\t\tfocus: function() {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tblur: function() {\n\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t// see #8559, we bind to blur here in case the button element loses\n\t\t\t\t// focus between keydown and keyup, it would be left in an \"active\" state\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace + \" blur\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" ui-state-active \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget().toggleClass( \"ui-state-disabled\", !!value );\n\t\t\tthis.element.prop( \"disabled\", !!value );\n\t\t\tif ( value ) {\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\",\n\t\t\tallButtons = this.element.find( this.options.items ),\n\t\t\texistingButtons = allButtons.filter( \":ui-button\" );\n\n\t\t// Initialize new buttons\n\t\tallButtons.not( \":ui-button\" ).button();\n\n\t\t// Refresh existing buttons\n\t\texistingButtons.button( \"refresh\" );\n\n\t\tthis.buttons = allButtons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\nvar button = $.ui.button;\n\n\n/*!\n * jQuery UI Datepicker 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/datepicker/\n */\n\n\n$.extend($.ui, { datepicker: { version: \"1.11.2\" } });\n\nvar datepicker_instActive;\n\nfunction datepicker_getZindex( elem ) {\n\tvar position, value;\n\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t// This makes behavior of this function consistent across browsers\n\t\t// WebKit always returns auto if the element is positioned\n\t\tposition = elem.css( \"position\" );\n\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t// other browsers return a string\n\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\telem = elem.parent();\n\t}\n\n\treturn 0;\n}\n/* Date picker manager.\n Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n Settings for (groups of) date pickers are maintained in an instance object,\n allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n\tthis._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n\tthis._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n\tthis._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n\tthis._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n\tthis._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n\tthis._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n\tthis._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n\tthis._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[\"\"] = { // Default regional settings\n\t\tcloseText: \"Done\", // Display text for close link\n\t\tprevText: \"Prev\", // Display text for previous month link\n\t\tnextText: \"Next\", // Display text for next month link\n\t\tcurrentText: \"Today\", // Display text for current month link\n\t\tmonthNames: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\n\t\t\t\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"], // For formatting\n\t\tdayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], // For formatting\n\t\tdayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"], // For formatting\n\t\tdayNamesMin: [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"], // Column headings for days starting at Sunday\n\t\tweekHeader: \"Wk\", // Column header for week of the year\n\t\tdateFormat: \"mm/dd/yy\", // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: \"\" // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: \"focus\", // \"focus\" for popup on focus,\n\t\t\t// \"button\" for trigger button, or \"both\" for either\n\t\tshowAnim: \"fadeIn\", // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: \"\", // Display text following the input box, e.g. showing the format\n\t\tbuttonText: \"...\", // Text for trigger button\n\t\tbuttonImage: \"\", // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: \"c-10:c+10\", // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: \"+10\", // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with \"+\" for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: \"fast\", // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: \"\", // Selector for an alternate field to store selected dates into\n\t\taltFormat: \"\", // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional[\"\"]);\n\tthis.regional.en = $.extend( true, {}, this.regional[ \"\" ]);\n\tthis.regional[ \"en-US\" ] = $.extend( true, {}, this.regional.en );\n\tthis.dpDiv = datepicker_bindHover($(\"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: \"hasDatepicker\",\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t * @param settings object - the new settings to use as defaults (anonymous object)\n\t * @return the manager object\n\t */\n\tsetDefaults: function(settings) {\n\t\tdatepicker_extendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t * @param settings object - the new settings to use for this date picker instance (anonymous)\n\t */\n\t_attachDatepicker: function(target, settings) {\n\t\tvar nodeName, inline, inst;\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tinline = (nodeName === \"div\" || nodeName === \"span\");\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = \"dp\" + this.uuid;\n\t\t}\n\t\tinst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {});\n\t\tif (nodeName === \"input\") {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\"); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tdatepicker_bindHover($(\"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\")))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp);\n\t\tthis._autoSize(inst);\n\t\t$.data(target, \"datepicker\", inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar showOn, buttonText, buttonImage,\n\t\t\tappendText = this._get(inst, \"appendText\"),\n\t\t\tisRTL = this._get(inst, \"isRTL\");\n\n\t\tif (inst.append) {\n\t\t\tinst.append.remove();\n\t\t}\n\t\tif (appendText) {\n\t\t\tinst.append = $(\"<span class='\" + this._appendClass + \"'>\" + appendText + \"</span>\");\n\t\t\tinput[isRTL ? \"before\" : \"after\"](inst.append);\n\t\t}\n\n\t\tinput.unbind(\"focus\", this._showDatepicker);\n\n\t\tif (inst.trigger) {\n\t\t\tinst.trigger.remove();\n\t\t}\n\n\t\tshowOn = this._get(inst, \"showOn\");\n\t\tif (showOn === \"focus\" || showOn === \"both\") { // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\t}\n\t\tif (showOn === \"button\" || showOn === \"both\") { // pop-up date picker when button clicked\n\t\t\tbuttonText = this._get(inst, \"buttonText\");\n\t\t\tbuttonImage = this._get(inst, \"buttonImage\");\n\t\t\tinst.trigger = $(this._get(inst, \"buttonImageOnly\") ?\n\t\t\t\t$(\"<img/>\").addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$(\"<button type='button'></button>\").addClass(this._triggerClass).\n\t\t\t\t\thtml(!buttonImage ? buttonText : $(\"<img/>\").attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? \"before\" : \"after\"](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t} else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else {\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, \"autoSize\") && !inst.inline) {\n\t\t\tvar findMax, max, maxI, i,\n\t\t\t\tdate = new Date(2009, 12 - 1, 20), // Ensure double digits\n\t\t\t\tdateFormat = this._get(inst, \"dateFormat\");\n\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tfindMax = function(names) {\n\t\t\t\t\tmax = 0;\n\t\t\t\t\tmaxI = 0;\n\t\t\t\t\tfor (i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t\"monthNames\" : \"monthNamesShort\"))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t\"dayNames\" : \"dayNamesShort\"))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr(\"size\", this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv);\n\t\t$.data(target, \"datepicker\", inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t * @param input element - ignored\n\t * @param date\tstring or Date - the initial date to display\n\t * @param onSelect function - the function to call when a date is selected\n\t * @param settings object - update the dialog date picker instance's settings (anonymous object)\n\t * @param pos int[2] - coordinates for the dialog's position within the screen or\n\t *\t\t\t\t\tevent - with x/y coordinates or\n\t *\t\t\t\t\tleave empty for default (screen centre)\n\t * @return the manager object\n\t */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar id, browserWidth, browserHeight, scrollX, scrollY,\n\t\t\tinst = this._dialogInst; // internal instance\n\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = \"dp\" + this.uuid;\n\t\t\tthis._dialogInput = $(\"<input type='text' id='\" + id +\n\t\t\t\t\"' style='position: absolute; top: -100px; width: 0px;'/>\");\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$(\"body\").append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], \"datepicker\", inst);\n\t\t}\n\t\tdatepicker_extendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor === Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tbrowserWidth = document.documentElement.clientWidth;\n\t\t\tbrowserHeight = document.documentElement.clientHeight;\n\t\t\tscrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tscrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css(\"left\", (this._pos[0] + 20) + \"px\").css(\"top\", this._pos[1] + \"px\");\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI) {\n\t\t\t$.blockUI(this.dpDiv);\n\t\t}\n\t\t$.data(this._dialogInput[0], \"datepicker\", inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_destroyDatepicker: function(target) {\n\t\tvar nodeName,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, \"datepicker\");\n\t\tif (nodeName === \"input\") {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind(\"focus\", this._showDatepicker).\n\t\t\t\tunbind(\"keydown\", this._doKeyDown).\n\t\t\t\tunbind(\"keypress\", this._doKeyPress).\n\t\t\t\tunbind(\"keyup\", this._doKeyUp);\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t\t}\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_enableDatepicker: function(target) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName === \"input\") {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter(\"button\").\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter(\"img\").css({opacity: \"1.0\", cursor: \"\"});\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\tinline = $target.children(\".\" + this._inlineClass);\n\t\t\tinline.children().removeClass(\"ui-state-disabled\");\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value === target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_disableDatepicker: function(target) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName === \"input\") {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter(\"button\").\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter(\"img\").css({opacity: \"0.5\", cursor: \"default\"});\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\tinline = $target.children(\".\" + this._inlineClass);\n\t\t\tinline.children().addClass(\"ui-state-disabled\");\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value === target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t * @param target\telement - the target input field or division or span\n\t * @return boolean - true if disabled, false if enabled\n\t */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] === target) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t * @param target element - the target input field or division or span\n\t * @return object - the associated instance data\n\t * @throws error if a jQuery problem getting data\n\t */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, \"datepicker\");\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow \"Missing instance data for this datepicker\";\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t * @param target element - the target input field or division or span\n\t * @param name\tobject - the new settings to update or\n\t *\t\t\t\tstring - the name of the setting to change or retrieve,\n\t *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n\t *\t\t\t\t\"defaults\" for all global defaults\n\t * @param value any - the new value for the setting\n\t *\t\t\t\t(omit if above is an object or to retrieve a value)\n\t */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar settings, date, minDate, maxDate,\n\t\t\tinst = this._getInst(target);\n\n\t\tif (arguments.length === 2 && typeof name === \"string\") {\n\t\t\treturn (name === \"defaults\" ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name === \"all\" ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\n\t\tsettings = name || {};\n\t\tif (typeof name === \"string\") {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\n\t\tif (inst) {\n\t\t\tif (this._curInst === inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\n\t\t\tdate = this._getDateDatepicker(target, true);\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\");\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\");\n\t\t\tdatepicker_extendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\t}\n\t\t\tif (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\t}\n\t\t\tif ( \"disabled\" in settings ) {\n\t\t\t\tif ( settings.disabled ) {\n\t\t\t\t\tthis._disableDatepicker(target);\n\t\t\t\t} else {\n\t\t\t\t\tthis._enableDatepicker(target);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t * @param target element - the target input field or division or span\n\t */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t * @param target element - the target input field or division or span\n\t * @param date\tDate - the new date\n\t */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t * @param target element - the target input field or division or span\n\t * @param noDefault boolean - true if no default date is to be used\n\t * @return Date - the current date\n\t */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline) {\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\t}\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar onSelect, dateStr, sel,\n\t\t\tinst = $.datepicker._getInst(event.target),\n\t\t\thandled = true,\n\t\t\tisRTL = inst.dpDiv.is(\".ui-datepicker-rtl\");\n\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing) {\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: sel = $(\"td.\" + $.datepicker._dayOverClass + \":not(.\" +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \")\", inst.dpDiv);\n\t\t\t\t\t\tif (sel[0]) {\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonSelect = $.datepicker._get(inst, \"onSelect\");\n\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\tdateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._clearDate(event.target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._gotoToday(event.target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, -7, \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, +7, \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\t} else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\t} else {\n\t\t\thandled = false;\n\t\t}\n\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar chars, chr,\n\t\t\tinst = $.datepicker._getInst(event.target);\n\n\t\tif ($.datepicker._get(inst, \"constrainInput\")) {\n\t\t\tchars = $.datepicker._possibleChars($.datepicker._get(inst, \"dateFormat\"));\n\t\t\tchr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < \" \" || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar date,\n\t\t\tinst = $.datepicker._getInst(event.target);\n\n\t\tif (inst.input.val() !== inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tdate = $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t * If false returned from beforeShow event handler do not show.\n\t * @param input element - the input field attached to the date picker or\n\t *\t\t\t\t\tevent - if triggered by focus\n\t */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() !== \"input\") { // find from button/image trigger\n\t\t\tinput = $(\"input\", input.parentNode)[0];\n\t\t}\n\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here\n\t\t\treturn;\n\t\t}\n\n\t\tvar inst, beforeShow, beforeShowSettings, isFixed,\n\t\t\toffset, showAnim, duration;\n\n\t\tinst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst !== inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\n\t\tbeforeShow = $.datepicker._get(inst, \"beforeShow\");\n\t\tbeforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\treturn;\n\t\t}\n\t\tdatepicker_extendRemove(inst.settings, beforeShowSettings);\n\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\n\t\tif ($.datepicker._inDialog) { // hide cursor\n\t\t\tinput.value = \"\";\n\t\t}\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\n\t\tisFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css(\"position\") === \"fixed\";\n\t\t\treturn !isFixed;\n\t\t});\n\n\t\toffset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: \"absolute\", display: \"block\", top: \"-1000px\"});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t\"static\" : (isFixed ? \"fixed\" : \"absolute\")), display: \"none\",\n\t\t\tleft: offset.left + \"px\", top: offset.top + \"px\"});\n\n\t\tif (!inst.inline) {\n\t\t\tshowAnim = $.datepicker._get(inst, \"showAnim\");\n\t\t\tduration = $.datepicker._get(inst, \"duration\");\n\t\t\tinst.dpDiv.css( \"z-index\", datepicker_getZindex( $( input ) ) + 1 );\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\tif ( $.effects && $.effects.effect[ showAnim ] ) {\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, \"showOptions\"), duration);\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[showAnim || \"show\"](showAnim ? duration : null);\n\t\t\t}\n\n\t\t\tif ( $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\t\tinst.input.focus();\n\t\t\t}\n\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tdatepicker_instActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\n\t\tvar origyearshtml,\n\t\t\tnumMonths = this._getNumberOfMonths(inst),\n\t\t\tcols = numMonths[1],\n\t\t\twidth = 17,\n\t\t\tactiveCell = inst.dpDiv.find( \".\" + this._dayOverClass + \" a\" );\n\n\t\tif ( activeCell.length > 0 ) {\n\t\t\tdatepicker_handleMouseover.apply( activeCell.get( 0 ) );\n\t\t}\n\n\t\tinst.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\");\n\t\tif (cols > 1) {\n\t\t\tinst.dpDiv.addClass(\"ui-datepicker-multi-\" + cols).css(\"width\", (width * cols) + \"em\");\n\t\t}\n\t\tinst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? \"add\" : \"remove\") +\n\t\t\t\"Class\"](\"ui-datepicker-multi\");\n\t\tinst.dpDiv[(this._get(inst, \"isRTL\") ? \"add\" : \"remove\") +\n\t\t\t\"Class\"](\"ui-datepicker-rtl\");\n\n\t\tif (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\tinst.input.focus();\n\t\t}\n\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\torigyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find(\"select.ui-datepicker-year:first\").replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t// #6694 - don't focus the input if it's already focused\n\t// this breaks the change event in IE\n\t// Support: IE and jQuery <1.9\n\t_shouldFocusInput: function( inst ) {\n\t\treturn inst.input && inst.input.is( \":visible\" ) && !inst.input.is( \":disabled\" ) && !inst.input.is( \":focus\" );\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth(),\n\t\t\tdpHeight = inst.dpDiv.outerHeight(),\n\t\t\tinputWidth = inst.input ? inst.input.outerWidth() : 0,\n\t\t\tinputHeight = inst.input ? inst.input.outerHeight() : 0,\n\t\t\tviewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),\n\t\t\tviewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, \"isRTL\") ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar position,\n\t\t\tinst = this._getInst(obj),\n\t\t\tisRTL = this._get(inst, \"isRTL\");\n\n\t\twhile (obj && (obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? \"previousSibling\" : \"nextSibling\"];\n\t\t}\n\n\t\tposition = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t * @param input element - the input field attached to the date picker\n\t */\n\t_hideDatepicker: function(input) {\n\t\tvar showAnim, duration, postProcess, onClose,\n\t\t\tinst = this._curInst;\n\n\t\tif (!inst || (input && inst !== $.data(input, \"datepicker\"))) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._datepickerShowing) {\n\t\t\tshowAnim = this._get(inst, \"showAnim\");\n\t\t\tduration = this._get(inst, \"duration\");\n\t\t\tpostProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, \"showOptions\"), duration, postProcess);\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[(showAnim === \"slideDown\" ? \"slideUp\" :\n\t\t\t\t\t(showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\"))]((showAnim ? duration : null), postProcess);\n\t\t\t}\n\n\t\t\tif (!showAnim) {\n\t\t\t\tpostProcess();\n\t\t\t}\n\t\t\tthis._datepickerShowing = false;\n\n\t\t\tonClose = this._get(inst, \"onClose\");\n\t\t\tif (onClose) {\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : \"\"), inst]);\n\t\t\t}\n\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: \"absolute\", left: \"0\", top: \"-100px\" });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$(\"body\").append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind(\".ui-datepicker-calendar\");\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id !== $.datepicker._mainDivId &&\n\t\t\t\t$target.parents(\"#\" + $.datepicker._mainDivId).length === 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {\n\t\t\t\t$.datepicker._hideDatepicker();\n\t\t}\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period === \"M\" ? this._get(inst, \"showCurrentAtPos\") : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar date,\n\t\t\ttarget = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tif (this._get(inst, \"gotoCurrent\") && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tinst[\"selected\" + (period === \"M\" ? \"Month\" : \"Year\")] =\n\t\tinst[\"draw\" + (period === \"M\" ? \"Month\" : \"Year\")] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar inst,\n\t\t\ttarget = $(id);\n\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\n\t\tinst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $(\"a\", td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tthis._selectDate(target, \"\");\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar onSelect,\n\t\t\ttarget = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input) {\n\t\t\tinst.input.val(dateStr);\n\t\t}\n\t\tthis._updateAlternate(inst);\n\n\t\tonSelect = this._get(inst, \"onSelect\");\n\t\tif (onSelect) {\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback\n\t\t} else if (inst.input) {\n\t\t\tinst.input.trigger(\"change\"); // fire the change event\n\t\t}\n\n\t\tif (inst.inline){\n\t\t\tthis._updateDatepicker(inst);\n\t\t} else {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) !== \"object\") {\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\t}\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altFormat, date, dateStr,\n\t\t\taltField = this._get(inst, \"altField\");\n\n\t\tif (altField) { // update alternate field too\n\t\t\taltFormat = this._get(inst, \"altFormat\") || this._get(inst, \"dateFormat\");\n\t\t\tdate = this._getDate(inst);\n\t\t\tdateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t * @param date Date - the date to customise\n\t * @return [boolean, string] - is this date selectable?, what is its CSS class?\n\t */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), \"\"];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t * @param date Date - the date to get the week for\n\t * @return number - the number of the week within the year that contains this date\n\t */\n\tiso8601Week: function(date) {\n\t\tvar time,\n\t\t\tcheckDate = new Date(date.getTime());\n\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\n\t\ttime = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t * See formatDate below for the possible formats.\n\t *\n\t * @param format string - the expected format of the date\n\t * @param value string - the date in the above format\n\t * @param settings Object - attributes include:\n\t *\t\t\t\t\tshortYearCutoff number - the cutoff year for determining the century (optional)\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return Date - the extracted date value or null if value is blank\n\t */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null) {\n\t\t\tthrow \"Invalid arguments\";\n\t\t}\n\n\t\tvalue = (typeof value === \"object\" ? value.toString() : value + \"\");\n\t\tif (value === \"\") {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar iFormat, dim, extra,\n\t\t\tiValue = 0,\n\t\t\tshortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,\n\t\t\tshortYearCutoff = (typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),\n\t\t\tdayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n\t\t\tdayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n\t\t\tyear = -1,\n\t\t\tmonth = -1,\n\t\t\tday = -1,\n\t\t\tdoy = -1,\n\t\t\tliteral = false,\n\t\t\tdate,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\t\t\t// Extract a number from the string value\n\t\t\tgetNumber = function(match) {\n\t\t\t\tvar isDoubled = lookAhead(match),\n\t\t\t\t\tsize = (match === \"@\" ? 14 : (match === \"!\" ? 20 :\n\t\t\t\t\t(match === \"y\" && isDoubled ? 4 : (match === \"o\" ? 3 : 2)))),\n\t\t\t\t\tminSize = (match === \"y\" ? size : 1),\n\t\t\t\t\tdigits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"),\n\t\t\t\t\tnum = value.substring(iValue).match(digits);\n\t\t\t\tif (!num) {\n\t\t\t\t\tthrow \"Missing number at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue += num[0].length;\n\t\t\t\treturn parseInt(num[0], 10);\n\t\t\t},\n\t\t\t// Extract a name from the string value and convert to an index\n\t\t\tgetName = function(match, shortNames, longNames) {\n\t\t\t\tvar index = -1,\n\t\t\t\t\tnames = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\t\t\treturn [ [k, v] ];\n\t\t\t\t\t}).sort(function (a, b) {\n\t\t\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t\t\t});\n\n\t\t\t\t$.each(names, function (i, pair) {\n\t\t\t\t\tvar name = pair[1];\n\t\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n\t\t\t\t\t\tindex = pair[0];\n\t\t\t\t\t\tiValue += name.length;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t} else {\n\t\t\t\t\tthrow \"Unknown name at position \" + iValue;\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Confirm that a literal character matches the string value\n\t\t\tcheckLiteral = function() {\n\t\t\t\tif (value.charAt(iValue) !== format.charAt(iFormat)) {\n\t\t\t\t\tthrow \"Unexpected literal at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue++;\n\t\t\t};\n\n\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal) {\n\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tday = getNumber(\"d\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\tgetName(\"D\", dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\tdoy = getNumber(\"o\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\tmonth = getNumber(\"m\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\tmonth = getName(\"M\", monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\tyear = getNumber(\"y\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\tdate = new Date(getNumber(\"@\"));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\tdate = new Date((getNumber(\"!\") - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\")){\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (iValue < value.length){\n\t\t\textra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\n\t\tif (year === -1) {\n\t\t\tyear = new Date().getFullYear();\n\t\t} else if (year < 100) {\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\t}\n\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tdim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\n\t\tdate = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n\t\t\tthrow \"Invalid date\"; // E.g. 31/02/00\n\t\t}\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\n\tCOOKIE: \"D, dd M yy\",\n\tISO_8601: \"yy-mm-dd\",\n\tRFC_822: \"D, d M y\",\n\tRFC_850: \"DD, dd-M-y\",\n\tRFC_1036: \"D, d M y\",\n\tRFC_1123: \"D, d M yy\",\n\tRFC_2822: \"D, d M yy\",\n\tRSS: \"D, d M y\", // RFC 822\n\tTICKS: \"!\",\n\tTIMESTAMP: \"@\",\n\tW3C: \"yy-mm-dd\", // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t * The format can be combinations of the following:\n\t * d - day of month (no leading zero)\n\t * dd - day of month (two digit)\n\t * o - day of year (no leading zeros)\n\t * oo - day of year (three digit)\n\t * D - day name short\n\t * DD - day name long\n\t * m - month of year (no leading zero)\n\t * mm - month of year (two digit)\n\t * M - month name short\n\t * MM - month name long\n\t * y - year (two digit)\n\t * yy - year (four digit)\n\t * @ - Unix timestamp (ms since 01/01/1970)\n\t * ! - Windows ticks (100ns since 01/01/0001)\n\t * \"...\" - literal text\n\t * '' - single quote\n\t *\n\t * @param format string - the desired format of the date\n\t * @param date Date - the date value to format\n\t * @param settings Object - attributes include:\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return string - the date in the above format\n\t */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar iFormat,\n\t\t\tdayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n\t\t\tdayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\t\t\t// Format a number, with leading zero if necessary\n\t\t\tformatNumber = function(match, value, len) {\n\t\t\t\tvar num = \"\" + value;\n\t\t\t\tif (lookAhead(match)) {\n\t\t\t\t\twhile (num.length < len) {\n\t\t\t\t\t\tnum = \"0\" + num;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn num;\n\t\t\t},\n\t\t\t// Format a name, short or long as requested\n\t\t\tformatName = function(match, value, shortNames, longNames) {\n\t\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t\t},\n\t\t\toutput = \"\",\n\t\t\tliteral = false;\n\n\t\tif (date) {\n\t\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal) {\n\t\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\toutput += formatNumber(\"d\", date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\t\toutput += formatName(\"D\", date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\t\toutput += formatNumber(\"o\",\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\t\toutput += formatNumber(\"m\", date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\toutput += formatName(\"M\", date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\t\toutput += (lookAhead(\"y\") ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? \"0\" : \"\") + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\")) {\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar iFormat,\n\t\t\tchars = \"\",\n\t\t\tliteral = false,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t};\n\n\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal) {\n\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase \"d\": case \"m\": case \"y\": case \"@\":\n\t\t\t\t\t\tchars += \"0123456789\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\": case \"M\":\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\")) {\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() === inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dateFormat = this._get(inst, \"dateFormat\"),\n\t\t\tdates = inst.lastVal = inst.input ? inst.input.val() : null,\n\t\t\tdefaultDate = this._getDefaultDate(inst),\n\t\t\tdate = defaultDate,\n\t\t\tsettings = this._getFormatConfig(inst);\n\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tdates = (noDefault ? \"\" : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, \"defaultDate\"), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\t\tvar date = new Date();\n\t\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\toffsetString = function(offset) {\n\t\t\t\ttry {\n\t\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"),\n\t\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\t// Ignore\n\t\t\t\t}\n\n\t\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t\t$.datepicker._getDate(inst) : null) || new Date(),\n\t\t\t\t\tyear = date.getFullYear(),\n\t\t\t\t\tmonth = date.getMonth(),\n\t\t\t\t\tday = date.getDate(),\n\t\t\t\t\tpattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n\t\t\t\t\tmatches = pattern.exec(offset);\n\n\t\t\t\twhile (matches) {\n\t\t\t\t\tswitch (matches[2] || \"d\") {\n\t\t\t\t\t\tcase \"d\" : case \"D\" :\n\t\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\t\tcase \"w\" : case \"W\" :\n\t\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\t\tcase \"m\" : case \"M\" :\n\t\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\": case \"Y\" :\n\t\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t\t}\n\t\t\t\treturn new Date(year, month, day);\n\t\t\t},\n\t\t\tnewDate = (date == null || date === \"\" ? defaultDate : (typeof date === \"string\" ? offsetString(date) :\n\t\t\t\t(typeof date === \"number\" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\n\t\tnewDate = (newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t * Hours may be non-zero on daylight saving cut-over:\n\t * > 12 when midnight changeover, but then cannot generate\n\t * midnight datetime, so jump to 1AM, otherwise reset.\n\t * @param date (Date) the date to check\n\t * @return (Date) the corrected date\n\t */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date,\n\t\t\torigMonth = inst.selectedMonth,\n\t\t\torigYear = inst.selectedYear,\n\t\t\tnewDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {\n\t\t\tthis._notifyChange(inst);\n\t\t}\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? \"\" : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() === \"\") ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers. These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, \"stepMonths\"),\n\t\t\tid = \"#\" + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find(\"[data-handler]\").map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\t$.datepicker._adjustDate(id, -stepMonths, \"M\");\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\t$.datepicker._adjustDate(id, +stepMonths, \"M\");\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\t$.datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\t$.datepicker._selectDay(id, +this.getAttribute(\"data-month\"), +this.getAttribute(\"data-year\"), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\t$.datepicker._selectMonthYear(id, this, \"M\");\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\t$.datepicker._selectMonthYear(id, this, \"Y\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute(\"data-event\"), handler[this.getAttribute(\"data-handler\")]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\n\t\t\tcontrols, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\n\t\t\tmonthNames, monthNamesShort, beforeShowDay, showOtherMonths,\n\t\t\tselectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\n\t\t\tcornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\n\t\t\tprintDate, dRow, tbody, daySettings, otherMonth, unselectable,\n\t\t\ttempDate = new Date(),\n\t\t\ttoday = this._daylightSavingAdjust(\n\t\t\t\tnew Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time\n\t\t\tisRTL = this._get(inst, \"isRTL\"),\n\t\t\tshowButtonPanel = this._get(inst, \"showButtonPanel\"),\n\t\t\thideIfNoPrevNext = this._get(inst, \"hideIfNoPrevNext\"),\n\t\t\tnavigationAsDateFormat = this._get(inst, \"navigationAsDateFormat\"),\n\t\t\tnumMonths = this._getNumberOfMonths(inst),\n\t\t\tshowCurrentAtPos = this._get(inst, \"showCurrentAtPos\"),\n\t\t\tstepMonths = this._get(inst, \"stepMonths\"),\n\t\t\tisMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),\n\t\t\tcurrentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay))),\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tdrawMonth = inst.drawMonth - showCurrentAtPos,\n\t\t\tdrawYear = inst.drawYear;\n\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tmaxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\n\t\tprevText = this._get(inst, \"prevText\");\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\n\t\tprev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'\" +\n\t\t\t\" title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\") + \"'>\" + prevText + \"</span></a>\" :\n\t\t\t(hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\"+ prevText +\"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\") + \"'>\" + prevText + \"</span></a>\"));\n\n\t\tnextText = this._get(inst, \"nextText\");\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\n\t\tnext = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'\" +\n\t\t\t\" title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\") + \"'>\" + nextText + \"</span></a>\" :\n\t\t\t(hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\"+ nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\") + \"'>\" + nextText + \"</span></a>\"));\n\n\t\tcurrentText = this._get(inst, \"currentText\");\n\t\tgotoDate = (this._get(inst, \"gotoCurrent\") && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\n\t\tcontrols = (!inst.inline ? \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" +\n\t\t\tthis._get(inst, \"closeText\") + \"</button>\" : \"\");\n\n\t\tbuttonPanel = (showButtonPanel) ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + (isRTL ? controls : \"\") +\n\t\t\t(this._isInRange(inst, gotoDate) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'\" +\n\t\t\t\">\" + currentText + \"</button>\" : \"\") + (isRTL ? \"\" : controls) + \"</div>\" : \"\";\n\n\t\tfirstDay = parseInt(this._get(inst, \"firstDay\"),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\n\t\tshowWeek = this._get(inst, \"showWeek\");\n\t\tdayNames = this._get(inst, \"dayNames\");\n\t\tdayNamesMin = this._get(inst, \"dayNamesMin\");\n\t\tmonthNames = this._get(inst, \"monthNames\");\n\t\tmonthNamesShort = this._get(inst, \"monthNamesShort\");\n\t\tbeforeShowDay = this._get(inst, \"beforeShowDay\");\n\t\tshowOtherMonths = this._get(inst, \"showOtherMonths\");\n\t\tselectOtherMonths = this._get(inst, \"selectOtherMonths\");\n\t\tdefaultDate = this._getDefaultDate(inst);\n\t\thtml = \"\";\n\t\tdow;\n\t\tfor (row = 0; row < numMonths[0]; row++) {\n\t\t\tgroup = \"\";\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (col = 0; col < numMonths[1]; col++) {\n\t\t\t\tselectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tcornerClass = \" ui-corner-all\";\n\t\t\t\tcalender = \"\";\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += \"<div class='ui-datepicker-group\";\n\t\t\t\t\tif (numMonths[1] > 1) {\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += \" ui-datepicker-group-first\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + (isRTL ? \"right\" : \"left\"); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += \" ui-datepicker-group-last\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + (isRTL ? \"left\" : \"right\"); break;\n\t\t\t\t\t\t\tdefault: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcalender += \"'>\";\n\t\t\t\t}\n\t\t\t\tcalender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : \"\") +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : \"\") +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t\"</div><table class='ui-datepicker-calendar'><thead>\" +\n\t\t\t\t\t\"<tr>\";\n\t\t\t\tthead = (showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get(inst, \"weekHeader\") + \"</th>\" : \"\");\n\t\t\t\tfor (dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tday = (dow + firstDay) % 7;\n\t\t\t\t\tthead += \"<th scope='col'\" + ((dow + firstDay + 6) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\") + \">\" +\n\t\t\t\t\t\t\"<span title='\" + dayNames[day] + \"'>\" + dayNamesMin[day] + \"</span></th>\";\n\t\t\t\t}\n\t\t\t\tcalender += thead + \"</tr></thead><tbody>\";\n\t\t\t\tdaysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\t}\n\t\t\t\tleadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tcurRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tnumRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tprintDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += \"<tr>\";\n\t\t\t\t\ttbody = (!showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\n\t\t\t\t\t\tthis._get(inst, \"calculateWeek\")(printDate) + \"</td>\");\n\t\t\t\t\tfor (dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tdaySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, \"\"]);\n\t\t\t\t\t\totherMonth = (printDate.getMonth() !== drawMonth);\n\t\t\t\t\t\tunselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += \"<td class='\" +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\") + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? \" ui-datepicker-other-month\" : \"\") + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t\" \" + this._dayOverClass : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\": \"\") + // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\")) + \"'\" + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? \" title='\" + daySettings[2].replace(/'/g, \"'\") + \"'\" : \"\") + // cell title\n\t\t\t\t\t\t\t(unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\") + \">\" + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? \" \" : // display for other months\n\t\t\t\t\t\t\t(unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\n\t\t\t\t\t\t\t(printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\") +\n\t\t\t\t\t\t\t(printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? \" ui-priority-secondary\" : \"\") + // distinguish dates from other months\n\t\t\t\t\t\t\t\"' href='#'>\" + printDate.getDate() + \"</a>\")) + \"</td>\"; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + \"</tr>\";\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += \"</tbody></table>\" + (isMultiMonth ? \"</div>\" +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col === numMonths[1]-1) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\") : \"\");\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel;\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\n\t\tvar inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\n\t\t\tchangeMonth = this._get(inst, \"changeMonth\"),\n\t\t\tchangeYear = this._get(inst, \"changeYear\"),\n\t\t\tshowMonthAfterYear = this._get(inst, \"showMonthAfterYear\"),\n\t\t\thtml = \"<div class='ui-datepicker-title'>\",\n\t\t\tmonthHtml = \"\";\n\n\t\t// month selection\n\t\tif (secondary || !changeMonth) {\n\t\t\tmonthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[drawMonth] + \"</span>\";\n\t\t} else {\n\t\t\tinMinYear = (minDate && minDate.getFullYear() === drawYear);\n\t\t\tinMaxYear = (maxDate && maxDate.getFullYear() === drawYear);\n\t\t\tmonthHtml += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\";\n\t\t\tfor ( month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {\n\t\t\t\t\tmonthHtml += \"<option value='\" + month + \"'\" +\n\t\t\t\t\t\t(month === drawMonth ? \" selected='selected'\" : \"\") +\n\t\t\t\t\t\t\">\" + monthNamesShort[month] + \"</option>\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tmonthHtml += \"</select>\";\n\t\t}\n\n\t\tif (!showMonthAfterYear) {\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? \" \" : \"\");\n\t\t}\n\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = \"\";\n\t\t\tif (secondary || !changeYear) {\n\t\t\t\thtml += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n\t\t\t} else {\n\t\t\t\t// determine range of years to display\n\t\t\t\tyears = this._get(inst, \"yearRange\").split(\":\");\n\t\t\t\tthisYear = new Date().getFullYear();\n\t\t\t\tdetermineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+\\-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+\\-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tyear = determineYear(years[0]);\n\t\t\t\tendYear = Math.max(year, determineYear(years[1] || \"\"));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += \"<option value='\" + year + \"'\" +\n\t\t\t\t\t\t(year === drawYear ? \" selected='selected'\" : \"\") +\n\t\t\t\t\t\t\">\" + year + \"</option>\";\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += \"</select>\";\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\n\t\thtml += this._get(inst, \"yearSuffix\");\n\t\tif (showMonthAfterYear) {\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? \" \" : \"\") + monthHtml;\n\t\t}\n\t\thtml += \"</div>\"; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period === \"Y\" ? offset : 0),\n\t\t\tmonth = inst.drawMonth + (period === \"M\" ? offset : 0),\n\t\t\tday = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === \"D\" ? offset : 0),\n\t\t\tdate = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));\n\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period === \"M\" || period === \"Y\") {\n\t\t\tthis._notifyChange(inst);\n\t\t}\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tnewDate = (minDate && date < minDate ? minDate : date);\n\t\treturn (maxDate && newDate > maxDate ? maxDate : newDate);\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, \"onChangeMonthYear\");\n\t\tif (onChange) {\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t\t}\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, \"numberOfMonths\");\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths === \"number\" ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + \"Date\"), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst),\n\t\t\tdate = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\n\t\tif (offset < 0) {\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\t}\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar yearSplit, currentYear,\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tminYear = null,\n\t\t\tmaxYear = null,\n\t\t\tyears = this._get(inst, \"yearRange\");\n\t\t\tif (years){\n\t\t\t\tyearSplit = years.split(\":\");\n\t\t\t\tcurrentYear = new Date().getFullYear();\n\t\t\t\tminYear = parseInt(yearSplit[0], 10);\n\t\t\t\tmaxYear = parseInt(yearSplit[1], 10);\n\t\t\t\tif ( yearSplit[0].match(/[+\\-].*/) ) {\n\t\t\t\t\tminYear += currentYear;\n\t\t\t\t}\n\t\t\t\tif ( yearSplit[1].match(/[+\\-].*/) ) {\n\t\t\t\t\tmaxYear += currentYear;\n\t\t\t\t}\n\t\t\t}\n\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()) &&\n\t\t\t(!minYear || date.getFullYear() >= minYear) &&\n\t\t\t(!maxYear || date.getFullYear() <= maxYear));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, \"shortYearCutoff\");\n\t\tshortYearCutoff = (typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, \"dayNamesShort\"), dayNames: this._get(inst, \"dayNames\"),\n\t\t\tmonthNamesShort: this._get(inst, \"monthNamesShort\"), monthNames: this._get(inst, \"monthNames\")};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day === \"object\" ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, \"dateFormat\"), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction datepicker_bindHover(dpDiv) {\n\tvar selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n\treturn dpDiv.delegate(selector, \"mouseout\", function() {\n\t\t\t$(this).removeClass(\"ui-state-hover\");\n\t\t\tif (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n\t\t\t\t$(this).removeClass(\"ui-datepicker-prev-hover\");\n\t\t\t}\n\t\t\tif (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n\t\t\t\t$(this).removeClass(\"ui-datepicker-next-hover\");\n\t\t\t}\n\t\t})\n\t\t.delegate( selector, \"mouseover\", datepicker_handleMouseover );\n}\n\nfunction datepicker_handleMouseover() {\n\tif (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {\n\t\t$(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\");\n\t\t$(this).addClass(\"ui-state-hover\");\n\t\tif (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n\t\t\t$(this).addClass(\"ui-datepicker-prev-hover\");\n\t\t}\n\t\tif (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n\t\t\t$(this).addClass(\"ui-datepicker-next-hover\");\n\t\t}\n\t}\n}\n\n/* jQuery extend now ignores nulls! */\nfunction datepicker_extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props) {\n\t\tif (props[name] == null) {\n\t\t\ttarget[name] = props[name];\n\t\t}\n\t}\n\treturn target;\n}\n\n/* Invoke the datepicker functionality.\n @param options string - a command, optionally followed by additional parameters or\n\t\t\t\t\tObject - settings for attaching new datepicker functionality\n @return jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\t/* Append datepicker main container to body if not exist. */\n\tif ($(\"#\"+$.datepicker._mainDivId).length === 0) {\n\t\t$(\"body\").append($.datepicker.dpDiv);\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options === \"string\" && (options === \"isDisabled\" || options === \"getDate\" || options === \"widget\")) {\n\t\treturn $.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\t}\n\tif (options === \"option\" && arguments.length === 2 && typeof arguments[1] === \"string\") {\n\t\treturn $.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\t}\n\treturn this.each(function() {\n\t\ttypeof options === \"string\" ?\n\t\t\t$.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.11.2\";\n\nvar datepicker = $.datepicker;\n\n\n/*!\n * jQuery UI Draggable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/draggable/\n */\n\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif ( this.options.helper === \"original\" ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\t\tif (this.options.addClasses){\n\t\t\tthis.element.addClass(\"ui-draggable\");\n\t\t}\n\t\tif (this.options.disabled){\n\t\t\tthis.element.addClass(\"ui-draggable-disabled\");\n\t\t}\n\t\tthis._setHandleClassName();\n\n\t\tthis._mouseInit();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._removeHandleClassName();\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis.destroyOnClear = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._removeHandleClassName();\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar o = this.options;\n\n\t\tthis._blurActiveElement( event );\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).closest(\".ui-resizable-handle\").length > 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._blockFrames( o.iframeFix === true ? \"iframe\" : o.iframeFix );\n\n\t\treturn true;\n\n\t},\n\n\t_blockFrames: function( selector ) {\n\t\tthis.iframeBlocks = this.document.find( selector ).map(function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( \"position\", \"absolute\" )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.outerWidth( iframe.outerWidth() )\n\t\t\t\t.outerHeight( iframe.outerHeight() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t});\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_blurActiveElement: function( event ) {\n\t\tvar document = this.document[ 0 ];\n\n\t\t// Only need to blur if the event occurred on the draggable itself, see #10527\n\t\tif ( !this.handleElement.is( event.target ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// support: IE9\n\t\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\t\ttry {\n\n\t\t\t// Support: IE9, IE10\n\t\t\t// If the <body> is blurred, IE will switch windows, see #9520\n\t\t\tif ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== \"body\" ) {\n\n\t\t\t\t// Blur any element that currently has focus, see #4261\n\t\t\t\t$( document.activeElement ).blur();\n\t\t\t}\n\t\t} catch ( error ) {}\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif ($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\t\tthis.scrollParent = this.helper.scrollParent( true );\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tthis.hasFixedAncestor = this.helper.parents().filter(function() {\n\t\t\t\treturn $( this ).css( \"position\" ) === \"fixed\";\n\t\t\t}).length > 0;\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.positionAbs = this.element.offset();\n\t\tthis._refreshOffsets( event );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif (this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t// Reset helper's right/bottom css if they're set and set explicit width/height instead\n\t\t// as this prevents resizing of elements with right/bottom set (see #7772)\n\t\tthis._normalizeRightBottom();\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart(this, event);\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_refreshOffsets: function( event ) {\n\t\tthis.offset = {\n\t\t\ttop: this.positionAbs.top - this.margins.top,\n\t\t\tleft: this.positionAbs.left - this.margins.left,\n\t\t\tscroll: false,\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset()\n\t\t};\n\n\t\tthis.offset.click = {\n\t\t\tleft: event.pageX - this.offset.left,\n\t\t\ttop: event.pageY - this.offset.top\n\t\t};\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\t\t// reset any necessary cached properties (see #5009)\n\t\tif ( this.hasFixedAncestor ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event, true );\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif (this._trigger(\"drag\", event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\n\t\tif ($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.drag(this, event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar that = this,\n\t\t\tdropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour) {\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif (this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\tif ((this.options.revert === \"invalid\" && !dropped) || (this.options.revert === \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif (that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif (this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis._unblockFrames();\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop(this, event);\n\t\t}\n\n\t\t// Only need to focus if the event occurred on the draggable itself, see #10527\n\t\tif ( this.handleElement.is( event.target ) ) {\n\t\t\t// The interaction is over; whether or not the click resulted in a drag, focus the element\n\t\t\tthis.element.focus();\n\t\t}\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif (this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\t\treturn this.options.handle ?\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\n\t\t\ttrue;\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.handleElement = this.options.handle ?\n\t\t\tthis.element.find( this.options.handle ) : this.element;\n\t\tthis.handleElement.addClass( \"ui-draggable-handle\" );\n\t},\n\n\t_removeHandleClassName: function() {\n\t\tthis.handleElement.removeClass( \"ui-draggable-handle\" );\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options,\n\t\t\thelperIsFunction = $.isFunction( o.helper ),\n\t\t\thelper = helperIsFunction ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ?\n\t\t\t\t\tthis.element.clone().removeAttr( \"id\" ) :\n\t\t\t\t\tthis.element );\n\n\t\tif (!helper.parents(\"body\").length) {\n\t\t\thelper.appendTo((o.appendTo === \"parent\" ? this.element[0].parentNode : o.appendTo));\n\t\t}\n\n\t\t// http://bugs.jqueryui.com/ticket/9446\n\t\t// a helper function can return the original element\n\t\t// which wouldn't have been set to relative in _create\n\t\tif ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\n\t\tif (helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\"))) {\n\t\t\thelper.css(\"position\", \"absolute\");\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_setPositionRelative: function() {\n\t\tif ( !( /^(?:r|a|f)/ ).test( this.element.css( \"position\" ) ) ) {\n\t\t\tthis.element[ 0 ].style.position = \"relative\";\n\t\t}\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj === \"string\") {\n\t\t\tobj = obj.split(\" \");\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = { left: +obj[0], top: +obj[1] || 0 };\n\t\t}\n\t\tif (\"left\" in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif (\"right\" in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif (\"top\" in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif (\"bottom\" in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_isRootNode: function( element ) {\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tvar po = this.offsetParent.offset(),\n\t\t\tdocument = this.document[ 0 ];\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t// the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif (this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\t\tif ( this.cssPosition !== \"relative\" ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\tvar p = this.element.position(),\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: p.top - ( parseInt(this.helper.css( \"top\" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\n\t\t\tleft: p.left - ( parseInt(this.helper.css( \"left\" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\n\t\t};\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"), 10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"), 10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"), 10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"), 10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar isUserScrollable, c, ce,\n\t\t\to = this.options,\n\t\t\tdocument = this.document[ 0 ];\n\n\t\tthis.relativeContainer = null;\n\n\t\tif ( !o.containment ) {\n\t\t\tthis.containment = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t$( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"document\") {\n\t\t\tthis.containment = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment.constructor === Array ) {\n\t\t\tthis.containment = o.containment;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\n\t\tc = $( o.containment );\n\t\tce = c[ 0 ];\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tisUserScrollable = /(scroll|auto)/.test( c.css( \"overflow\" ) );\n\n\t\tthis.containment = [\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) + ( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) + ( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\n\t\t\t( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.width -\n\t\t\t\tthis.margins.left -\n\t\t\t\tthis.margins.right,\n\t\t\t( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.height -\n\t\t\t\tthis.margins.top -\n\t\t\t\tthis.margins.bottom\n\t\t];\n\t\tthis.relativeContainer = c;\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif (!pos) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.top * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top * mod -\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left +\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.left * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left * mod\t-\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event, constrainPosition ) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t// Cache the scroll\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\n\t\t\tthis.offset.scroll = {\n\t\t\t\ttop: this.scrollParent.scrollTop(),\n\t\t\t\tleft: this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\t// If we are not dragging yet, we won't check for options\n\t\tif ( constrainPosition ) {\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( this.relativeContainer ){\n\t\t\t\t\tco = this.relativeContainer.offset();\n\t\t\t\t\tcontainment = [\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcontainment = this.containment;\n\t\t\t\t}\n\n\t\t\t\tif (event.pageX - this.offset.click.left < containment[0]) {\n\t\t\t\t\tpageX = containment[0] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif (event.pageY - this.offset.click.top < containment[1]) {\n\t\t\t\t\tpageY = containment[1] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif (event.pageX - this.offset.click.left > containment[2]) {\n\t\t\t\t\tpageX = containment[2] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif (event.pageY - this.offset.click.top > containment[3]) {\n\t\t\t\t\tpageY = containment[3] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tleft = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"y\" ) {\n\t\t\t\tpageX = this.originalPageX;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"x\" ) {\n\t\t\t\tpageY = this.originalPageY;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.top\t-\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.top -\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( this.cssPosition === \"fixed\" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.left -\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.left -\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( this.cssPosition === \"fixed\" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t\tif ( this.destroyOnClear ) {\n\t\t\tthis.destroy();\n\t\t}\n\t},\n\n\t_normalizeRightBottom: function() {\n\t\tif ( this.options.axis !== \"y\" && this.helper.css( \"right\" ) !== \"auto\" ) {\n\t\t\tthis.helper.width( this.helper.width() );\n\t\t\tthis.helper.css( \"right\", \"auto\" );\n\t\t}\n\t\tif ( this.options.axis !== \"x\" && this.helper.css( \"bottom\" ) !== \"auto\" ) {\n\t\t\tthis.helper.height( this.helper.height() );\n\t\t\tthis.helper.css( \"bottom\", \"auto\" );\n\t\t}\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function( type, event, ui ) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\n\n\t\t// Absolute position and offset (see #6884 ) have to be recalculated after plugins\n\t\tif ( /^(drag|start|stop)/.test( type ) ) {\n\t\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\t\t\tui.offset = this.positionAbs;\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call( this, type, event, ui );\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add( \"draggable\", \"connectToSortable\", {\n\tstart: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t});\n\n\t\tdraggable.sortables = [];\n\t\t$( draggable.options.connectToSortable ).each(function() {\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\n\n\t\t\tif ( sortable && !sortable.options.disabled ) {\n\t\t\t\tdraggable.sortables.push( sortable );\n\n\t\t\t\t// refreshPositions is called at drag start to refresh the containerCache\n\t\t\t\t// which is used in drag. This ensures it's initialized and synchronized\n\t\t\t\t// with any changes that might have happened on the page since initialization.\n\t\t\t\tsortable.refreshPositions();\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\t},\n\tstop: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t});\n\n\t\tdraggable.cancelHelperRemoval = false;\n\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar sortable = this;\n\n\t\t\tif ( sortable.isOver ) {\n\t\t\t\tsortable.isOver = 0;\n\n\t\t\t\t// Allow this sortable to handle removing the helper\n\t\t\t\tdraggable.cancelHelperRemoval = true;\n\t\t\t\tsortable.cancelHelperRemoval = false;\n\n\t\t\t\t// Use _storedCSS To restore properties in the sortable,\n\t\t\t\t// as this also handles revert (#9675) since the draggable\n\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\tsortable._storedCSS = {\n\t\t\t\t\tposition: sortable.placeholder.css( \"position\" ),\n\t\t\t\t\ttop: sortable.placeholder.css( \"top\" ),\n\t\t\t\t\tleft: sortable.placeholder.css( \"left\" )\n\t\t\t\t};\n\n\t\t\t\tsortable._mouseStop(event);\n\n\t\t\t\t// Once drag has ended, the sortable should return to using\n\t\t\t\t// its original helper, not the shared helper from draggable\n\t\t\t\tsortable.options.helper = sortable.options._helper;\n\t\t\t} else {\n\t\t\t\t// Prevent this Sortable from removing the helper.\n\t\t\t\t// However, don't set the draggable to remove the helper\n\t\t\t\t// either as another connected Sortable may yet handle the removal.\n\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\tsortable._trigger( \"deactivate\", event, uiSortable );\n\t\t\t}\n\t\t});\n\t},\n\tdrag: function( event, ui, draggable ) {\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tsortable = this;\n\n\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\tsortable.positionAbs = draggable.positionAbs;\n\t\t\tsortable.helperProportions = draggable.helperProportions;\n\t\t\tsortable.offset.click = draggable.offset.click;\n\n\t\t\tif ( sortable._intersectsWith( sortable.containerCache ) ) {\n\t\t\t\tinnermostIntersecting = true;\n\n\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\t\t\tthis.positionAbs = draggable.positionAbs;\n\t\t\t\t\tthis.helperProportions = draggable.helperProportions;\n\t\t\t\t\tthis.offset.click = draggable.offset.click;\n\n\t\t\t\t\tif ( this !== sortable &&\n\t\t\t\t\t\t\tthis._intersectsWith( this.containerCache ) &&\n\t\t\t\t\t\t\t$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( innermostIntersecting ) {\n\t\t\t\t// If it intersects, we use a little isOver variable and set it once,\n\t\t\t\t// so that the move-in stuff gets fired only once.\n\t\t\t\tif ( !sortable.isOver ) {\n\t\t\t\t\tsortable.isOver = 1;\n\n\t\t\t\t\tsortable.currentItem = ui.helper\n\t\t\t\t\t\t.appendTo( sortable.element )\n\t\t\t\t\t\t.data( \"ui-sortable-item\", true );\n\n\t\t\t\t\t// Store helper option to later restore it\n\t\t\t\t\tsortable.options._helper = sortable.options.helper;\n\n\t\t\t\t\tsortable.options.helper = function() {\n\t\t\t\t\t\treturn ui.helper[ 0 ];\n\t\t\t\t\t};\n\n\t\t\t\t\t// Fire the start events of the sortable with our passed browser event,\n\t\t\t\t\t// and our own helper (so it doesn't create a new one)\n\t\t\t\t\tevent.target = sortable.currentItem[ 0 ];\n\t\t\t\t\tsortable._mouseCapture( event, true );\n\t\t\t\t\tsortable._mouseStart( event, true, true );\n\n\t\t\t\t\t// Because the browser event is way off the new appended portlet,\n\t\t\t\t\t// modify necessary variables to reflect the changes\n\t\t\t\t\tsortable.offset.click.top = draggable.offset.click.top;\n\t\t\t\t\tsortable.offset.click.left = draggable.offset.click.left;\n\t\t\t\t\tsortable.offset.parent.left -= draggable.offset.parent.left -\n\t\t\t\t\t\tsortable.offset.parent.left;\n\t\t\t\t\tsortable.offset.parent.top -= draggable.offset.parent.top -\n\t\t\t\t\t\tsortable.offset.parent.top;\n\n\t\t\t\t\tdraggable._trigger( \"toSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is in a valid drop zone,\n\t\t\t\t\t// used solely in the revert option to handle \"valid/invalid\".\n\t\t\t\t\tdraggable.dropped = sortable.element;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables in the case that\n\t\t\t\t\t// adding to one sortable changes the location of the other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t});\n\n\t\t\t\t\t// hack so receive/update callbacks work (mostly)\n\t\t\t\t\tdraggable.currentItem = draggable.element;\n\t\t\t\t\tsortable.fromOutside = draggable;\n\t\t\t\t}\n\n\t\t\t\tif ( sortable.currentItem ) {\n\t\t\t\t\tsortable._mouseDrag( event );\n\t\t\t\t\t// Copy the sortable's position because the draggable's can potentially reflect\n\t\t\t\t\t// a relative position, while sortable is always absolute, which the dragged\n\t\t\t\t\t// element has now become. (#8809)\n\t\t\t\t\tui.position = sortable.position;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t// we fake the drag stop of the sortable, but make sure it doesn't remove\n\t\t\t\t// the helper by using cancelHelperRemoval.\n\t\t\t\tif ( sortable.isOver ) {\n\n\t\t\t\t\tsortable.isOver = 0;\n\t\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\t\t// Calling sortable's mouseStop would trigger a revert,\n\t\t\t\t\t// so revert must be temporarily false until after mouseStop is called.\n\t\t\t\t\tsortable.options._revert = sortable.options.revert;\n\t\t\t\t\tsortable.options.revert = false;\n\n\t\t\t\t\tsortable._trigger( \"out\", event, sortable._uiHash( sortable ) );\n\t\t\t\t\tsortable._mouseStop( event, true );\n\n\t\t\t\t\t// restore sortable behaviors that were modfied\n\t\t\t\t\t// when the draggable entered the sortable area (#9481)\n\t\t\t\t\tsortable.options.revert = sortable.options._revert;\n\t\t\t\t\tsortable.options.helper = sortable.options._helper;\n\n\t\t\t\t\tif ( sortable.placeholder ) {\n\t\t\t\t\t\tsortable.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Recalculate the draggable's offset considering the sortable\n\t\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\t\tdraggable._refreshOffsets( event );\n\t\t\t\t\tui.position = draggable._generatePosition( event, true );\n\n\t\t\t\t\tdraggable._trigger( \"fromSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is no longer in a valid drop zone\n\t\t\t\t\tdraggable.dropped = false;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables just in case removing\n\t\t\t\t\t// from one sortable changes the location of other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( \"body\" ),\n\t\t\to = instance.options;\n\n\t\tif (t.css(\"cursor\")) {\n\t\t\to._cursor = t.css(\"cursor\");\n\t\t}\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif (o._cursor) {\n\t\t\t$(\"body\").css(\"cursor\", o._cursor);\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\t\tif (t.css(\"opacity\")) {\n\t\t\to._opacity = t.css(\"opacity\");\n\t\t}\n\t\tt.css(\"opacity\", o.opacity);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif (o._opacity) {\n\t\t\t$(ui.helper).css(\"opacity\", o._opacity);\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function( event, ui, i ) {\n\t\tif ( !i.scrollParentNotHidden ) {\n\t\t\ti.scrollParentNotHidden = i.helper.scrollParent( false );\n\t\t}\n\n\t\tif ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] && i.scrollParentNotHidden[ 0 ].tagName !== \"HTML\" ) {\n\t\t\ti.overflowOffset = i.scrollParentNotHidden.offset();\n\t\t}\n\t},\n\tdrag: function( event, ui, i ) {\n\n\t\tvar o = i.options,\n\t\t\tscrolled = false,\n\t\t\tscrollParent = i.scrollParentNotHidden[ 0 ],\n\t\t\tdocument = i.document[ 0 ];\n\n\t\tif ( scrollParent !== document && scrollParent.tagName !== \"HTML\" ) {\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif (!o.axis || o.axis !== \"x\") {\n\t\t\t\tif (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\t} else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!o.axis || o.axis !== \"y\") {\n\t\t\t\tif (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\t} else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\t\t}\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function( event, ui, i ) {\n\n\t\tvar o = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap).each(function() {\n\t\t\tvar $t = $(this),\n\t\t\t\t$o = $t.offset();\n\t\t\tif (this !== i.element[0]) {\n\t\t\t\ti.snapElements.push({\n\t\t\t\t\titem: this,\n\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tl = inst.snapElements[i].left - inst.margins.left;\n\t\t\tr = l + inst.snapElements[i].width;\n\t\t\tt = inst.snapElements[i].top - inst.margins.top;\n\t\t\tb = t + inst.snapElements[i].height;\n\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {\n\t\t\t\tif (inst.snapElements[i].snapping) {\n\t\t\t\t\t(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\t}\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (o.snapMode !== \"inner\") {\n\t\t\t\tts = Math.abs(t - y2) <= d;\n\t\t\t\tbs = Math.abs(b - y1) <= d;\n\t\t\t\tls = Math.abs(l - x2) <= d;\n\t\t\t\trs = Math.abs(r - x1) <= d;\n\t\t\t\tif (ts) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top;\n\t\t\t\t}\n\t\t\t\tif (bs) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top;\n\t\t\t\t}\n\t\t\t\tif (ls) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left;\n\t\t\t\t}\n\t\t\t\tif (rs) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = (ts || bs || ls || rs);\n\n\t\t\tif (o.snapMode !== \"outer\") {\n\t\t\t\tts = Math.abs(t - y1) <= d;\n\t\t\t\tbs = Math.abs(b - y2) <= d;\n\t\t\t\tls = Math.abs(l - x1) <= d;\n\t\t\t\trs = Math.abs(r - x2) <= d;\n\t\t\t\tif (ts) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top;\n\t\t\t\t}\n\t\t\t\tif (bs) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top;\n\t\t\t\t}\n\t\t\t\tif (ls) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left;\n\t\t\t\t}\n\t\t\t\tif (rs) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t}\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t}\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar min,\n\t\t\to = instance.options,\n\t\t\tgroup = $.makeArray($(o.stack)).sort(function(a, b) {\n\t\t\t\treturn (parseInt($(a).css(\"zIndex\"), 10) || 0) - (parseInt($(b).css(\"zIndex\"), 10) || 0);\n\t\t\t});\n\n\t\tif (!group.length) { return; }\n\n\t\tmin = parseInt($(group[0]).css(\"zIndex\"), 10) || 0;\n\t\t$(group).each(function(i) {\n\t\t\t$(this).css(\"zIndex\", min + i);\n\t\t});\n\t\tthis.css(\"zIndex\", (min + group.length));\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\n\t\tif (t.css(\"zIndex\")) {\n\t\t\to._zIndex = t.css(\"zIndex\");\n\t\t}\n\t\tt.css(\"zIndex\", o.zIndex);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\n\t\tif (o._zIndex) {\n\t\t\t$(ui.helper).css(\"zIndex\", o._zIndex);\n\t\t}\n\t}\n});\n\nvar draggable = $.ui.draggable;\n\n\n/*!\n * jQuery UI Resizable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/resizable/\n */\n\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\t// See #7960\n\t\tzIndex: 90,\n\n\t\t// callbacks\n\t\tresize: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_num: function( value ) {\n\t\treturn parseInt( value, 10 ) || 0;\n\t},\n\n\t_isNumber: function( value ) {\n\t\treturn !isNaN( parseInt( value, 10 ) );\n\t},\n\n\t_hasScroll: function( el, a ) {\n\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t_create: function() {\n\n\t\tvar n, i, handle, axis, hname,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\n\t\t});\n\n\t\t// Wrap the element if it cannot hold child nodes\n\t\tif (this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\tthis.element.wrap(\n\t\t\t\t$(\"<div class='ui-wrapper' style='overflow: hidden;'></div>\").css({\n\t\t\t\t\tposition: this.element.css(\"position\"),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css(\"top\"),\n\t\t\t\t\tleft: this.element.css(\"left\")\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"ui-resizable\", this.element.resizable( \"instance\" )\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\tthis.element.css({\n\t\t\t\tmarginLeft: this.originalElement.css(\"marginLeft\"),\n\t\t\t\tmarginTop: this.originalElement.css(\"marginTop\"),\n\t\t\t\tmarginRight: this.originalElement.css(\"marginRight\"),\n\t\t\t\tmarginBottom: this.originalElement.css(\"marginBottom\")\n\t\t\t});\n\t\t\tthis.originalElement.css({\n\t\t\t\tmarginLeft: 0,\n\t\t\t\tmarginTop: 0,\n\t\t\t\tmarginRight: 0,\n\t\t\t\tmarginBottom: 0\n\t\t\t});\n\t\t\t// support: Safari\n\t\t\t// Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css(\"resize\");\n\t\t\tthis.originalElement.css(\"resize\", \"none\");\n\n\t\t\tthis._proportionallyResizeElements.push( this.originalElement.css({\n\t\t\t\tposition: \"static\",\n\t\t\t\tzoom: 1,\n\t\t\t\tdisplay: \"block\"\n\t\t\t}) );\n\n\t\t\t// support: IE9\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css(\"margin\") });\n\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tthis.handles = o.handles ||\n\t\t\t( !$(\".ui-resizable-handle\", this.element).length ?\n\t\t\t\t\"e,s,se\" : {\n\t\t\t\t\tn: \".ui-resizable-n\",\n\t\t\t\t\te: \".ui-resizable-e\",\n\t\t\t\t\ts: \".ui-resizable-s\",\n\t\t\t\t\tw: \".ui-resizable-w\",\n\t\t\t\t\tse: \".ui-resizable-se\",\n\t\t\t\t\tsw: \".ui-resizable-sw\",\n\t\t\t\t\tne: \".ui-resizable-ne\",\n\t\t\t\t\tnw: \".ui-resizable-nw\"\n\t\t\t\t} );\n\n\t\tif (this.handles.constructor === String) {\n\n\t\t\tif ( this.handles === \"all\") {\n\t\t\t\tthis.handles = \"n,e,s,w,se,sw,ne,nw\";\n\t\t\t}\n\n\t\t\tn = this.handles.split(\",\");\n\t\t\tthis.handles = {};\n\n\t\t\tfor (i = 0; i < n.length; i++) {\n\n\t\t\t\thandle = $.trim(n[i]);\n\t\t\t\thname = \"ui-resizable-\" + handle;\n\t\t\t\taxis = $(\"<div class='ui-resizable-handle \" + hname + \"'></div>\");\n\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t// TODO : What's going on here?\n\t\t\t\tif (\"se\" === handle) {\n\t\t\t\t\taxis.addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\");\n\t\t\t\t}\n\n\t\t\t\tthis.handles[handle] = \".ui-resizable-\" + handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\tvar i, axis, padPos, padWrapper;\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor (i in this.handles) {\n\n\t\t\t\tif (this.handles[i].constructor === String) {\n\t\t\t\t\tthis.handles[i] = this.element.children( this.handles[ i ] ).first().show();\n\t\t\t\t}\n\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\taxis = $(this.handles[i], this.element);\n\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\tpadPos = [ \"padding\",\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? \"Top\" :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? \"Bottom\" :\n\t\t\t\t\t\t/^e$/.test(i) ? \"Right\" : \"Left\" ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t// TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif (!$(this.handles[i]).length) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $(\".ui-resizable-handle\", this.element)\n\t\t\t.disableSelection();\n\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className) {\n\t\t\t\t\taxis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t}\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : \"se\";\n\t\t\t}\n\t\t});\n\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function() {\n\t\t\t\t\tif (o.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar wrapper,\n\t\t\t_destroy = function(exp) {\n\t\t\t\t$(exp)\n\t\t\t\t\t.removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t\t.removeData(\"resizable\")\n\t\t\t\t\t.removeData(\"ui-resizable\")\n\t\t\t\t\t.unbind(\".resizable\")\n\t\t\t\t\t.find(\".ui-resizable-handle\")\n\t\t\t\t\t\t.remove();\n\t\t\t};\n\n\t\t// TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\twrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css(\"position\"),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css(\"top\"),\n\t\t\t\tleft: wrapper.css(\"left\")\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css(\"resize\", this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar i, handle,\n\t\t\tcapture = false;\n\n\t\tfor (i in this.handles) {\n\t\t\thandle = $(this.handles[i])[0];\n\t\t\tif (handle === event.target || $.contains(handle, event.target)) {\n\t\t\t\tcapture = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && capture;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar curleft, curtop, cursor,\n\t\t\to = this.options,\n\t\t\tel = this.element;\n\n\t\tthis.resizing = true;\n\n\t\tthis._renderProxy();\n\n\t\tcurleft = this._num(this.helper.css(\"left\"));\n\t\tcurtop = this._num(this.helper.css(\"top\"));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\n\t\tthis.size = this._helper ? {\n\t\t\t\twidth: this.helper.width(),\n\t\t\t\theight: this.helper.height()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.originalSize = this._helper ? {\n\t\t\t\twidth: el.outerWidth(),\n\t\t\t\theight: el.outerHeight()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.sizeDiff = {\n\t\t\twidth: el.outerWidth() - el.width(),\n\t\t\theight: el.outerHeight() - el.height()\n\t\t};\n\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\tthis.aspectRatio = (typeof o.aspectRatio === \"number\") ?\n\t\t\to.aspectRatio :\n\t\t\t((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tcursor = $(\".ui-resizable-\" + this.axis).css(\"cursor\");\n\t\t$(\"body\").css(\"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\tvar data, props,\n\t\t\tsmp = this.originalMousePosition,\n\t\t\ta = this.axis,\n\t\t\tdx = (event.pageX - smp.left) || 0,\n\t\t\tdy = (event.pageY - smp.top) || 0,\n\t\t\ttrigger = this._change[a];\n\n\t\tthis._updatePrevProperties();\n\n\t\tif (!trigger) {\n\t\t\treturn false;\n\t\t}\n\n\t\tdata = trigger.apply(this, [ event, dx, dy ]);\n\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey) {\n\t\t\tdata = this._updateRatio(data, event);\n\t\t}\n\n\t\tdata = this._respectSize(data, event);\n\n\t\tthis._updateCache(data);\n\n\t\tthis._propagate(\"resize\", event);\n\n\t\tprops = this._applyChanges();\n\n\t\tif ( !this._helper && this._proportionallyResizeElements.length ) {\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tif ( !$.isEmptyObject( props ) ) {\n\t\t\tthis._updatePrevProperties();\n\t\t\tthis._trigger( \"resize\", event, this.ui() );\n\t\t\tthis._applyChanges();\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar pr, ista, soffseth, soffsetw, s, left, top,\n\t\t\to = this.options, that = this;\n\n\t\tif (this._helper) {\n\n\t\t\tpr = this._proportionallyResizeElements;\n\t\t\tista = pr.length && (/textarea/i).test(pr[0].nodeName);\n\t\t\tsoffseth = ista && this._hasScroll(pr[0], \"left\") ? 0 : that.sizeDiff.height;\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\ts = {\n\t\t\t\twidth: (that.helper.width() - soffsetw),\n\t\t\t\theight: (that.helper.height() - soffseth)\n\t\t\t};\n\t\t\tleft = (parseInt(that.element.css(\"left\"), 10) +\n\t\t\t\t(that.position.left - that.originalPosition.left)) || null;\n\t\t\ttop = (parseInt(that.element.css(\"top\"), 10) +\n\t\t\t\t(that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate) {\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\t\t\t}\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) {\n\t\t\t\tthis._proportionallyResize();\n\t\t\t}\n\t\t}\n\n\t\t$(\"body\").css(\"cursor\", \"auto\");\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) {\n\t\t\tthis.helper.remove();\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\t_updatePrevProperties: function() {\n\t\tthis.prevPosition = {\n\t\t\ttop: this.position.top,\n\t\t\tleft: this.position.left\n\t\t};\n\t\tthis.prevSize = {\n\t\t\twidth: this.size.width,\n\t\t\theight: this.size.height\n\t\t};\n\t},\n\n\t_applyChanges: function() {\n\t\tvar props = {};\n\n\t\tif ( this.position.top !== this.prevPosition.top ) {\n\t\t\tprops.top = this.position.top + \"px\";\n\t\t}\n\t\tif ( this.position.left !== this.prevPosition.left ) {\n\t\t\tprops.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( this.size.width !== this.prevSize.width ) {\n\t\t\tprops.width = this.size.width + \"px\";\n\t\t}\n\t\tif ( this.size.height !== this.prevSize.height ) {\n\t\t\tprops.height = this.size.height + \"px\";\n\t\t}\n\n\t\tthis.helper.css( props );\n\n\t\treturn props;\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,\n\t\t\to = this.options;\n\n\t\tb = {\n\t\t\tminWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif (this._aspectRatio || forceAspectRatio) {\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif (pMinWidth > b.minWidth) {\n\t\t\t\tb.minWidth = pMinWidth;\n\t\t\t}\n\t\t\tif (pMinHeight > b.minHeight) {\n\t\t\t\tb.minHeight = pMinHeight;\n\t\t\t}\n\t\t\tif (pMaxWidth < b.maxWidth) {\n\t\t\t\tb.maxWidth = pMaxWidth;\n\t\t\t}\n\t\t\tif (pMaxHeight < b.maxHeight) {\n\t\t\t\tb.maxHeight = pMaxHeight;\n\t\t\t}\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tthis.offset = this.helper.offset();\n\t\tif (this._isNumber(data.left)) {\n\t\t\tthis.position.left = data.left;\n\t\t}\n\t\tif (this._isNumber(data.top)) {\n\t\t\tthis.position.top = data.top;\n\t\t}\n\t\tif (this._isNumber(data.height)) {\n\t\t\tthis.size.height = data.height;\n\t\t}\n\t\tif (this._isNumber(data.width)) {\n\t\t\tthis.size.width = data.width;\n\t\t}\n\t},\n\n\t_updateRatio: function( data ) {\n\n\t\tvar cpos = this.position,\n\t\t\tcsize = this.size,\n\t\t\ta = this.axis;\n\n\t\tif (this._isNumber(data.height)) {\n\t\t\tdata.width = (data.height * this.aspectRatio);\n\t\t} else if (this._isNumber(data.width)) {\n\t\t\tdata.height = (data.width / this.aspectRatio);\n\t\t}\n\n\t\tif (a === \"sw\") {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a === \"nw\") {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function( data ) {\n\n\t\tvar o = this._vBoundaries,\n\t\t\ta = this.axis,\n\t\t\tismaxw = this._isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width),\n\t\t\tismaxh = this._isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\tisminw = this._isNumber(data.width) && o.minWidth && (o.minWidth > data.width),\n\t\t\tisminh = this._isNumber(data.height) && o.minHeight && (o.minHeight > data.height),\n\t\t\tdw = this.originalPosition.left + this.originalSize.width,\n\t\t\tdh = this.position.top + this.size.height,\n\t\t\tcw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\t\tif (isminw) {\n\t\t\tdata.width = o.minWidth;\n\t\t}\n\t\tif (isminh) {\n\t\t\tdata.height = o.minHeight;\n\t\t}\n\t\tif (ismaxw) {\n\t\t\tdata.width = o.maxWidth;\n\t\t}\n\t\tif (ismaxh) {\n\t\t\tdata.height = o.maxHeight;\n\t\t}\n\n\t\tif (isminw && cw) {\n\t\t\tdata.left = dw - o.minWidth;\n\t\t}\n\t\tif (ismaxw && cw) {\n\t\t\tdata.left = dw - o.maxWidth;\n\t\t}\n\t\tif (isminh && ch) {\n\t\t\tdata.top = dh - o.minHeight;\n\t\t}\n\t\tif (ismaxh && ch) {\n\t\t\tdata.top = dh - o.maxHeight;\n\t\t}\n\n\t\t// Fixing jump error on top/left - bug #2330\n\t\tif (!data.width && !data.height && !data.left && data.top) {\n\t\t\tdata.top = null;\n\t\t} else if (!data.width && !data.height && !data.top && data.left) {\n\t\t\tdata.left = null;\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_getPaddingPlusBorderDimensions: function( element ) {\n\t\tvar i = 0,\n\t\t\twidths = [],\n\t\t\tborders = [\n\t\t\t\telement.css( \"borderTopWidth\" ),\n\t\t\t\telement.css( \"borderRightWidth\" ),\n\t\t\t\telement.css( \"borderBottomWidth\" ),\n\t\t\t\telement.css( \"borderLeftWidth\" )\n\t\t\t],\n\t\t\tpaddings = [\n\t\t\t\telement.css( \"paddingTop\" ),\n\t\t\t\telement.css( \"paddingRight\" ),\n\t\t\t\telement.css( \"paddingBottom\" ),\n\t\t\t\telement.css( \"paddingLeft\" )\n\t\t\t];\n\n\t\tfor ( ; i < 4; i++ ) {\n\t\t\twidths[ i ] = ( parseInt( borders[ i ], 10 ) || 0 );\n\t\t\twidths[ i ] += ( parseInt( paddings[ i ], 10 ) || 0 );\n\t\t}\n\n\t\treturn {\n\t\t\theight: widths[ 0 ] + widths[ 2 ],\n\t\t\twidth: widths[ 1 ] + widths[ 3 ]\n\t\t};\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tif (!this._proportionallyResizeElements.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar prel,\n\t\t\ti = 0,\n\t\t\telement = this.helper || this.element;\n\n\t\tfor ( ; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tprel = this._proportionallyResizeElements[i];\n\n\t\t\t// TODO: Seems like a bug to cache this.outerDimensions\n\t\t\t// considering that we are in a loop.\n\t\t\tif (!this.outerDimensions) {\n\t\t\t\tthis.outerDimensions = this._getPaddingPlusBorderDimensions( prel );\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.outerDimensions.height) || 0,\n\t\t\t\twidth: (element.width() - this.outerDimensions.width) || 0\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif (this._helper) {\n\n\t\t\tthis.helper = this.helper || $(\"<div style='overflow:hidden;'></div>\");\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() - 1,\n\t\t\t\theight: this.element.outerHeight() - 1,\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tleft: this.elementOffset.left + \"px\",\n\t\t\t\ttop: this.elementOffset.top + \"px\",\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments),\n\t\t\t\tthis._change.e.apply(this, [ event, dx, dy ]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments),\n\t\t\t\tthis._change.w.apply(this, [ event, dx, dy ]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments),\n\t\t\t\tthis._change.e.apply(this, [ event, dx, dy ]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments),\n\t\t\t\tthis._change.w.apply(this, [ event, dx, dy ]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [ event, this.ui() ]);\n\t\t(n !== \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function( event ) {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tpr = that._proportionallyResizeElements,\n\t\t\tista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\tsoffseth = ista && that._hasScroll(pr[0], \"left\") ? 0 : that.sizeDiff.height,\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width,\n\t\t\tstyle = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\tleft = (parseInt(that.element.css(\"left\"), 10) +\n\t\t\t\t(that.position.left - that.originalPosition.left)) || null,\n\t\t\ttop = (parseInt(that.element.css(\"top\"), 10) +\n\t\t\t\t(that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css(\"width\"), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css(\"height\"), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css(\"top\"), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css(\"left\"), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) {\n\t\t\t\t\t\t$(pr[0]).css({ width: data.width, height: data.height });\n\t\t\t\t\t}\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add( \"resizable\", \"containment\", {\n\n\tstart: function() {\n\t\tvar element, p, co, ch, cw, width, height,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tel = that.element,\n\t\t\toc = o.containment,\n\t\t\tce = ( oc instanceof $ ) ? oc.get( 0 ) : ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthat.containerElement = $( ce );\n\n\t\tif ( /document/.test( oc ) || oc === document ) {\n\t\t\tthat.containerOffset = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\t\t\tthat.containerPosition = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $( document ),\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\twidth: $( document ).width(),\n\t\t\t\theight: $( document ).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t} else {\n\t\t\telement = $( ce );\n\t\t\tp = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function( i, name ) {\n\t\t\t\tp[ i ] = that._num( element.css( \"padding\" + name ) );\n\t\t\t});\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = {\n\t\t\t\theight: ( element.innerHeight() - p[ 3 ] ),\n\t\t\t\twidth: ( element.innerWidth() - p[ 1 ] )\n\t\t\t};\n\n\t\t\tco = that.containerOffset;\n\t\t\tch = that.containerSize.height;\n\t\t\tcw = that.containerSize.width;\n\t\t\twidth = ( that._hasScroll ( ce, \"left\" ) ? ce.scrollWidth : cw );\n\t\t\theight = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce,\n\t\t\t\tleft: co.left,\n\t\t\t\ttop: co.top,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function( event ) {\n\t\tvar woset, hoset, isParent, isOffsetRelative,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcp = that.position,\n\t\t\tpRatio = that._aspectRatio || event.shiftKey,\n\t\t\tcop = {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t},\n\t\t\tce = that.containerElement,\n\t\t\tcontinueResize = true;\n\n\t\tif ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\tcop = co;\n\t\t}\n\n\t\tif ( cp.left < ( that._helper ? co.left : 0 ) ) {\n\t\t\tthat.size.width = that.size.width +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.left - co.left ) :\n\t\t\t\t\t( that.position.left - cop.left ) );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif ( cp.top < ( that._helper ? co.top : 0 ) ) {\n\t\t\tthat.size.height = that.size.height +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.top - co.top ) :\n\t\t\t\t\tthat.position.top );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tisParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );\n\t\tisOffsetRelative = /relative|absolute/.test( that.containerElement.css( \"position\" ) );\n\n\t\tif ( isParent && isOffsetRelative ) {\n\t\t\tthat.offset.left = that.parentData.left + that.position.left;\n\t\t\tthat.offset.top = that.parentData.top + that.position.top;\n\t\t} else {\n\t\t\tthat.offset.left = that.element.offset().left;\n\t\t\tthat.offset.top = that.element.offset().top;\n\t\t}\n\n\t\twoset = Math.abs( that.sizeDiff.width +\n\t\t\t(that._helper ?\n\t\t\t\tthat.offset.left - cop.left :\n\t\t\t\t(that.offset.left - co.left)) );\n\n\t\thoset = Math.abs( that.sizeDiff.height +\n\t\t\t(that._helper ?\n\t\t\t\tthat.offset.top - cop.top :\n\t\t\t\t(that.offset.top - co.top)) );\n\n\t\tif ( woset + that.size.width >= that.parentData.width ) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( hoset + that.size.height >= that.parentData.height ) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( !continueResize ){\n\t\t\tthat.position.left = that.prevPosition.left;\n\t\t\tthat.position.top = that.prevPosition.top;\n\t\t\tthat.size.width = that.prevSize.width;\n\t\t\tthat.size.height = that.prevSize.height;\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcop = that.containerPosition,\n\t\t\tce = that.containerElement,\n\t\t\thelper = $( that.helper ),\n\t\t\tho = helper.offset(),\n\t\t\tw = helper.outerWidth() - that.sizeDiff.width,\n\t\t\th = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif ( that._helper && !o.animate && ( /relative/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css({\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t});\n\t\t}\n\n\t\tif ( that._helper && !o.animate && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css({\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t});\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function() {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\t_store = function(exp) {\n\t\t\t\t$(exp).each(function() {\n\t\t\t\t\tvar el = $(this);\n\t\t\t\t\tel.data(\"ui-resizable-alsoresize\", {\n\t\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\t\tleft: parseInt(el.css(\"left\"), 10), top: parseInt(el.css(\"top\"), 10)\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\n\t\tif (typeof(o.alsoResize) === \"object\" && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) {\n\t\t\t\to.alsoResize = o.alsoResize[0];\n\t\t\t\t_store(o.alsoResize);\n\t\t\t} else {\n\t\t\t\t$.each(o.alsoResize, function(exp) {\n\t\t\t\t\t_store(exp);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\tdelta = {\n\t\t\t\theight: (that.size.height - os.height) || 0,\n\t\t\t\twidth: (that.size.width - os.width) || 0,\n\t\t\t\ttop: (that.position.top - op.top) || 0,\n\t\t\t\tleft: (that.position.left - op.left) || 0\n\t\t\t},\n\n\t\t\t_alsoResize = function(exp, c) {\n\t\t\t\t$(exp).each(function() {\n\t\t\t\t\tvar el = $(this), start = $(this).data(\"ui-resizable-alsoresize\"), style = {},\n\t\t\t\t\t\tcss = c && c.length ?\n\t\t\t\t\t\t\tc :\n\t\t\t\t\t\t\tel.parents(ui.originalElement[0]).length ?\n\t\t\t\t\t\t\t\t[ \"width\", \"height\" ] :\n\t\t\t\t\t\t\t\t[ \"width\", \"height\", \"top\", \"left\" ];\n\n\t\t\t\t\t$.each(css, function(i, prop) {\n\t\t\t\t\t\tvar sum = (start[prop] || 0) + (delta[prop] || 0);\n\t\t\t\t\t\tif (sum && sum >= 0) {\n\t\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tel.css(style);\n\t\t\t\t});\n\t\t\t};\n\n\t\tif (typeof(o.alsoResize) === \"object\" && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function(exp, c) {\n\t\t\t\t_alsoResize(exp, c);\n\t\t\t});\n\t\t} else {\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function() {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function() {\n\n\t\tvar that = $(this).resizable( \"instance\" ), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({\n\t\t\t\topacity: 0.25,\n\t\t\t\tdisplay: \"block\",\n\t\t\t\tposition: \"relative\",\n\t\t\t\theight: cs.height,\n\t\t\t\twidth: cs.width,\n\t\t\t\tmargin: 0,\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t})\n\t\t\t.addClass(\"ui-resizable-ghost\")\n\t\t\t.addClass(typeof o.ghost === \"string\" ? o.ghost : \"\");\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function() {\n\t\tvar that = $(this).resizable( \"instance\" );\n\t\tif (that.ghost) {\n\t\t\tthat.ghost.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\theight: that.size.height,\n\t\t\t\twidth: that.size.width\n\t\t\t});\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $(this).resizable( \"instance\" );\n\t\tif (that.ghost && that.helper) {\n\t\t\tthat.helper.get(0).removeChild(that.ghost.get(0));\n\t\t}\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function() {\n\t\tvar outerDimensions,\n\t\t\tthat = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tcs = that.size,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\ta = that.axis,\n\t\t\tgrid = typeof o.grid === \"number\" ? [ o.grid, o.grid ] : o.grid,\n\t\t\tgridX = (grid[0] || 1),\n\t\t\tgridY = (grid[1] || 1),\n\t\t\tox = Math.round((cs.width - os.width) / gridX) * gridX,\n\t\t\toy = Math.round((cs.height - os.height) / gridY) * gridY,\n\t\t\tnewWidth = os.width + ox,\n\t\t\tnewHeight = os.height + oy,\n\t\t\tisMaxWidth = o.maxWidth && (o.maxWidth < newWidth),\n\t\t\tisMaxHeight = o.maxHeight && (o.maxHeight < newHeight),\n\t\t\tisMinWidth = o.minWidth && (o.minWidth > newWidth),\n\t\t\tisMinHeight = o.minHeight && (o.minHeight > newHeight);\n\n\t\to.grid = grid;\n\n\t\tif (isMinWidth) {\n\t\t\tnewWidth += gridX;\n\t\t}\n\t\tif (isMinHeight) {\n\t\t\tnewHeight += gridY;\n\t\t}\n\t\tif (isMaxWidth) {\n\t\t\tnewWidth -= gridX;\n\t\t}\n\t\tif (isMaxHeight) {\n\t\t\tnewHeight -= gridY;\n\t\t}\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t} else if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.top = op.top - oy;\n\t\t} else if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.left = op.left - ox;\n\t\t} else {\n\t\t\tif ( newHeight - gridY <= 0 || newWidth - gridX <= 0) {\n\t\t\t\touterDimensions = that._getPaddingPlusBorderDimensions( this );\n\t\t\t}\n\n\t\t\tif ( newHeight - gridY > 0 ) {\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top - oy;\n\t\t\t} else {\n\t\t\t\tnewHeight = gridY - outerDimensions.height;\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top + os.height - newHeight;\n\t\t\t}\n\t\t\tif ( newWidth - gridX > 0 ) {\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left - ox;\n\t\t\t} else {\n\t\t\t\tnewWidth = gridY - outerDimensions.height;\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left + os.width - newWidth;\n\t\t\t}\n\t\t}\n\t}\n\n});\n\nvar resizable = $.ui.resizable;\n\n\n/*!\n * jQuery UI Dialog 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/dialog/\n */\n\n\nvar dialog = $.widget( \"ui.dialog\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoOpen: true,\n\t\tbuttons: [],\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"Close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// Ensure the titlebar is always visible\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\ttitle: null,\n\t\twidth: 300,\n\n\t\t// callbacks\n\t\tbeforeClose: null,\n\t\tclose: null,\n\t\tdrag: null,\n\t\tdragStart: null,\n\t\tdragStop: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresize: null,\n\t\tresizeStart: null,\n\t\tresizeStop: null\n\t},\n\n\tsizeRelatedOptions: {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\n\tresizableRelatedOptions: {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t},\n\n\t_create: function() {\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[ 0 ].style.display,\n\t\t\twidth: this.element[ 0 ].style.width,\n\t\t\tminHeight: this.element[ 0 ].style.minHeight,\n\t\t\tmaxHeight: this.element[ 0 ].style.maxHeight,\n\t\t\theight: this.element[ 0 ].style.height\n\t\t};\n\t\tthis.originalPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\n\t\tthis._createWrapper();\n\n\t\tthis.element\n\t\t\t.show()\n\t\t\t.removeAttr( \"title\" )\n\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.appendTo( this.uiDialog );\n\n\t\tthis._createTitlebar();\n\t\tthis._createButtonPane();\n\n\t\tif ( this.options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( this.options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tthis._trackFocus();\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\t\tif ( element && (element.jquery || element.nodeType) ) {\n\t\t\treturn $( element );\n\t\t}\n\t\treturn this.document.find( element || \"body\" ).eq( 0 );\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toriginalPosition = this.originalPosition;\n\n\t\tthis._destroyOverlay();\n\n\t\tthis.element\n\t\t\t.removeUniqueId()\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.css( this.originalCss )\n\t\t\t// Without detaching first, the following becomes really slow\n\t\t\t.detach();\n\n\t\tthis.uiDialog.stop( true, true ).remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = originalPosition.parent.children().eq( originalPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toriginalPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tdisable: $.noop,\n\tenable: $.noop,\n\n\tclose: function( event ) {\n\t\tvar activeElement,\n\t\t\tthat = this;\n\n\t\tif ( !this._isOpen || this._trigger( \"beforeClose\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\t\tthis._focusedElement = null;\n\t\tthis._destroyOverlay();\n\t\tthis._untrackInstance();\n\n\t\tif ( !this.opener.filter( \":focusable\" ).focus().length ) {\n\n\t\t\t// support: IE9\n\t\t\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\t\t\ttry {\n\t\t\t\tactiveElement = this.document[ 0 ].activeElement;\n\n\t\t\t\t// Support: IE9, IE10\n\t\t\t\t// If the <body> is blurred, IE will switch windows, see #4520\n\t\t\t\tif ( activeElement && activeElement.nodeName.toLowerCase() !== \"body\" ) {\n\n\t\t\t\t\t// Hiding a focused element doesn't trigger blur in WebKit\n\t\t\t\t\t// so in case we have nothing to focus on, explicitly blur the active element\n\t\t\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=47182\n\t\t\t\t\t$( activeElement ).blur();\n\t\t\t\t}\n\t\t\t} catch ( error ) {}\n\t\t}\n\n\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\tthat._trigger( \"close\", event );\n\t\t});\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\tmoveToTop: function() {\n\t\tthis._moveToTop();\n\t},\n\n\t_moveToTop: function( event, silent ) {\n\t\tvar moved = false,\n\t\t\tzIndicies = this.uiDialog.siblings( \".ui-front:visible\" ).map(function() {\n\t\t\t\treturn +$( this ).css( \"z-index\" );\n\t\t\t}).get(),\n\t\t\tzIndexMax = Math.max.apply( null, zIndicies );\n\n\t\tif ( zIndexMax >= +this.uiDialog.css( \"z-index\" ) ) {\n\t\t\tthis.uiDialog.css( \"z-index\", zIndexMax + 1 );\n\t\t\tmoved = true;\n\t\t}\n\n\t\tif ( moved && !silent ) {\n\t\t\tthis._trigger( \"focus\", event );\n\t\t}\n\t\treturn moved;\n\t},\n\n\topen: function() {\n\t\tvar that = this;\n\t\tif ( this._isOpen ) {\n\t\t\tif ( this._moveToTop() ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = true;\n\t\tthis.opener = $( this.document[ 0 ].activeElement );\n\n\t\tthis._size();\n\t\tthis._position();\n\t\tthis._createOverlay();\n\t\tthis._moveToTop( null, true );\n\n\t\t// Ensure the overlay is moved to the top with the dialog, but only when\n\t\t// opening. The overlay shouldn't move after the dialog is open so that\n\t\t// modeless dialogs opened after the modal dialog stack properly.\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.css( \"z-index\", this.uiDialog.css( \"z-index\" ) - 1 );\n\t\t}\n\n\t\tthis._show( this.uiDialog, this.options.show, function() {\n\t\t\tthat._focusTabbable();\n\t\t\tthat._trigger( \"focus\" );\n\t\t});\n\n\t\t// Track the dialog immediately upon openening in case a focus event\n\t\t// somehow occurs outside of the dialog before an element inside the\n\t\t// dialog is focused (#10152)\n\t\tthis._makeFocusTarget();\n\n\t\tthis._trigger( \"open\" );\n\t},\n\n\t_focusTabbable: function() {\n\t\t// Set focus to the first match:\n\t\t// 1. An element that was focused previously\n\t\t// 2. First element inside the dialog matching [autofocus]\n\t\t// 3. Tabbable element inside the content element\n\t\t// 4. Tabbable element inside the buttonpane\n\t\t// 5. The close button\n\t\t// 6. The dialog itself\n\t\tvar hasFocus = this._focusedElement;\n\t\tif ( !hasFocus ) {\n\t\t\thasFocus = this.element.find( \"[autofocus]\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.element.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogTitlebarClose.filter( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialog;\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\t},\n\n\t_keepFocus: function( event ) {\n\t\tfunction checkFocus() {\n\t\t\tvar activeElement = this.document[0].activeElement,\n\t\t\t\tisActive = this.uiDialog[0] === activeElement ||\n\t\t\t\t\t$.contains( this.uiDialog[0], activeElement );\n\t\t\tif ( !isActive ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t}\n\t\tevent.preventDefault();\n\t\tcheckFocus.call( this );\n\t\t// support: IE\n\t\t// IE <= 8 doesn't prevent moving focus even with event.preventDefault()\n\t\t// so we check again later\n\t\tthis._delay( checkFocus );\n\t},\n\n\t_createWrapper: function() {\n\t\tthis.uiDialog = $(\"<div>\")\n\t\t\t.addClass( \"ui-dialog ui-widget ui-widget-content ui-corner-all ui-front \" +\n\t\t\t\tthis.options.dialogClass )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: \"dialog\"\n\t\t\t})\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._on( this.uiDialog, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// prevent tabbing out of dialogs\n\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar tabbables = this.uiDialog.find( \":tabbable\" ),\n\t\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\t\tlast = tabbables.filter( \":last\" );\n\n\t\t\t\tif ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tfirst.focus();\n\t\t\t\t\t});\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tlast.focus();\n\t\t\t\t\t});\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\tmousedown: function( event ) {\n\t\t\t\tif ( this._moveToTop( event ) ) {\n\t\t\t\t\tthis._focusTabbable();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// We assume that any existing aria-describedby attribute means\n\t\t// that the dialog content is marked up properly\n\t\t// otherwise we brute force the content as the description\n\t\tif ( !this.element.find( \"[aria-describedby]\" ).length ) {\n\t\t\tthis.uiDialog.attr({\n\t\t\t\t\"aria-describedby\": this.element.uniqueId().attr( \"id\" )\n\t\t\t});\n\t\t}\n\t},\n\n\t_createTitlebar: function() {\n\t\tvar uiDialogTitle;\n\n\t\tthis.uiDialogTitlebar = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix\" )\n\t\t\t.prependTo( this.uiDialog );\n\t\tthis._on( this.uiDialogTitlebar, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// Don't prevent click on close button (#8838)\n\t\t\t\t// Focusing a dialog that is partially scrolled out of view\n\t\t\t\t// causes the browser to scroll it into view, preventing the click event\n\t\t\t\tif ( !$( event.target ).closest( \".ui-dialog-titlebar-close\" ) ) {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tthis.uiDialog.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// support: IE\n\t\t// Use type=\"button\" to prevent enter keypresses in textboxes from closing the\n\t\t// dialog in IE (#9312)\n\t\tthis.uiDialogTitlebarClose = $( \"<button type='button'></button>\" )\n\t\t\t.button({\n\t\t\t\tlabel: this.options.closeText,\n\t\t\t\ticons: {\n\t\t\t\t\tprimary: \"ui-icon-closethick\"\n\t\t\t\t},\n\t\t\t\ttext: false\n\t\t\t})\n\t\t\t.addClass( \"ui-dialog-titlebar-close\" )\n\t\t\t.appendTo( this.uiDialogTitlebar );\n\t\tthis._on( this.uiDialogTitlebarClose, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t});\n\n\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t.prependTo( this.uiDialogTitlebar );\n\t\tthis._title( uiDialogTitle );\n\n\t\tthis.uiDialog.attr({\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\t},\n\n\t_title: function( title ) {\n\t\tif ( !this.options.title ) {\n\t\t\ttitle.html( \" \" );\n\t\t}\n\t\ttitle.text( this.options.title );\n\t},\n\n\t_createButtonPane: function() {\n\t\tthis.uiDialogButtonPane = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\tthis.uiButtonSet = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t.appendTo( this.uiDialogButtonPane );\n\n\t\tthis._createButtons();\n\t},\n\n\t_createButtons: function() {\n\t\tvar that = this,\n\t\t\tbuttons = this.options.buttons;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t\treturn;\n\t\t}\n\n\t\t$.each( buttons, function( name, props ) {\n\t\t\tvar click, buttonOptions;\n\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t{ click: props, text: name } :\n\t\t\t\tprops;\n\t\t\t// Default to a non-submitting button\n\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t// Change the context for the click callback to be the main element\n\t\t\tclick = props.click;\n\t\t\tprops.click = function() {\n\t\t\t\tclick.apply( that.element[ 0 ], arguments );\n\t\t\t};\n\t\t\tbuttonOptions = {\n\t\t\t\ticons: props.icons,\n\t\t\t\ttext: props.showText\n\t\t\t};\n\t\t\tdelete props.icons;\n\t\t\tdelete props.showText;\n\t\t\t$( \"<button></button>\", props )\n\t\t\t\t.button( buttonOptions )\n\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t});\n\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar left = ui.offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = ui.offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" +\n\t\t\t\t\t\t\"top\" + (top >= 0 ? \"+\" : \"\") + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\t$( this ).removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\thandles = options.resizable,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css(\"position\"),\n\t\t\tresizeHandles = typeof handles === \"string\" ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar offset = that.uiDialog.offset(),\n\t\t\t\t\tleft = offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.height = that.uiDialog.height();\n\t\t\t\toptions.width = that.uiDialog.width();\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" +\n\t\t\t\t\t\t\"top\" + (top >= 0 ? \"+\" : \"\") + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position );\n\t},\n\n\t_trackFocus: function() {\n\t\tthis._on( this.widget(), {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._makeFocusTarget();\n\t\t\t\tthis._focusedElement = $( event.target );\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeFocusTarget: function() {\n\t\tthis._untrackInstance();\n\t\tthis._trackingInstances().unshift( this );\n\t},\n\n\t_untrackInstance: function() {\n\t\tvar instances = this._trackingInstances(),\n\t\t\texists = $.inArray( this, instances );\n\t\tif ( exists !== -1 ) {\n\t\t\tinstances.splice( exists, 1 );\n\t\t}\n\t},\n\n\t_trackingInstances: function() {\n\t\tvar instances = this.document.data( \"ui-dialog-instances\" );\n\t\tif ( !instances ) {\n\t\t\tinstances = [];\n\t\t\tthis.document.data( \"ui-dialog-instances\", instances );\n\t\t}\n\t\treturn instances;\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\treturn options.height === \"auto\" ?\n\t\t\toptions.minHeight :\n\t\t\tMath.min( options.minHeight, options.height );\n\t},\n\n\t_position: function() {\n\t\t// Need to show the dialog to get the actual offset in the position plugin\n\t\tvar isVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( this.options.position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresize = false,\n\t\t\tresizableOptions = {};\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in that.sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in that.resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t\tthis._position();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tif ( key === \"dialogClass\" ) {\n\t\t\tuiDialog\n\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t.addClass( value );\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.uiDialog.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"buttons\" ) {\n\t\t\tthis._createButtons();\n\t\t}\n\n\t\tif ( key === \"closeText\" ) {\n\t\t\tthis.uiDialogTitlebarClose.button({\n\t\t\t\t// Ensure that we always pass a string\n\t\t\t\tlabel: \"\" + value\n\t\t\t});\n\t\t}\n\n\t\tif ( key === \"draggable\" ) {\n\t\t\tisDraggable = uiDialog.is( \":data(ui-draggable)\" );\n\t\t\tif ( isDraggable && !value ) {\n\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t}\n\n\t\t\tif ( !isDraggable && value ) {\n\t\t\t\tthis._makeDraggable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"position\" ) {\n\t\t\tthis._position();\n\t\t}\n\n\t\tif ( key === \"resizable\" ) {\n\t\t\t// currently resizable, becoming non-resizable\n\t\t\tisResizable = uiDialog.is( \":data(ui-resizable)\" );\n\t\t\tif ( isResizable && !value ) {\n\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t}\n\n\t\t\t// currently resizable, changing handles\n\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t}\n\n\t\t\t// currently non-resizable, becoming resizable\n\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\tthis._makeResizable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"title\" ) {\n\t\t\tthis._title( this.uiDialogTitlebar.find( \".ui-dialog-title\" ) );\n\t\t}\n\t},\n\n\t_size: function() {\n\t\t// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t// divs will both have width and height set, so we need to reset them\n\t\tvar nonContentHeight, minContentHeight, maxContentHeight,\n\t\t\toptions = this.options;\n\n\t\t// Reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\tmaxHeight: \"none\",\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\t\tmaxContentHeight = typeof options.maxHeight === \"number\" ?\n\t\t\tMath.max( 0, options.maxHeight - nonContentHeight ) :\n\t\t\t\"none\";\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\tthis.element.css({\n\t\t\t\tminHeight: minContentHeight,\n\t\t\t\tmaxHeight: maxContentHeight,\n\t\t\t\theight: \"auto\"\n\t\t\t});\n\t\t} else {\n\t\t\tthis.element.height( Math.max( 0, options.height - nonContentHeight ) );\n\t\t}\n\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t},\n\n\t_blockFrames: function() {\n\t\tthis.iframeBlocks = this.document.find( \"iframe\" ).map(function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\twidth: iframe.outerWidth(),\n\t\t\t\t\theight: iframe.outerHeight()\n\t\t\t\t})\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.offset( iframe.offset() )[0];\n\t\t});\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_allowInteraction: function( event ) {\n\t\tif ( $( event.target ).closest( \".ui-dialog\" ).length ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: Remove hack when datepicker implements\n\t\t// the .ui-front logic (#8989)\n\t\treturn !!$( event.target ).closest( \".ui-datepicker\" ).length;\n\t},\n\n\t_createOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We use a delay in case the overlay is created from an\n\t\t// event that we're going to be cancelling (#2804)\n\t\tvar isOpening = true;\n\t\tthis._delay(function() {\n\t\t\tisOpening = false;\n\t\t});\n\n\t\tif ( !this.document.data( \"ui-dialog-overlays\" ) ) {\n\n\t\t\t// Prevent use of anchors and inputs\n\t\t\t// Using _on() for an event handler shared across many instances is\n\t\t\t// safe because the dialogs stack and must be closed in reverse order\n\t\t\tthis._on( this.document, {\n\t\t\t\tfocusin: function( event ) {\n\t\t\t\t\tif ( isOpening ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !this._allowInteraction( event ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis._trackingInstances()[ 0 ]._focusTabbable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.overlay = $( \"<div>\" )\n\t\t\t.addClass( \"ui-widget-overlay ui-front\" )\n\t\t\t.appendTo( this._appendTo() );\n\t\tthis._on( this.overlay, {\n\t\t\tmousedown: \"_keepFocus\"\n\t\t});\n\t\tthis.document.data( \"ui-dialog-overlays\",\n\t\t\t(this.document.data( \"ui-dialog-overlays\" ) || 0) + 1 );\n\t},\n\n\t_destroyOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.overlay ) {\n\t\t\tvar overlays = this.document.data( \"ui-dialog-overlays\" ) - 1;\n\n\t\t\tif ( !overlays ) {\n\t\t\t\tthis.document\n\t\t\t\t\t.unbind( \"focusin\" )\n\t\t\t\t\t.removeData( \"ui-dialog-overlays\" );\n\t\t\t} else {\n\t\t\t\tthis.document.data( \"ui-dialog-overlays\", overlays );\n\t\t\t}\n\n\t\t\tthis.overlay.remove();\n\t\t\tthis.overlay = null;\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Droppable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/droppable/\n */\n\n\n$.widget( \"ui.droppable\", {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: \"*\",\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tdeactivate: null,\n\t\tdrop: null,\n\t\tout: null,\n\t\tover: null\n\t},\n\t_create: function() {\n\n\t\tvar proportions,\n\t\t\to = this.options,\n\t\t\taccept = o.accept;\n\n\t\tthis.isover = false;\n\t\tthis.isout = true;\n\n\t\tthis.accept = $.isFunction( accept ) ? accept : function( d ) {\n\t\t\treturn d.is( accept );\n\t\t};\n\n\t\tthis.proportions = function( /* valueToWrite */ ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\t// Store the droppable's proportions\n\t\t\t\tproportions = arguments[ 0 ];\n\t\t\t} else {\n\t\t\t\t// Retrieve or derive the droppable's proportions\n\t\t\t\treturn proportions ?\n\t\t\t\t\tproportions :\n\t\t\t\t\tproportions = {\n\t\t\t\t\t\twidth: this.element[ 0 ].offsetWidth,\n\t\t\t\t\t\theight: this.element[ 0 ].offsetHeight\n\t\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tthis._addToManager( o.scope );\n\n\t\to.addClasses && this.element.addClass( \"ui-droppable\" );\n\n\t},\n\n\t_addToManager: function( scope ) {\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];\n\t\t$.ui.ddmanager.droppables[ scope ].push( this );\n\t},\n\n\t_splice: function( drop ) {\n\t\tvar i = 0;\n\t\tfor ( ; i < drop.length; i++ ) {\n\t\t\tif ( drop[ i ] === this ) {\n\t\t\t\tdrop.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\tthis._splice( drop );\n\n\t\tthis.element.removeClass( \"ui-droppable ui-droppable-disabled\" );\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\tif ( key === \"accept\" ) {\n\t\t\tthis.accept = $.isFunction( value ) ? value : function( d ) {\n\t\t\t\treturn d.is( value );\n\t\t\t};\n\t\t} else if ( key === \"scope\" ) {\n\t\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\t\tthis._splice( drop );\n\t\t\tthis._addToManager( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_activate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif ( this.options.activeClass ) {\n\t\t\tthis.element.addClass( this.options.activeClass );\n\t\t}\n\t\tif ( draggable ){\n\t\t\tthis._trigger( \"activate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_deactivate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif ( this.options.activeClass ) {\n\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t}\n\t\tif ( draggable ){\n\t\t\tthis._trigger( \"deactivate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_over: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.addClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"over\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_out: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"out\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_drop: function( event, custom ) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current,\n\t\t\tchildrenIntersection = false;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.element.find( \":data(ui-droppable)\" ).not( \".ui-draggable-dragging\" ).each(function() {\n\t\t\tvar inst = $( this ).droppable( \"instance\" );\n\t\t\tif (\n\t\t\t\tinst.options.greedy &&\n\t\t\t\t!inst.options.disabled &&\n\t\t\t\tinst.options.scope === draggable.options.scope &&\n\t\t\t\tinst.accept.call( inst.element[ 0 ], ( draggable.currentItem || draggable.element ) ) &&\n\t\t\t\t$.ui.intersect( draggable, $.extend( inst, { offset: inst.element.offset() } ), inst.options.tolerance, event )\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif ( childrenIntersection ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t\t}\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"drop\", event, this.ui( draggable ) );\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function( c ) {\n\t\treturn {\n\t\t\tdraggable: ( c.currentItem || c.element ),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = (function() {\n\tfunction isOverAxis( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t}\n\n\treturn function( draggable, droppable, toleranceMode, event ) {\n\n\t\tif ( !droppable.offset ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar x1 = ( draggable.positionAbs || draggable.position.absolute ).left + draggable.margins.left,\n\t\t\ty1 = ( draggable.positionAbs || draggable.position.absolute ).top + draggable.margins.top,\n\t\t\tx2 = x1 + draggable.helperProportions.width,\n\t\t\ty2 = y1 + draggable.helperProportions.height,\n\t\t\tl = droppable.offset.left,\n\t\t\tt = droppable.offset.top,\n\t\t\tr = l + droppable.proportions().width,\n\t\t\tb = t + droppable.proportions().height;\n\n\t\tswitch ( toleranceMode ) {\n\t\tcase \"fit\":\n\t\t\treturn ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );\n\t\tcase \"intersect\":\n\t\t\treturn ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half\n\t\tcase \"pointer\":\n\t\t\treturn isOverAxis( event.pageY, t, droppable.proportions().height ) && isOverAxis( event.pageX, l, droppable.proportions().width );\n\t\tcase \"touch\":\n\t\t\treturn (\n\t\t\t\t( y1 >= t && y1 <= b ) || // Top edge touching\n\t\t\t\t( y2 >= t && y2 <= b ) || // Bottom edge touching\n\t\t\t\t( y1 < t && y2 > b ) // Surrounded vertically\n\t\t\t) && (\n\t\t\t\t( x1 >= l && x1 <= r ) || // Left edge touching\n\t\t\t\t( x2 >= l && x2 <= r ) || // Right edge touching\n\t\t\t\t( x1 < l && x2 > r ) // Surrounded horizontally\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t};\n})();\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { \"default\": [] },\n\tprepareOffsets: function( t, event ) {\n\n\t\tvar i, j,\n\t\t\tm = $.ui.ddmanager.droppables[ t.options.scope ] || [],\n\t\t\ttype = event ? event.type : null, // workaround for #2317\n\t\t\tlist = ( t.currentItem || t.element ).find( \":data(ui-droppable)\" ).addBack();\n\n\t\tdroppablesLoop: for ( i = 0; i < m.length; i++ ) {\n\n\t\t\t// No disabled and non-accepted\n\t\t\tif ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], ( t.currentItem || t.element ) ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Filter out elements in the current dragged item\n\t\t\tfor ( j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === m[ i ].element[ 0 ] ) {\n\t\t\t\t\tm[ i ].proportions().height = 0;\n\t\t\t\t\tcontinue droppablesLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm[ i ].visible = m[ i ].element.css( \"display\" ) !== \"none\";\n\t\t\tif ( !m[ i ].visible ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Activate the droppable if used directly from draggables\n\t\t\tif ( type === \"mousedown\" ) {\n\t\t\t\tm[ i ]._activate.call( m[ i ], event );\n\t\t\t}\n\n\t\t\tm[ i ].offset = m[ i ].element.offset();\n\t\t\tm[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight });\n\n\t\t}\n\n\t},\n\tdrop: function( draggable, event ) {\n\n\t\tvar dropped = false;\n\t\t// Create a copy of the droppables in case the list changes during the drop (#9116)\n\t\t$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {\n\n\t\t\tif ( !this.options ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.options.disabled && this.visible && $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {\n\t\t\t\tdropped = this._drop.call( this, event ) || dropped;\n\t\t\t}\n\n\t\t\tif ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\t\tthis.isout = true;\n\t\t\t\tthis.isover = false;\n\t\t\t\tthis._deactivate.call( this, event );\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t// Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t\t}\n\t\t});\n\t},\n\tdrag: function( draggable, event ) {\n\n\t\t// If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif ( draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\n\t\t// Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {\n\n\t\t\tif ( this.options.disabled || this.greedyChild || !this.visible ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar parentInstance, scope, parent,\n\t\t\t\tintersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),\n\t\t\t\tc = !intersects && this.isover ? \"isout\" : ( intersects && !this.isover ? \"isover\" : null );\n\t\t\tif ( !c ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.greedy ) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tscope = this.options.scope;\n\t\t\t\tparent = this.element.parents( \":data(ui-droppable)\" ).filter(function() {\n\t\t\t\t\treturn $( this ).droppable( \"instance\" ).options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif ( parent.length ) {\n\t\t\t\t\tparentInstance = $( parent[ 0 ] ).droppable( \"instance\" );\n\t\t\t\t\tparentInstance.greedyChild = ( c === \"isover\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif ( parentInstance && c === \"isover\" ) {\n\t\t\t\tparentInstance.isover = false;\n\t\t\t\tparentInstance.isout = true;\n\t\t\t\tparentInstance._out.call( parentInstance, event );\n\t\t\t}\n\n\t\t\tthis[ c ] = true;\n\t\t\tthis[c === \"isout\" ? \"isover\" : \"isout\"] = false;\n\t\t\tthis[c === \"isover\" ? \"_over\" : \"_out\"].call( this, event );\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif ( parentInstance && c === \"isout\" ) {\n\t\t\t\tparentInstance.isout = false;\n\t\t\t\tparentInstance.isover = true;\n\t\t\t\tparentInstance._over.call( parentInstance, event );\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t// Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\t}\n};\n\nvar droppable = $.ui.droppable;\n\n\n/*!\n * jQuery UI Effects 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/effects-core/\n */\n\n\nvar dataSpace = \"ui-effects-\",\n\n\t// Create a local jQuery because jQuery Color relies on it and the\n\t// global may not exist with AMD and a custom build (#10199)\n\tjQuery = $;\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.1.2\n * https://github.com/jquery/jquery-color\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Wed Jan 16 08:47:09 2013 -0600\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\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 this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t});\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t// support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = 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\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\taddClass: (function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.addClass ),\n\n\tremoveClass: (function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.removeClass ),\n\n\ttoggleClass: (function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\t\t\t\t\t// without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t})( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.11.2\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor ( var i = 0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch ( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( $.isFunction( option ) ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ];\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the element already has the correct final state, delegate to\n\t\t\t// the core methods so the internal tracking of \"olddisplay\" works.\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\telem[ mode ]();\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t},\n\n\tshow: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.show ),\n\n\thide: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.hide ),\n\n\ttoggle: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.toggle ),\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\nvar effect = $.effects;\n\n\n/*!\n * jQuery UI Effects Blind 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/blind-effect/\n */\n\n\nvar effectBlind = $.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\trvertical = /up|down|vertical/,\n\t\trpositivemotion = /up|left|vertical|horizontal/,\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( !motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Bounce 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/bounce-effect/\n */\n\n\nvar effectBounce = $.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n\n/*!\n * jQuery UI Effects Clip 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/clip-effect/\n */\n\n\nvar effectClip = $.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Drop 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/drop-effect/\n */\n\n\nvar effectDrop = $.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Explode 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/explode-effect/\n */\n\n\nvar effectExplode = $.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor ( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor ( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n\n/*!\n * jQuery UI Effects Fade 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fade-effect/\n */\n\n\nvar effectFade = $.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Fold 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fold-effect/\n */\n\n\nvar effectFold = $.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Highlight 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/highlight-effect/\n */\n\n\nvar effectHighlight = $.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n\n/*!\n * jQuery UI Effects Size 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/size-effect/\n */\n\n\nvar effectSize = $.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function() {\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Scale 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/scale-effect/\n */\n\n\nvar effectScale = $.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [ \"middle\", \"center\" ];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n\n/*!\n * jQuery UI Effects Puff 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/puff-effect/\n */\n\n\nvar effectPuff = $.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n\n/*!\n * jQuery UI Effects Pulsate 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/pulsate-effect/\n */\n\n\nvar effectPulsate = $.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n\n/*!\n * jQuery UI Effects Shake 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/shake-effect/\n */\n\n\nvar effectShake = $.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round( o.duration / anims ),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n\n/*!\n * jQuery UI Effects Slide 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slide-effect/\n */\n\n\nvar effectSlide = $.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Transfer 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/transfer-effect/\n */\n\n\nvar effectTransfer = $.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop,\n\t\t\tleft: endPosition.left - fixLeft,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n\n/*!\n * jQuery UI Progressbar 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/progressbar/\n */\n\n\nvar progressbar = $.widget( \"ui.progressbar\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tmax: 100,\n\t\tvalue: 0,\n\n\t\tchange: null,\n\t\tcomplete: null\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\t// Constrain initial value\n\t\tthis.oldValue = this.options.value = this._constrainedValue();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\t// Only set static values, aria-valuenow and aria-valuemax are\n\t\t\t\t// set inside _refreshValue()\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this.options.value;\n\t\t}\n\n\t\tthis.options.value = this._constrainedValue( newValue );\n\t\tthis._refreshValue();\n\t},\n\n\t_constrainedValue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\tnewValue = this.options.value;\n\t\t}\n\n\t\tthis.indeterminate = newValue === false;\n\n\t\t// sanitize value\n\t\tif ( typeof newValue !== \"number\" ) {\n\t\t\tnewValue = 0;\n\t\t}\n\n\t\treturn this.indeterminate ? false :\n\t\t\tMath.min( this.options.max, Math.max( this.min, newValue ) );\n\t},\n\n\t_setOptions: function( options ) {\n\t\t// Ensure \"value\" option is set after other values (like max)\n\t\tvar value = options.value;\n\t\tdelete options.value;\n\n\t\tthis._super( options );\n\n\t\tthis.options.value = this._constrainedValue( value );\n\t\tthis._refreshValue();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"max\" ) {\n\t\t\t// Don't allow a max less than min\n\t\t\tvalue = Math.max( this.min, value );\n\t\t}\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_percentage: function() {\n\t\treturn this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.options.value,\n\t\t\tpercentage = this._percentage();\n\n\t\tthis.valueDiv\n\t\t\t.toggle( this.indeterminate || value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\n\t\tthis.element.toggleClass( \"ui-progressbar-indeterminate\", this.indeterminate );\n\n\t\tif ( this.indeterminate ) {\n\t\t\tthis.element.removeAttr( \"aria-valuenow\" );\n\t\t\tif ( !this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv = $( \"<div class='ui-progressbar-overlay'></div>\" ).appendTo( this.valueDiv );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.attr({\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": value\n\t\t\t});\n\t\t\tif ( this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv.remove();\n\t\t\t\tthis.overlayDiv = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t\tif ( value === this.options.max ) {\n\t\t\tthis._trigger( \"complete\" );\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Selectable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/selectable/\n */\n\n\nvar selectable = $.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: \"*\",\n\t\ttolerance: \"touch\",\n\n\t\t// callbacks\n\t\tselected: null,\n\t\tselecting: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tunselected: null,\n\t\tunselecting: null\n\t},\n\t_create: function() {\n\t\tvar selectees,\n\t\t\tthat = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this),\n\t\t\t\t\tpos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass(\"ui-selected\"),\n\t\t\t\t\tselecting: $this.hasClass(\"ui-selecting\"),\n\t\t\t\t\tunselecting: $this.hasClass(\"ui-unselecting\")\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.opos = [ event.pageX, event.pageY ];\n\n\t\tif (this.options.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.pageX,\n\t\t\t\"top\": event.pageY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter(\".ui-selected\").each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().addBack().each(function() {\n\t\t\tvar doSelect,\n\t\t\t\tselectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tdoSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass(\"ui-selected\");\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tmp,\n\t\t\tthat = this,\n\t\t\toptions = this.options,\n\t\t\tx1 = this.opos[0],\n\t\t\ty1 = this.opos[1],\n\t\t\tx2 = event.pageX,\n\t\t\ty2 = event.pageY;\n\n\t\tif (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 });\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\"),\n\t\t\t\thit = false;\n\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element === that.element[0]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.tolerance === \"touch\") {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance === \"fit\") {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass(\"ui-unselecting\");\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass(\"ui-selecting\");\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selecting\");\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass(\"ui-selected\");\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selecting\");\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\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\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\t$(\".ui-unselecting\", this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass(\"ui-unselecting\");\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$(\".ui-selecting\", this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass(\"ui-selecting\").addClass(\"ui-selected\");\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n\n/*!\n * jQuery UI Selectmenu 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/selectmenu\n */\n\n\nvar selectmenu = $.widget( \"ui.selectmenu\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<select>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tdisabled: null,\n\t\ticons: {\n\t\t\tbutton: \"ui-icon-triangle-1-s\"\n\t\t},\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\twidth: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tvar selectmenuId = this.element.uniqueId().attr( \"id\" );\n\t\tthis.ids = {\n\t\t\telement: selectmenuId,\n\t\t\tbutton: selectmenuId + \"-button\",\n\t\t\tmenu: selectmenuId + \"-menu\"\n\t\t};\n\n\t\tthis._drawButton();\n\t\tthis._drawMenu();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_drawButton: function() {\n\t\tvar that = this,\n\t\t\ttabindex = this.element.attr( \"tabindex\" );\n\n\t\t// Associate existing label with the new button\n\t\tthis.label = $( \"label[for='\" + this.ids.element + \"']\" ).attr( \"for\", this.ids.button );\n\t\tthis._on( this.label, {\n\t\t\tclick: function( event ) {\n\t\t\t\tthis.button.focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t// Hide original select element\n\t\tthis.element.hide();\n\n\t\t// Create button\n\t\tthis.button = $( \"<span>\", {\n\t\t\t\"class\": \"ui-selectmenu-button ui-widget ui-state-default ui-corner-all\",\n\t\t\ttabindex: tabindex || this.options.disabled ? -1 : 0,\n\t\t\tid: this.ids.button,\n\t\t\trole: \"combobox\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-autocomplete\": \"list\",\n\t\t\t\"aria-owns\": this.ids.menu,\n\t\t\t\"aria-haspopup\": \"true\"\n\t\t})\n\t\t\t.insertAfter( this.element );\n\n\t\t$( \"<span>\", {\n\t\t\t\"class\": \"ui-icon \" + this.options.icons.button\n\t\t})\n\t\t\t.prependTo( this.button );\n\n\t\tthis.buttonText = $( \"<span>\", {\n\t\t\t\"class\": \"ui-selectmenu-text\"\n\t\t})\n\t\t\t.appendTo( this.button );\n\n\t\tthis._setText( this.buttonText, this.element.find( \"option:selected\" ).text() );\n\t\tthis._resizeButton();\n\n\t\tthis._on( this.button, this._buttonEvents );\n\t\tthis.button.one( \"focusin\", function() {\n\n\t\t\t// Delay rendering the menu items until the button receives focus.\n\t\t\t// The menu may have already been rendered via a programmatic open.\n\t\t\tif ( !that.menuItems ) {\n\t\t\t\tthat._refreshMenu();\n\t\t\t}\n\t\t});\n\t\tthis._hoverable( this.button );\n\t\tthis._focusable( this.button );\n\t},\n\n\t_drawMenu: function() {\n\t\tvar that = this;\n\n\t\t// Create menu\n\t\tthis.menu = $( \"<ul>\", {\n\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\"aria-labelledby\": this.ids.button,\n\t\t\tid: this.ids.menu\n\t\t});\n\n\t\t// Wrap menu\n\t\tthis.menuWrap = $( \"<div>\", {\n\t\t\t\"class\": \"ui-selectmenu-menu ui-front\"\n\t\t})\n\t\t\t.append( this.menu )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\t// Initialize menu widget\n\t\tthis.menuInstance = this.menu\n\t\t\t.menu({\n\t\t\t\trole: \"listbox\",\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t// support: IE8\n\t\t\t\t\t// If the item was selected via a click, the text selection\n\t\t\t\t\t// will be destroyed in IE\n\t\t\t\t\tthat._setSelection();\n\n\t\t\t\t\tthat._select( ui.item.data( \"ui-selectmenu-item\" ), event );\n\t\t\t\t},\n\t\t\t\tfocus: function( event, ui ) {\n\t\t\t\t\tvar item = ui.item.data( \"ui-selectmenu-item\" );\n\n\t\t\t\t\t// Prevent inital focus from firing and check if its a newly focused item\n\t\t\t\t\tif ( that.focusIndex != null && item.index !== that.focusIndex ) {\n\t\t\t\t\t\tthat._trigger( \"focus\", event, { item: item } );\n\t\t\t\t\t\tif ( !that.isOpen ) {\n\t\t\t\t\t\t\tthat._select( item, event );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthat.focusIndex = item.index;\n\n\t\t\t\t\tthat.button.attr( \"aria-activedescendant\",\n\t\t\t\t\t\tthat.menuItems.eq( item.index ).attr( \"id\" ) );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.menu( \"instance\" );\n\n\t\t// Adjust menu styles to dropdown\n\t\tthis.menu\n\t\t\t.addClass( \"ui-corner-bottom\" )\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// Don't close the menu on mouseleave\n\t\tthis.menuInstance._off( this.menu, \"mouseleave\" );\n\n\t\t// Cancel the menu's collapseAll on document click\n\t\tthis.menuInstance._closeOnDocumentClick = function() {\n\t\t\treturn false;\n\t\t};\n\n\t\t// Selects often contain empty items, but never contain dividers\n\t\tthis.menuInstance._isDivider = function() {\n\t\t\treturn false;\n\t\t};\n\t},\n\n\trefresh: function() {\n\t\tthis._refreshMenu();\n\t\tthis._setText( this.buttonText, this._getSelectedItem().text() );\n\t\tif ( !this.options.width ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\t},\n\n\t_refreshMenu: function() {\n\t\tthis.menu.empty();\n\n\t\tvar item,\n\t\t\toptions = this.element.find( \"option\" );\n\n\t\tif ( !options.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._parseOptions( options );\n\t\tthis._renderMenu( this.menu, this.items );\n\n\t\tthis.menuInstance.refresh();\n\t\tthis.menuItems = this.menu.find( \"li\" ).not( \".ui-selectmenu-optgroup\" );\n\n\t\titem = this._getSelectedItem();\n\n\t\t// Update the menu to have the correct item focused\n\t\tthis.menuInstance.focus( null, item );\n\t\tthis._setAria( item.data( \"ui-selectmenu-item\" ) );\n\n\t\t// Set disabled state\n\t\tthis._setOption( \"disabled\", this.element.prop( \"disabled\" ) );\n\t},\n\n\topen: function( event ) {\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If this is the first time the menu is being opened, render the items\n\t\tif ( !this.menuItems ) {\n\t\t\tthis._refreshMenu();\n\t\t} else {\n\n\t\t\t// Menu clears focus on close, reset focus to selected item\n\t\t\tthis.menu.find( \".ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\tthis.menuInstance.focus( null, this._getSelectedItem() );\n\t\t}\n\n\t\tthis.isOpen = true;\n\t\tthis._toggleAttr();\n\t\tthis._resizeMenu();\n\t\tthis._position();\n\n\t\tthis._on( this.document, this._documentClick );\n\n\t\tthis._trigger( \"open\", event );\n\t},\n\n\t_position: function() {\n\t\tthis.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );\n\t},\n\n\tclose: function( event ) {\n\t\tif ( !this.isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isOpen = false;\n\t\tthis._toggleAttr();\n\n\t\tthis.range = null;\n\t\tthis._off( this.document );\n\n\t\tthis._trigger( \"close\", event );\n\t},\n\n\twidget: function() {\n\t\treturn this.button;\n\t},\n\n\tmenuWidget: function() {\n\t\treturn this.menu;\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this,\n\t\t\tcurrentOptgroup = \"\";\n\n\t\t$.each( items, function( index, item ) {\n\t\t\tif ( item.optgroup !== currentOptgroup ) {\n\t\t\t\t$( \"<li>\", {\n\t\t\t\t\t\"class\": \"ui-selectmenu-optgroup ui-menu-divider\" +\n\t\t\t\t\t\t( item.element.parent( \"optgroup\" ).prop( \"disabled\" ) ?\n\t\t\t\t\t\t\t\" ui-state-disabled\" :\n\t\t\t\t\t\t\t\"\" ),\n\t\t\t\t\ttext: item.optgroup\n\t\t\t\t})\n\t\t\t\t\t.appendTo( ul );\n\n\t\t\t\tcurrentOptgroup = item.optgroup;\n\t\t\t}\n\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-selectmenu-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\tvar li = $( \"<li>\" );\n\n\t\tif ( item.disabled ) {\n\t\t\tli.addClass( \"ui-state-disabled\" );\n\t\t}\n\t\tthis._setText( li, item.label );\n\n\t\treturn li.appendTo( ul );\n\t},\n\n\t_setText: function( element, value ) {\n\t\tif ( value ) {\n\t\t\telement.text( value );\n\t\t} else {\n\t\t\telement.html( \" \" );\n\t\t}\n\t},\n\n\t_move: function( direction, event ) {\n\t\tvar item, next,\n\t\t\tfilter = \".ui-menu-item\";\n\n\t\tif ( this.isOpen ) {\n\t\t\titem = this.menuItems.eq( this.focusIndex );\n\t\t} else {\n\t\t\titem = this.menuItems.eq( this.element[ 0 ].selectedIndex );\n\t\t\tfilter += \":not(.ui-state-disabled)\";\n\t\t}\n\n\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\tnext = item[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( filter ).eq( -1 );\n\t\t} else {\n\t\t\tnext = item[ direction + \"All\" ]( filter ).eq( 0 );\n\t\t}\n\n\t\tif ( next.length ) {\n\t\t\tthis.menuInstance.focus( event, next );\n\t\t}\n\t},\n\n\t_getSelectedItem: function() {\n\t\treturn this.menuItems.eq( this.element[ 0 ].selectedIndex );\n\t},\n\n\t_toggle: function( event ) {\n\t\tthis[ this.isOpen ? \"close\" : \"open\" ]( event );\n\t},\n\n\t_setSelection: function() {\n\t\tvar selection;\n\n\t\tif ( !this.range ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( window.getSelection ) {\n\t\t\tselection = window.getSelection();\n\t\t\tselection.removeAllRanges();\n\t\t\tselection.addRange( this.range );\n\n\t\t// support: IE8\n\t\t} else {\n\t\t\tthis.range.select();\n\t\t}\n\n\t\t// support: IE\n\t\t// Setting the text selection kills the button focus in IE, but\n\t\t// restoring the focus doesn't kill the selection.\n\t\tthis.button.focus();\n\t},\n\n\t_documentClick: {\n\t\tmousedown: function( event ) {\n\t\t\tif ( !this.isOpen ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !$( event.target ).closest( \".ui-selectmenu-menu, #\" + this.ids.button ).length ) {\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t}\n\t},\n\n\t_buttonEvents: {\n\n\t\t// Prevent text selection from being reset when interacting with the selectmenu (#10144)\n\t\tmousedown: function() {\n\t\t\tvar selection;\n\n\t\t\tif ( window.getSelection ) {\n\t\t\t\tselection = window.getSelection();\n\t\t\t\tif ( selection.rangeCount ) {\n\t\t\t\t\tthis.range = selection.getRangeAt( 0 );\n\t\t\t\t}\n\n\t\t\t// support: IE8\n\t\t\t} else {\n\t\t\t\tthis.range = document.selection.createRange();\n\t\t\t}\n\t\t},\n\n\t\tclick: function( event ) {\n\t\t\tthis._setSelection();\n\t\t\tthis._toggle( event );\n\t\t},\n\n\t\tkeydown: function( event ) {\n\t\t\tvar preventDefault = true;\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.TAB:\n\t\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\tpreventDefault = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._move( \"next\", event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tthis._move( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"first\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"last\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.menu.trigger( event );\n\t\t\t\t\tpreventDefault = false;\n\t\t\t}\n\n\t\t\tif ( preventDefault ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t},\n\n\t_selectFocusedItem: function( event ) {\n\t\tvar item = this.menuItems.eq( this.focusIndex );\n\t\tif ( !item.hasClass( \"ui-state-disabled\" ) ) {\n\t\t\tthis._select( item.data( \"ui-selectmenu-item\" ), event );\n\t\t}\n\t},\n\n\t_select: function( item, event ) {\n\t\tvar oldIndex = this.element[ 0 ].selectedIndex;\n\n\t\t// Change native select element\n\t\tthis.element[ 0 ].selectedIndex = item.index;\n\t\tthis._setText( this.buttonText, item.label );\n\t\tthis._setAria( item );\n\t\tthis._trigger( \"select\", event, { item: item } );\n\n\t\tif ( item.index !== oldIndex ) {\n\t\t\tthis._trigger( \"change\", event, { item: item } );\n\t\t}\n\n\t\tthis.close( event );\n\t},\n\n\t_setAria: function( item ) {\n\t\tvar id = this.menuItems.eq( item.index ).attr( \"id\" );\n\n\t\tthis.button.attr({\n\t\t\t\"aria-labelledby\": id,\n\t\t\t\"aria-activedescendant\": id\n\t\t});\n\t\tthis.menu.attr( \"aria-activedescendant\", id );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.button.find( \"span.ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.button )\n\t\t\t\t.addClass( value.button );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menuWrap.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.menuInstance.option( \"disabled\", value );\n\t\t\tthis.button\n\t\t\t\t.toggleClass( \"ui-state-disabled\", value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\n\t\t\tthis.element.prop( \"disabled\", value );\n\t\t\tif ( value ) {\n\t\t\t\tthis.button.attr( \"tabindex\", -1 );\n\t\t\t\tthis.close();\n\t\t\t} else {\n\t\t\t\tthis.button.attr( \"tabindex\", 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"width\" ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_toggleAttr: function() {\n\t\tthis.button\n\t\t\t.toggleClass( \"ui-corner-top\", this.isOpen )\n\t\t\t.toggleClass( \"ui-corner-all\", !this.isOpen )\n\t\t\t.attr( \"aria-expanded\", this.isOpen );\n\t\tthis.menuWrap.toggleClass( \"ui-selectmenu-open\", this.isOpen );\n\t\tthis.menu.attr( \"aria-hidden\", !this.isOpen );\n\t},\n\n\t_resizeButton: function() {\n\t\tvar width = this.options.width;\n\n\t\tif ( !width ) {\n\t\t\twidth = this.element.show().outerWidth();\n\t\t\tthis.element.hide();\n\t\t}\n\n\t\tthis.button.outerWidth( width );\n\t},\n\n\t_resizeMenu: function() {\n\t\tthis.menu.outerWidth( Math.max(\n\t\t\tthis.button.outerWidth(),\n\n\t\t\t// support: IE10\n\t\t\t// IE10 wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping\n\t\t\tthis.menu.width( \"\" ).outerWidth() + 1\n\t\t) );\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn { disabled: this.element.prop( \"disabled\" ) };\n\t},\n\n\t_parseOptions: function( options ) {\n\t\tvar data = [];\n\t\toptions.each(function( index, item ) {\n\t\t\tvar option = $( item ),\n\t\t\t\toptgroup = option.parent( \"optgroup\" );\n\t\t\tdata.push({\n\t\t\t\telement: option,\n\t\t\t\tindex: index,\n\t\t\t\tvalue: option.attr( \"value\" ),\n\t\t\t\tlabel: option.text(),\n\t\t\t\toptgroup: optgroup.attr( \"label\" ) || \"\",\n\t\t\t\tdisabled: optgroup.prop( \"disabled\" ) || option.prop( \"disabled\" )\n\t\t\t});\n\t\t});\n\t\tthis.items = data;\n\t},\n\n\t_destroy: function() {\n\t\tthis.menuWrap.remove();\n\t\tthis.button.remove();\n\t\tthis.element.show();\n\t\tthis.element.removeUniqueId();\n\t\tthis.label.attr( \"for\", this.ids.element );\n\t}\n});\n\n\n/*!\n * jQuery UI Slider 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slider/\n */\n\n\nvar slider = $.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tslide: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t// number of pages in a slider\n\t// (how many times can you page up/down to go through the whole range)\n\tnumPages: 5,\n\n\t_create: function() {\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\t\tthis._calculateNewMax();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\");\n\n\t\tthis._refresh();\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_refresh: function() {\n\t\tthis._createRange();\n\t\tthis._createHandles();\n\t\tthis._setupEvents();\n\t\tthis._refreshValue();\n\t},\n\n\t_createHandles: function() {\n\t\tvar i, handleCount,\n\t\t\toptions = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>\",\n\t\t\thandles = [];\n\n\t\thandleCount = ( options.values && options.values.length ) || 1;\n\n\t\tif ( existingHandles.length > handleCount ) {\n\t\t\texistingHandles.slice( handleCount ).remove();\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\n\t\t}\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\t},\n\n\t_createRange: function() {\n\t\tvar options = this.options,\n\t\t\tclasses = \"\";\n\n\t\tif ( options.range ) {\n\t\t\tif ( options.range === true ) {\n\t\t\t\tif ( !options.values ) {\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\n\t\t\t\t\toptions.values = [ options.values[0], options.values[0] ];\n\t\t\t\t} else if ( $.isArray( options.values ) ) {\n\t\t\t\t\toptions.values = options.values.slice(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this.range || !this.range.length ) {\n\t\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t\t.appendTo( this.element );\n\n\t\t\t\tclasses = \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header ui-corner-all\";\n\t\t\t} else {\n\t\t\t\tthis.range.removeClass( \"ui-slider-range-min ui-slider-range-max\" )\n\t\t\t\t\t// Handle range switching from true to min/max\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"left\": \"\",\n\t\t\t\t\t\t\"bottom\": \"\"\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.range.addClass( classes +\n\t\t\t\t( ( options.range === \"min\" || options.range === \"max\" ) ? \" ui-slider-range-\" + options.range : \"\" ) );\n\t\t} else {\n\t\t\tif ( this.range ) {\n\t\t\t\tthis.range.remove();\n\t\t\t}\n\t\t\tthis.range = null;\n\t\t}\n\t},\n\n\t_setupEvents: function() {\n\t\tthis._off( this.handles );\n\t\tthis._on( this.handles, this._handleEvents );\n\t\tthis._hoverable( this.handles );\n\t\tthis._focusable( this.handles );\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tif ( this.range ) {\n\t\t\tthis.range.remove();\n\t\t}\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif (( distance > thisDistance ) ||\n\t\t\t\t( distance === thisDistance &&\n\t\t\t\t\t(i === that._lastChangedValue || that.values(i) === o.min ))) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\t//store the last changed value index for reference when handles overlap\n\t\t\tthis._lastChangedValue = index;\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( key === \"range\" && this.options.range === true ) {\n\t\t\tif ( value === \"min\" ) {\n\t\t\t\tthis.options.value = this._values( 0 );\n\t\t\t\tthis.options.values = null;\n\t\t\t} else if ( value === \"max\" ) {\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\n\t\t\t\tthis.options.values = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\n\t\t\t\t// Reset positioning from previous orientation\n\t\t\t\tthis.handles.css( value === \"horizontal\" ? \"bottom\" : \"left\", \"\" );\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"step\":\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._calculateNewMax();\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"range\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refresh();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else if ( this.options.values && this.options.values.length ) {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i += 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_calculateNewMax: function() {\n\t\tvar remainder = ( this.options.max - this._valueMin() ) % this.options.step;\n\t\tthis.max = this.options.max - remainder;\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleEvents: {\n\t\tkeydown: function( event ) {\n\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstep = this.options.step;\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t} else {\n\t\t\t\tcurVal = newVal = this.value();\n\t\t\t}\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal - ( (this._valueMax() - this._valueMin()) / this.numPages ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._slide( event, index, newVal );\n\t\t},\n\t\tkeyup: function( event ) {\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tif ( this._keySliding ) {\n\t\t\t\tthis._keySliding = false;\n\t\t\t\tthis._stop( event, index );\n\t\t\t\tthis._change( event, index );\n\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Sortable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/sortable/\n */\n\n\nvar sortable = $.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn (/left|right/).test(item.css(\"float\")) || (/inline|table-cell/).test(item.css(\"display\"));\n\t},\n\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === \"x\" || this._isFloating(this.items[0].item) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.element.find( \".ui-sortable-handle\" ).removeClass( \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\t( this.instance.options.handle ?\n\t\t\t\tthis.item.find( this.instance.options.handle ) : this.item )\n\t\t\t\t.addClass( \"ui-sortable-handle\" );\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-sortable ui-sortable-disabled\" )\n\t\t\t.find( \".ui-sortable-handle\" )\n\t\t\t\t.removeClass( \"ui-sortable-handle\" );\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type === \"static\") {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + \"-item\") === that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + \"-item\") === that) {\n\t\t\tcurrentItem = $(event.target);\n\t\t}\n\n\t\tif(!currentItem) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\t$(this.options.handle, currentItem).find(\"*\").addBack().each(function() {\n\t\t\t\tif(this === event.target) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(!validHandle) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] !== this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet = $( \"<style>*{ cursor: \"+o.cursor+\" !important; }</style>\" ).appendTo( body );\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) {\n\t\t\t\tthis._storedOpacity = this.helper.css(\"opacity\");\n\t\t\t}\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) {\n\t\t\t\tthis._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\t}\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== \"HTML\") {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options,\n\t\t\tscrolled = false;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tif(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== \"HTML\") {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\t} else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\t} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t\t}\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\t} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t\t}\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis !== \"y\") {\n\t\t\tthis.helper[0].style.left = this.position.left+\"px\";\n\t\t}\n\t\tif(!this.options.axis || this.options.axis !== \"x\") {\n\t\t\tthis.helper[0].style.top = this.position.top+\"px\";\n\t\t}\n\n\t\t//Rearrange\n\t\tfor (i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[i];\n\t\t\titemElement = item.item[0];\n\t\t\tintersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif (itemElement !== this.currentItem[0] &&\n\t\t\t\tthis.placeholder[intersection === 1 ? \"next\" : \"prev\"]()[0] !== itemElement &&\n\t\t\t\t!$.contains(this.placeholder[0], itemElement) &&\n\t\t\t\t(this.options.type === \"semi-dynamic\" ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance === \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.drag(this, event);\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"sort\", event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour) {\n\t\t\t$.ui.ddmanager.drop(this, event);\n\t\t}\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper === \"original\") {\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) {\n\t\t\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\t}\n\t\t\tif(this.options.helper !== \"original\" && this.helper && this.helper[0].parentNode) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || \"id\") || \"\").match(o.expression || (/(.+)[\\-=_](.+)/));\n\t\t\tif (res) {\n\t\t\t\tstr.push((o.key || res[1]+\"[]\")+\"=\"+(o.key && o.expression ? res[1] : res[2]));\n\t\t\t}\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + \"=\");\n\t\t}\n\n\t\treturn str.join(\"&\");\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || \"id\") || \"\"); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t(this.options.tolerance !== \"pointer\" && this.helperProportions[this.floating ? \"width\" : \"height\"] > item[this.floating ? \"width\" : \"height\"])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) && // Right Half\n\t\t\t\tx2 - (this.helperProportions.width / 2) < r && // Left Half\n\t\t\t\tt < y1 + (this.helperProportions.height / 2) && // Bottom Half\n\t\t\t\ty2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === \"x\") || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === \"y\") || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection === \"right\") || verticalDirection === \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection === \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection === \"right\" && isOverRightHalf) || (horizontalDirection === \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection === \"down\" && isOverBottomHalf) || (verticalDirection === \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tcur = $(connectWith[i]);\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tinst = $.data(cur[j], this.widgetFullName);\n\t\t\t\t\tif(inst && inst !== this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), inst]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), this]);\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor (i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each( addItems );\n\t\t}\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] === item.item[0]) {\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},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tcur = $(connectWith[i]);\n\t\t\t\tfor (j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tinst = $.data(cur[j], this.widgetFullName);\n\t\t\t\t\tif(inst && inst !== this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i = queries.length - 1; i >= 0; i--) {\n\t\t\ttargetData = queries[i][1];\n\t\t\t_queries = queries[i][0];\n\n\t\t\tfor (j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\titem = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + \"-item\", targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tvar i, item, t, p;\n\n\t\tfor (i = this.items.length - 1; i >= 0; i--){\n\t\t\titem = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tp = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width = this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar className,\n\t\t\to = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor === String) {\n\t\t\tclassName = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar nodeName = that.currentItem[0].nodeName.toLowerCase(),\n\t\t\t\t\t\telement = $( \"<\" + nodeName + \">\", that.document[0] )\n\t\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\");\n\n\t\t\t\t\tif ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat.currentItem.children().each(function() {\n\t\t\t\t\t\t\t$( \"<td> </td>\", that.document[0] )\n\t\t\t\t\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t\t\t\t\t.appendTo( element );\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css(\"paddingTop\")||0, 10) - parseInt(that.currentItem.css(\"paddingBottom\")||0, 10)); }\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css(\"paddingLeft\")||0, 10) - parseInt(that.currentItem.css(\"paddingRight\")||0, 10)); }\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// get innermost container that intersects with item\n\t\tfor (i = this.containers.length - 1; i >= 0; i--) {\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0])) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) {\n\t\t\treturn;\n\t\t}\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tif (!this.containers[innermostIndex].containerCache.over) {\n\t\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating(this.currentItem);\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"clientX\" : \"clientY\";\n\n\t\t\tfor (j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif(this.items[j].item[0] === this.currentItem[0]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[j].item.offset()[posProperty];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(this.currentContainer === this.containers[innermostIndex]) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options,\n\t\t\thelper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem);\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif(!helper.parents(\"body\").length) {\n\t\t\t$(o.appendTo !== \"parent\" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\t\t}\n\n\t\tif(helper[0] === this.currentItem[0]) {\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\t\t}\n\n\t\tif(!helper[0].style.width || o.forceHelperSize) {\n\t\t\thelper.width(this.currentItem.width());\n\t\t}\n\t\tif(!helper[0].style.height || o.forceHelperSize) {\n\t\t\thelper.height(this.currentItem.height());\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj === \"string\") {\n\t\t\tobj = obj.split(\" \");\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif (\"left\" in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif (\"right\" in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif (\"top\" in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif (\"bottom\" in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t// the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t// with an ugly IE fix\n\t\tif( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === \"html\" && $.ui.ie)) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition === \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif(o.containment === \"parent\") {\n\t\t\to.containment = this.helper[0].parentNode;\n\t\t}\n\t\tif(o.containment === \"document\" || o.containment === \"window\") {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$(o.containment === \"document\" ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t($(o.containment === \"document\" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tce = $(o.containment)[0];\n\t\t\tco = $(o.containment).offset();\n\t\t\tover = ($(ce).css(\"overflow\") !== \"hidden\");\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n\t\t\tscrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.top * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top * mod -\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left +\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.left * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left * mod\t-\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition === \"relative\" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) {\n\t\t\t\t\tpageX = this.containment[0] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) {\n\t\t\t\t\tpageY = this.containment[1] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) {\n\t\t\t\t\tpageX = this.containment[2] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) {\n\t\t\t\t\tpageY = this.containment[3] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\ttop = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tleft = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.top -\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.top\t-\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.left -\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.left\t-\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === \"down\" ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter === this.counter) {\n\t\t\t\tthis.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) {\n\t\t\tthis.placeholder.before(this.currentItem);\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] === this.currentItem[0]) {\n\t\t\tfor(i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] === \"auto\" || this._storedCSS[i] === \"static\") {\n\t\t\t\t\tthis._storedCSS[i] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) {\n\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\t}\n\t\tif((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {\n\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); }; }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this)); }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor (i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif (!noPropagation) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif(this._storedOpacity) {\n\t\t\tthis.helper.css(\"opacity\", this._storedOpacity);\n\t\t}\n\t\tif(this._storedZIndex) {\n\t\t\tthis.helper.css(\"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex);\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif(!noPropagation) {\n\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif(!noPropagation) {\n\t\t\tfor (i=0; i < delayedTriggers.length; i++) {\n\t\t\t\tdelayedTriggers[i].call(this, event);\n\t\t\t} //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n\n/*!\n * jQuery UI Spinner 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/spinner/\n */\n\n\nfunction spinner_modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\nvar spinner = $.widget( \"ui.spinner\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// Only format if there is a value, prevents the field from being marked\n\t\t// as invalid in Firefox, see #9573.\n\t\tif ( this.value() !== \"\" ) {\n\t\t\t// Format the value, but don't constrain.\n\t\t\tthis._value( this.element.val(), true );\n\t\t}\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._stop();\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>▲</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>▼</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.buttons.first().find( \".ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.up )\n\t\t\t\t.addClass( value.up );\n\t\t\tthis.buttons.last().find( \".ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.down )\n\t\t\t\t.addClass( value.down );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget().toggleClass( \"ui-state-disabled\", !!value );\n\t\t\tthis.element.prop( \"disabled\", !!value );\n\t\t\tthis.buttons.button( value ? \"disable\" : \"enable\" );\n\t\t}\n\t},\n\n\t_setOptions: spinner_modifier(function( options ) {\n\t\tthis._super( options );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\tisValid: function() {\n\t\tvar value = this.value();\n\n\t\t// null is invalid\n\t\tif ( value === null ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// if value gets adjusted, it's invalid\n\t\treturn value === this._adjustValue( value );\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: spinner_modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( (steps || 1) * this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tstepDown: spinner_modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( (steps || 1) * -this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tpageUp: spinner_modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: spinner_modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tspinner_modifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n\n/*!\n * jQuery UI Tabs 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tabs/\n */\n\n\nvar tabs = $.widget( \"ui.tabs\", {\n\tversion: \"1.11.2\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_isLocal: (function() {\n\t\tvar rhash = /#.*$/;\n\n\t\treturn function( anchor ) {\n\t\t\tvar anchorUrl, locationUrl;\n\n\t\t\t// support: IE7\n\t\t\t// IE7 doesn't normalize the href property when set via script (#9317)\n\t\t\tanchor = anchor.cloneNode( false );\n\n\t\t\tanchorUrl = anchor.href.replace( rhash, \"\" );\n\t\t\tlocationUrl = location.href.replace( rhash, \"\" );\n\n\t\t\t// decoding may throw an error if the URL isn't UTF-8 (#9518)\n\t\t\ttry {\n\t\t\t\tanchorUrl = decodeURIComponent( anchorUrl );\n\t\t\t} catch ( error ) {}\n\t\t\ttry {\n\t\t\t\tlocationUrl = decodeURIComponent( locationUrl );\n\t\t\t} catch ( error ) {}\n\n\t\t\treturn anchor.hash.length > 1 && anchorUrl === locationUrl;\n\t\t};\n\t})(),\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible );\n\n\t\tthis._processTabs();\n\t\toptions.active = this._initialActive();\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_initialActive: function() {\n\t\tvar active = this.options.active,\n\t\t\tcollapsible = this.options.collapsible,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !collapsible && active === false && this.anchors.length ) {\n\t\t\tactive = 0;\n\t\t}\n\n\t\treturn active;\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this,\n\t\t\tprevTabs = this.tabs,\n\t\t\tprevAnchors = this.anchors,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" )\n\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \"> li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( that._isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanelId = selector.substring( 1 );\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\t// If the tab doesn't already have aria-controls,\n\t\t\t\t// generate an id by using a throw-away element\n\t\t\t\tpanelId = tab.attr( \"aria-controls\" ) || $( {} ).uniqueId()[ 0 ].id;\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": panelId,\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevTabs ) {\n\t\t\tthis._off( prevTabs.not( this.tabs ) );\n\t\t\tthis._off( prevAnchors.not( this.anchors ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.tablist || this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\t// Always prevent the default action, even when disabled\n\t\tthis._on( true, this.anchors, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tmaxHeight -= this.element.outerHeight() - this.element.height();\n\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr( \"aria-hidden\", \"true\" );\n\t\teventData.oldTab.attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t});\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr( \"aria-hidden\", \"false\" );\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tablist.unbind( this.eventNamespace );\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli\n\t\t\t\t\t.attr( \"aria-controls\", prev )\n\t\t\t\t\t.removeData( \"ui-tabs-aria-controls\" );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( this._isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n\n/*!\n * jQuery UI Tooltip 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tooltip/\n */\n\n\nvar tooltip = $.widget( \"ui.tooltip\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\t// support: IE<9, Opera in jQuery <1.7\n\t\t\t// .text() can't accept undefined, so coerce to a string\n\t\t\tvar title = $( this ).attr( \"title\" ) || \"\";\n\t\t\t// Escape title, since we're going from an attribute to raw HTML\n\t\t\treturn $( \"<a>\" ).text( title ).html();\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_addDescribedBy: function( elem, id ) {\n\t\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\t\tdescribedby.push( id );\n\t\telem\n\t\t\t.data( \"ui-tooltip-id\", id )\n\t\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n\t},\n\n\t_removeDescribedBy: function( elem ) {\n\t\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\t\tindex = $.inArray( id, describedby );\n\n\t\tif ( index !== -1 ) {\n\t\t\tdescribedby.splice( index, 1 );\n\t\t}\n\n\t\telem.removeData( \"ui-tooltip-id\" );\n\t\tdescribedby = $.trim( describedby.join( \" \" ) );\n\t\tif ( describedby ) {\n\t\t\telem.attr( \"aria-describedby\", describedby );\n\t\t} else {\n\t\t\telem.removeAttr( \"aria-describedby\" );\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\n\t\t// Append the aria-live region so tooltips announce correctly\n\t\tthis.liveRegion = $( \"<div>\" )\n\t\t\t.attr({\n\t\t\t\trole: \"log\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\t\tthat._updateContent( tooltipData.element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = tooltipData.element[ 0 ];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).addBack().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.removeAttr( \"title\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).addBack().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltipData, tooltip, events, delayedShow, a11yContent,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltipData = this._find( target );\n\t\tif ( tooltipData ) {\n\t\t\ttooltipData.tooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltipData = this._tooltip( target );\n\t\ttooltip = tooltipData.tooltip;\n\t\tthis._addDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\t// Support: Voiceover on OS X, JAWS on IE <= 9\n\t\t// JAWS announces deletions even when aria-relevant=\"additions\"\n\t\t// Voiceover will sometimes re-read the entire log region's contents from the beginning\n\t\tthis.liveRegion.children().hide();\n\t\tif ( content.clone ) {\n\t\t\ta11yContent = content.clone();\n\t\t\ta11yContent.removeAttr( \"id\" ).find( \"[id]\" ).removeAttr( \"id\" );\n\t\t} else {\n\t\t\ta11yContent = content;\n\t\t}\n\t\t$( \"<div>\" ).html( a11yContent ).appendTo( this.liveRegion );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = this.delayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Only bind remove handler for delegated targets. Non-delegated\n\t\t// tooltips will handle this in destroy.\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tevents.remove = function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t};\n\t\t}\n\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar tooltip,\n\t\t\tthat = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltipData = this._find( target );\n\n\t\t// The tooltip may already be closed\n\t\tif ( !tooltipData ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttooltip = tooltipData.tooltip;\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( tooltipData.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear the interval for delayed tracking tooltips\n\t\tclearInterval( this.delayedShow );\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\t// If the title attribute has changed since open(), don't restore\n\t\tif ( target.data( \"ui-tooltip-title\" ) && !target.attr( \"title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tthis._removeDescribedBy( target );\n\n\t\ttooltipData.hiding = true;\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\ttooltipData.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tif ( !tooltipData.hiding ) {\n\t\t\ttooltipData.closing = false;\n\t\t}\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar tooltip = $( \"<div>\" )\n\t\t\t\t.attr( \"role\", \"tooltip\" )\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) ),\n\t\t\tid = tooltip.uniqueId().attr( \"id\" );\n\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\n\t\ttooltip.appendTo( this.document[0].body );\n\n\t\treturn this.tooltips[ id ] = {\n\t\t\telement: element,\n\t\t\ttooltip: tooltip\n\t\t};\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? this.tooltips[ id ] : null;\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" ),\n\t\t\t\telement = tooltipData.element;\n\t\t\tevent.target = event.currentTarget = element[ 0 ];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\t// If the title attribute has changed since open(), don't restore\n\t\t\t\tif ( !element.attr( \"title\" ) ) {\n\t\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\t}\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t\tthis.liveRegion.remove();\n\t}\n});\n\n\n\n}));","/*! DataTables 1.10.4\n * ©2008-2014 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary DataTables\n * @description Paginate, search and order HTML tables\n * @version 1.10.4\n * @file jquery.dataTables.js\n * @author SpryMedia Ltd (www.sprymedia.co.uk)\n * @contact www.sprymedia.co.uk/contact\n * @copyright Copyright 2008-2014 SpryMedia Ltd.\n *\n * This source file is free software, available under the following license:\n * MIT license - http://datatables.net/license\n *\n * This source file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n *\n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/\n\n(/** @lends <global> */function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// Define as an AMD module if possible\n\t\tdefine( 'datatables', ['jquery'], factory );\n\t}\n else if ( typeof exports === 'object' ) {\n // Node/CommonJS\n factory( require( 'jquery' ) );\n }\n\telse if ( jQuery && !jQuery.fn.dataTable ) {\n\t\t// Define using browser globals otherwise\n\t\t// Prevent multiple instantiations if the script is loaded twice\n\t\tfactory( jQuery );\n\t}\n}\n(/** @lends <global> */function( $ ) {\n\t\"use strict\";\n\n\t/**\n\t * DataTables is a plug-in for the jQuery Javascript library. It is a highly\n\t * flexible tool, based upon the foundations of progressive enhancement,\n\t * which will add advanced interaction controls to any HTML table. For a\n\t * full list of features please refer to\n\t * [DataTables.net](href=\"http://datatables.net).\n\t *\n\t * Note that the `DataTable` object is not a global variable but is aliased\n\t * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may\n\t * be accessed.\n\t *\n\t * @class\n\t * @param {object} [init={}] Configuration object for DataTables. Options\n\t * are defined by {@link DataTable.defaults}\n\t * @requires jQuery 1.7+\n\t *\n\t * @example\n\t * // Basic initialisation\n\t * $(document).ready( function {\n\t * $('#example').dataTable();\n\t * } );\n\t *\n\t * @example\n\t * // Initialisation with configuration options - in this case, disable\n\t * // pagination and sorting.\n\t * $(document).ready( function {\n\t * $('#example').dataTable( {\n\t * \"paginate\": false,\n\t * \"sort\": false\n\t * } );\n\t * } );\n\t */\n\tvar DataTable;\n\n\t\n\t/*\n\t * It is useful to have variables which are scoped locally so only the\n\t * DataTables functions can access them and they don't leak into global space.\n\t * At the same time these functions are often useful over multiple files in the\n\t * core and API, so we list, or at least document, all variables which are used\n\t * by DataTables as private variables here. This also ensures that there is no\n\t * clashing of variable names and that they can easily referenced for reuse.\n\t */\n\t\n\t\n\t// Defined else where\n\t// _selector_run\n\t// _selector_opts\n\t// _selector_first\n\t// _selector_row_indexes\n\t\n\tvar _ext; // DataTable.ext\n\tvar _Api; // DataTable.Api\n\tvar _api_register; // DataTable.Api.register\n\tvar _api_registerPlural; // DataTable.Api.registerPlural\n\t\n\tvar _re_dic = {};\n\tvar _re_new_lines = /[\\r\\n]/g;\n\tvar _re_html = /<.*?>/g;\n\tvar _re_date_start = /^[\\w\\+\\-]/;\n\tvar _re_date_end = /[\\w\\+\\-]$/;\n\t\n\t// Escape regular expression special characters\n\tvar _re_escape_regex = new RegExp( '(\\\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ].join('|\\\\') + ')', 'g' );\n\t\n\t// U+2009 is thin space and U+202F is narrow no-break space, both used in many\n\t// standards as thousands separators\n\tvar _re_formatted_numeric = /[',$£€¥%\\u2009\\u202F]/g;\n\t\n\t\n\tvar _empty = function ( d ) {\n\t\treturn !d || d === true || d === '-' ? true : false;\n\t};\n\t\n\t\n\tvar _intVal = function ( s ) {\n\t\tvar integer = parseInt( s, 10 );\n\t\treturn !isNaN(integer) && isFinite(s) ? integer : null;\n\t};\n\t\n\t// Convert from a formatted number with characters other than `.` as the\n\t// decimal place, to a Javascript number\n\tvar _numToDecimal = function ( num, decimalPoint ) {\n\t\t// Cache created regular expressions for speed as this function is called often\n\t\tif ( ! _re_dic[ decimalPoint ] ) {\n\t\t\t_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );\n\t\t}\n\t\treturn typeof num === 'string' && decimalPoint !== '.' ?\n\t\t\tnum.replace( /\\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :\n\t\t\tnum;\n\t};\n\t\n\t\n\tvar _isNumber = function ( d, decimalPoint, formatted ) {\n\t\tvar strType = typeof d === 'string';\n\t\n\t\tif ( decimalPoint && strType ) {\n\t\t\td = _numToDecimal( d, decimalPoint );\n\t\t}\n\t\n\t\tif ( formatted && strType ) {\n\t\t\td = d.replace( _re_formatted_numeric, '' );\n\t\t}\n\t\n\t\treturn _empty( d ) || (!isNaN( parseFloat(d) ) && isFinite( d ));\n\t};\n\t\n\t\n\t// A string without HTML in it can be considered to be HTML still\n\tvar _isHtml = function ( d ) {\n\t\treturn _empty( d ) || typeof d === 'string';\n\t};\n\t\n\t\n\tvar _htmlNumeric = function ( d, decimalPoint, formatted ) {\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar html = _isHtml( d );\n\t\treturn ! html ?\n\t\t\tnull :\n\t\t\t_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?\n\t\t\t\ttrue :\n\t\t\t\tnull;\n\t};\n\t\n\t\n\tvar _pluck = function ( a, prop, prop2 ) {\n\t\tvar out = [];\n\t\tvar i=0, ien=a.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] && a[i][ prop ] ) {\n\t\t\t\t\tout.push( a[i][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] ) {\n\t\t\t\t\tout.push( a[i][ prop ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t// Basically the same as _pluck, but rather than looping over `a` we use `order`\n\t// as the indexes to pick from `a`\n\tvar _pluck_order = function ( a, order, prop, prop2 )\n\t{\n\t\tvar out = [];\n\t\tvar i=0, ien=order.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[ order[i] ][ prop ] ) {\n\t\t\t\t\tout.push( a[ order[i] ][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tout.push( a[ order[i] ][ prop ] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _range = function ( len, start )\n\t{\n\t\tvar out = [];\n\t\tvar end;\n\t\n\t\tif ( start === undefined ) {\n\t\t\tstart = 0;\n\t\t\tend = len;\n\t\t}\n\t\telse {\n\t\t\tend = start;\n\t\t\tstart = len;\n\t\t}\n\t\n\t\tfor ( var i=start ; i<end ; i++ ) {\n\t\t\tout.push( i );\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _removeEmpty = function ( a )\n\t{\n\t\tvar out = [];\n\t\n\t\tfor ( var i=0, ien=a.length ; i<ien ; i++ ) {\n\t\t\tif ( a[i] ) { // careful - will remove all falsy values!\n\t\t\t\tout.push( a[i] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _stripHtml = function ( d ) {\n\t\treturn d.replace( _re_html, '' );\n\t};\n\t\n\t\n\t/**\n\t * Find the unique elements in a source array.\n\t *\n\t * @param {array} src Source array\n\t * @return {array} Array of unique items\n\t * @ignore\n\t */\n\tvar _unique = function ( src )\n\t{\n\t\t// A faster unique method is to use object keys to identify used values,\n\t\t// but this doesn't work with arrays or objects, which we must also\n\t\t// consider. See jsperf.com/compare-array-unique-versions/4 for more\n\t\t// information.\n\t\tvar\n\t\t\tout = [],\n\t\t\tval,\n\t\t\ti, ien=src.length,\n\t\t\tj, k=0;\n\t\n\t\tagain: for ( i=0 ; i<ien ; i++ ) {\n\t\t\tval = src[i];\n\t\n\t\t\tfor ( j=0 ; j<k ; j++ ) {\n\t\t\t\tif ( out[j] === val ) {\n\t\t\t\t\tcontinue again;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tout.push( val );\n\t\t\tk++;\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t\n\t/**\n\t * Create a mapping object that allows camel case parameters to be looked up\n\t * for their Hungarian counterparts. The mapping is stored in a private\n\t * parameter called `_hungarianMap` which can be accessed on the source object.\n\t * @param {object} o\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnHungarianMap ( o )\n\t{\n\t\tvar\n\t\t\thungarian = 'a aa ai ao as b fn i m o s ',\n\t\t\tmatch,\n\t\t\tnewKey,\n\t\t\tmap = {};\n\t\n\t\t$.each( o, function (key, val) {\n\t\t\tmatch = key.match(/^([^A-Z]+?)([A-Z])/);\n\t\n\t\t\tif ( match && hungarian.indexOf(match[1]+' ') !== -1 )\n\t\t\t{\n\t\t\t\tnewKey = key.replace( match[0], match[2].toLowerCase() );\n\t\t\t\tmap[ newKey ] = key;\n\t\n\t\t\t\tif ( match[1] === 'o' )\n\t\t\t\t{\n\t\t\t\t\t_fnHungarianMap( o[key] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t\n\t\to._hungarianMap = map;\n\t}\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian, based on a Hungarian map\n\t * created by _fnHungarianMap.\n\t * @param {object} src The model object which holds all parameters that can be\n\t * mapped.\n\t * @param {object} user The object to convert from camel case to Hungarian.\n\t * @param {boolean} force When set to `true`, properties which already have a\n\t * Hungarian value in the `user` object will be overwritten. Otherwise they\n\t * won't be.\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCamelToHungarian ( src, user, force )\n\t{\n\t\tif ( ! src._hungarianMap ) {\n\t\t\t_fnHungarianMap( src );\n\t\t}\n\t\n\t\tvar hungarianKey;\n\t\n\t\t$.each( user, function (key, val) {\n\t\t\thungarianKey = src._hungarianMap[ key ];\n\t\n\t\t\tif ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )\n\t\t\t{\n\t\t\t\t// For objects, we need to buzz down into the object to copy parameters\n\t\t\t\tif ( hungarianKey.charAt(0) === 'o' )\n\t\t\t\t{\n\t\t\t\t\t// Copy the camelCase options over to the hungarian\n\t\t\t\t\tif ( ! user[ hungarianKey ] ) {\n\t\t\t\t\t\tuser[ hungarianKey ] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, user[hungarianKey], user[key] );\n\t\n\t\t\t\t\t_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser[hungarianKey] = user[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Language compatibility - when certain options are given, and others aren't, we\n\t * need to duplicate the values over, in order to provide backwards compatibility\n\t * with older language files.\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnLanguageCompat( lang )\n\t{\n\t\tvar defaults = DataTable.defaults.oLanguage;\n\t\tvar zeroRecords = lang.sZeroRecords;\n\t\n\t\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t * sZeroRecords - assuming that is given.\n\t\t */\n\t\tif ( ! lang.sEmptyTable && zeroRecords &&\n\t\t\tdefaults.sEmptyTable === \"No data available in table\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );\n\t\t}\n\t\n\t\t/* Likewise with loading records */\n\t\tif ( ! lang.sLoadingRecords && zeroRecords &&\n\t\t\tdefaults.sLoadingRecords === \"Loading...\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );\n\t\t}\n\t\n\t\t// Old parameter name of the thousands separator mapped onto the new\n\t\tif ( lang.sInfoThousands ) {\n\t\t\tlang.sThousands = lang.sInfoThousands;\n\t\t}\n\t\n\t\tvar decimal = lang.sDecimal;\n\t\tif ( decimal ) {\n\t\t\t_addNumericSort( decimal );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Map one parameter onto another\n\t * @param {object} o Object to map\n\t * @param {*} knew The new parameter name\n\t * @param {*} old The old parameter name\n\t */\n\tvar _fnCompatMap = function ( o, knew, old ) {\n\t\tif ( o[ knew ] !== undefined ) {\n\t\t\to[ old ] = o[ knew ];\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for the main DT options. Note that the new\n\t * options are mapped onto the old parameters, so this is an external interface\n\t * change only.\n\t * @param {object} init Object to map\n\t */\n\tfunction _fnCompatOpts ( init )\n\t{\n\t\t_fnCompatMap( init, 'ordering', 'bSort' );\n\t\t_fnCompatMap( init, 'orderMulti', 'bSortMulti' );\n\t\t_fnCompatMap( init, 'orderClasses', 'bSortClasses' );\n\t\t_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );\n\t\t_fnCompatMap( init, 'order', 'aaSorting' );\n\t\t_fnCompatMap( init, 'orderFixed', 'aaSortingFixed' );\n\t\t_fnCompatMap( init, 'paging', 'bPaginate' );\n\t\t_fnCompatMap( init, 'pagingType', 'sPaginationType' );\n\t\t_fnCompatMap( init, 'pageLength', 'iDisplayLength' );\n\t\t_fnCompatMap( init, 'searching', 'bFilter' );\n\t\n\t\t// Column search objects are in an array, so it needs to be converted\n\t\t// element by element\n\t\tvar searchCols = init.aoSearchCols;\n\t\n\t\tif ( searchCols ) {\n\t\t\tfor ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {\n\t\t\t\tif ( searchCols[i] ) {\n\t\t\t\t\t_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for column options. Note that the new options\n\t * are mapped onto the old parameters, so this is an external interface change\n\t * only.\n\t * @param {object} init Object to map\n\t */\n\tfunction _fnCompatCols ( init )\n\t{\n\t\t_fnCompatMap( init, 'orderable', 'bSortable' );\n\t\t_fnCompatMap( init, 'orderData', 'aDataSort' );\n\t\t_fnCompatMap( init, 'orderSequence', 'asSorting' );\n\t\t_fnCompatMap( init, 'orderDataType', 'sortDataType' );\n\t}\n\t\n\t\n\t/**\n\t * Browser feature detection for capabilities, quirks\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnBrowserDetect( settings )\n\t{\n\t\tvar browser = settings.oBrowser;\n\t\n\t\t// Scrolling feature / quirks detection\n\t\tvar n = $('<div/>')\n\t\t\t.css( {\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\theight: 1,\n\t\t\t\twidth: 1,\n\t\t\t\toverflow: 'hidden'\n\t\t\t} )\n\t\t\t.append(\n\t\t\t\t$('<div/>')\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 1,\n\t\t\t\t\t\tleft: 1,\n\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\toverflow: 'scroll'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$('<div class=\"test\"/>')\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\theight: 10\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.appendTo( 'body' );\n\t\n\t\tvar test = n.find('.test');\n\t\n\t\t// IE6/7 will oversize a width 100% element inside a scrolling element, to\n\t\t// include the width of the scrollbar, while other browsers ensure the inner\n\t\t// element is contained without forcing scrolling\n\t\tbrowser.bScrollOversize = test[0].offsetWidth === 100;\n\t\n\t\t// In rtl text layout, some browsers (most, but not all) will place the\n\t\t// scrollbar on the left, rather than the right.\n\t\tbrowser.bScrollbarLeft = test.offset().left !== 1;\n\t\n\t\tn.remove();\n\t}\n\t\n\t\n\t/**\n\t * Array.prototype reduce[Right] method, used for browsers which don't support\n\t * JS 1.6. Done this way to reduce code size, since we iterate either way\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnReduce ( that, fn, init, start, end, inc )\n\t{\n\t\tvar\n\t\t\ti = start,\n\t\t\tvalue,\n\t\t\tisSet = false;\n\t\n\t\tif ( init !== undefined ) {\n\t\t\tvalue = init;\n\t\t\tisSet = true;\n\t\t}\n\t\n\t\twhile ( i !== end ) {\n\t\t\tif ( ! that.hasOwnProperty(i) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\tvalue = isSet ?\n\t\t\t\tfn( value, that[i], i, that ) :\n\t\t\t\tthat[i];\n\t\n\t\t\tisSet = true;\n\t\t\ti += inc;\n\t\t}\n\t\n\t\treturn value;\n\t}\n\t\n\t/**\n\t * Add a column to the list used for the table with default values\n\t * @param {object} oSettings dataTables settings object\n\t * @param {node} nTh The th element for this column\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddColumn( oSettings, nTh )\n\t{\n\t\t// Add column to aoColumns array\n\t\tvar oDefaults = DataTable.defaults.column;\n\t\tvar iCol = oSettings.aoColumns.length;\n\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\"sTitle\": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '',\n\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\"mData\": oDefaults.mData ? oDefaults.mData : iCol,\n\t\t\tidx: iCol\n\t\t} );\n\t\toSettings.aoColumns.push( oCol );\n\t\n\t\t// Add search object for column specific search. Note that the `searchCols[ iCol ]`\n\t\t// passed into extend can be undefined. This allows the user to give a default\n\t\t// with only some of the parameters defined, and also not give a default\n\t\tvar searchCols = oSettings.aoPreSearchCols;\n\t\tsearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );\n\t\n\t\t// Use the default column options function to initialise classes etc\n\t\t_fnColumnOptions( oSettings, iCol, null );\n\t}\n\t\n\t\n\t/**\n\t * Apply options for a column\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iCol column index to consider\n\t * @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t{\n\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\tvar oClasses = oSettings.oClasses;\n\t\tvar th = $(oCol.nTh);\n\t\n\t\t// Try to get width information from the DOM. We can't get it from CSS\n\t\t// as we'd need to parse the CSS stylesheet. `width` option can override\n\t\tif ( ! oCol.sWidthOrig ) {\n\t\t\t// Width attribute\n\t\t\toCol.sWidthOrig = th.attr('width') || null;\n\t\n\t\t\t// Style attribute\n\t\t\tvar t = (th.attr('style') || '').match(/width:\\s*(\\d+[pxem%]+)/);\n\t\t\tif ( t ) {\n\t\t\t\toCol.sWidthOrig = t[1];\n\t\t\t}\n\t\t}\n\t\n\t\t/* User specified column options */\n\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t{\n\t\t\t// Backwards compatibility\n\t\t\t_fnCompatCols( oOptions );\n\t\n\t\t\t// Map camel case parameters to their Hungarian counterparts\n\t\t\t_fnCamelToHungarian( DataTable.defaults.column, oOptions );\n\t\n\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\tif ( oOptions.mDataProp !== undefined && !oOptions.mData )\n\t\t\t{\n\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t}\n\t\n\t\t\tif ( oOptions.sType )\n\t\t\t{\n\t\t\t\toCol._sManualType = oOptions.sType;\n\t\t\t}\n\t\n\t\t\t// `class` is a reserved word in Javascript, so we need to provide\n\t\t\t// the ability to use a valid name for the camel case input\n\t\t\tif ( oOptions.className && ! oOptions.sClass )\n\t\t\t{\n\t\t\t\toOptions.sClass = oOptions.className;\n\t\t\t}\n\t\n\t\t\t$.extend( oCol, oOptions );\n\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\n\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t * priority if defined\n\t\t\t */\n\t\t\tif ( typeof oOptions.iDataSort === 'number' )\n\t\t\t{\n\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t}\n\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t}\n\t\n\t\t/* Cache the data get and set functions for speed */\n\t\tvar mDataSrc = oCol.mData;\n\t\tvar mData = _fnGetObjectDataFn( mDataSrc );\n\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\n\t\tvar attrTest = function( src ) {\n\t\t\treturn typeof src === 'string' && src.indexOf('@') !== -1;\n\t\t};\n\t\toCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (\n\t\t\tattrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)\n\t\t);\n\t\n\t\toCol.fnGetData = function (rowData, type, meta) {\n\t\t\tvar innerData = mData( rowData, type, undefined, meta );\n\t\n\t\t\treturn mRender && type ?\n\t\t\t\tmRender( innerData, type, rowData, meta ) :\n\t\t\t\tinnerData;\n\t\t};\n\t\toCol.fnSetData = function ( rowData, val, meta ) {\n\t\t\treturn _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );\n\t\t};\n\t\n\t\t// Indicate if DataTables should read DOM data as an object or array\n\t\t// Used in _fnGetRowElements\n\t\tif ( typeof mDataSrc !== 'number' ) {\n\t\t\toSettings._rowReadObject = true;\n\t\t}\n\t\n\t\t/* Feature sorting overrides column specific when off */\n\t\tif ( !oSettings.oFeatures.bSort )\n\t\t{\n\t\t\toCol.bSortable = false;\n\t\t\tth.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called\n\t\t}\n\t\n\t\t/* Check that the class assignment is correct for sorting */\n\t\tvar bAsc = $.inArray('asc', oCol.asSorting) !== -1;\n\t\tvar bDesc = $.inArray('desc', oCol.asSorting) !== -1;\n\t\tif ( !oCol.bSortable || (!bAsc && !bDesc) )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableNone;\n\t\t\toCol.sSortingClassJUI = \"\";\n\t\t}\n\t\telse if ( bAsc && !bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableAsc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;\n\t\t}\n\t\telse if ( !bAsc && bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableDesc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortable;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUI;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Adjust the table column widths for new data. Note: you would probably want to\n\t * do a redraw after calling this function!\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAdjustColumnSizing ( settings )\n\t{\n\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\tif ( settings.oFeatures.bAutoWidth !== false )\n\t\t{\n\t\t\tvar columns = settings.aoColumns;\n\t\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t\tfor ( var i=0 , iLen=columns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tcolumns[i].nTh.style.width = columns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\n\t\tvar scroll = settings.oScroll;\n\t\tif ( scroll.sY !== '' || scroll.sX !== '')\n\t\t{\n\t\t\t_fnScrollDraw( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'column-sizing', [settings] );\n\t}\n\t\n\t\n\t/**\n\t * Covert the index of a visible column to the index in the data array (take account\n\t * of hidden columns)\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iMatch Visible column index to lookup\n\t * @returns {int} i the data index\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\n\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\taiVis[iMatch] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Covert the index of an index in the data array and convert it to the visible\n\t * column index (take account of hidden columns)\n\t * @param {int} iMatch Column index to lookup\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {int} i the data index\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\n\t\treturn iPos !== -1 ? iPos : null;\n\t}\n\t\n\t\n\t/**\n\t * Get the number of visible columns\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {int} i the number of visible columns\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnVisbleColumns( oSettings )\n\t{\n\t\treturn _fnGetColumns( oSettings, 'bVisible' ).length;\n\t}\n\t\n\t\n\t/**\n\t * Get an array of column indexes that match a given property\n\t * @param {object} oSettings dataTables settings object\n\t * @param {string} sParam Parameter in aoColumns to look for - typically\n\t * bVisible or bSearchable\n\t * @returns {array} Array of indexes with matched properties\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetColumns( oSettings, sParam )\n\t{\n\t\tvar a = [];\n\t\n\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\tif ( val[sParam] ) {\n\t\t\t\ta.push( i );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn a;\n\t}\n\t\n\t\n\t/**\n\t * Calculate the 'type' of a column\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnTypes ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar data = settings.aoData;\n\t\tvar types = DataTable.ext.type.detect;\n\t\tvar i, ien, j, jen, k, ken;\n\t\tvar col, cell, detectedType, cache;\n\t\n\t\t// For each column, spin over the \n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcol = columns[i];\n\t\t\tcache = [];\n\t\n\t\t\tif ( ! col.sType && col._sManualType ) {\n\t\t\t\tcol.sType = col._sManualType;\n\t\t\t}\n\t\t\telse if ( ! col.sType ) {\n\t\t\t\tfor ( j=0, jen=types.length ; j<jen ; j++ ) {\n\t\t\t\t\tfor ( k=0, ken=data.length ; k<ken ; k++ ) {\n\t\t\t\t\t\t// Use a cache array so we only need to get the type data\n\t\t\t\t\t\t// from the formatter once (when using multiple detectors)\n\t\t\t\t\t\tif ( cache[k] === undefined ) {\n\t\t\t\t\t\t\tcache[k] = _fnGetCellData( settings, k, i, 'type' );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tdetectedType = types[j]( cache[k], settings );\n\t\n\t\t\t\t\t\t// If null, then this type can't apply to this column, so\n\t\t\t\t\t\t// rather than testing all cells, break out. There is an\n\t\t\t\t\t\t// exception for the last type which is `html`. We need to\n\t\t\t\t\t\t// scan all rows since it is possible to mix string and HTML\n\t\t\t\t\t\t// types\n\t\t\t\t\t\tif ( ! detectedType && j !== types.length-1 ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Only a single match is needed for html type since it is\n\t\t\t\t\t\t// bottom of the pile and very similar to string\n\t\t\t\t\t\tif ( detectedType === 'html' ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Type is valid for all data points in the column - use this\n\t\t\t\t\t// type\n\t\t\t\t\tif ( detectedType ) {\n\t\t\t\t\t\tcol.sType = detectedType;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Fall back - if no type was detected, always use string\n\t\t\t\tif ( ! col.sType ) {\n\t\t\t\t\tcol.sType = 'string';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Take the column definitions and static columns arrays and calculate how\n\t * they relate to column indexes. The callback function will then apply the\n\t * definition found for a column to a suitable configuration object.\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t * @param {array} aoCols The aoColumns array that defines columns individually\n\t * @param {function} fn Callback function - takes two parameters, the calculated\n\t * column index and the definition for that column.\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, def;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\t// Column definitions with aTargets\n\t\tif ( aoColDefs )\n\t\t{\n\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tdef = aoColDefs[i];\n\t\n\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\tvar aTargets = def.targets !== undefined ?\n\t\t\t\t\tdef.targets :\n\t\t\t\t\tdef.aTargets;\n\t\n\t\t\t\tif ( ! $.isArray( aTargets ) )\n\t\t\t\t{\n\t\t\t\t\taTargets = [ aTargets ];\n\t\t\t\t}\n\t\n\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\twhile( columns.length <= aTargets[j] )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\tfn( aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\tfn( columns.length+aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\tfor ( k=0, kLen=columns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t $(columns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfn( k, def );\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\t\t// Statically defined columns array\n\t\tif ( aoCols )\n\t\t{\n\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfn( i, aoCols[i] );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Add a data array to the table, creating DOM node etc. This is the parallel to\n\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t * DOM source.\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} aData data array to be added\n\t * @param {node} [nTr] TR element to add to the table - optional. If not given,\n\t * DataTables will create a row automatically\n\t * @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t * if nTr is.\n\t * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddData ( oSettings, aDataIn, nTr, anTds )\n\t{\n\t\t/* Create the object for storing information about this new row */\n\t\tvar iRow = oSettings.aoData.length;\n\t\tvar oData = $.extend( true, {}, DataTable.models.oRow, {\n\t\t\tsrc: nTr ? 'dom' : 'data'\n\t\t} );\n\t\n\t\toData._aData = aDataIn;\n\t\toSettings.aoData.push( oData );\n\t\n\t\t/* Create the cells */\n\t\tvar nTd, sThisType;\n\t\tvar columns = oSettings.aoColumns;\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\t// When working with a row, the data source object must be populated. In\n\t\t\t// all other cases, the data source object is already populated, so we\n\t\t\t// don't overwrite it, which might break bindings etc\n\t\t\tif ( nTr ) {\n\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );\n\t\t\t}\n\t\t\tcolumns[i].sType = null;\n\t\t}\n\t\n\t\t/* Add to the display array */\n\t\toSettings.aiDisplayMaster.push( iRow );\n\t\n\t\t/* Create the DOM information, or register it if already present */\n\t\tif ( nTr || ! oSettings.oFeatures.bDeferRender )\n\t\t{\n\t\t\t_fnCreateTr( oSettings, iRow, nTr, anTds );\n\t\t}\n\t\n\t\treturn iRow;\n\t}\n\t\n\t\n\t/**\n\t * Add one or more TR elements to the table. Generally we'd expect to\n\t * use this for reading data from a DOM sourced table, but it could be\n\t * used for an TR element. Note that if a TR is given, it is used (i.e.\n\t * it is not cloned).\n\t * @param {object} settings dataTables settings object\n\t * @param {array|node|jQuery} trs The TR element(s) to add to the table\n\t * @returns {array} Array of indexes for the added rows\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddTr( settings, trs )\n\t{\n\t\tvar row;\n\t\n\t\t// Allow an individual node to be passed in\n\t\tif ( ! (trs instanceof $) ) {\n\t\t\ttrs = $(trs);\n\t\t}\n\t\n\t\treturn trs.map( function (i, el) {\n\t\t\trow = _fnGetRowElements( settings, el );\n\t\t\treturn _fnAddData( settings, row.data, el, row.cells );\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Take a TR element and convert it to an index in aoData\n\t * @param {object} oSettings dataTables settings object\n\t * @param {node} n the TR element to find\n\t * @returns {int} index if the node is found, null if not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToDataIndex( oSettings, n )\n\t{\n\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t}\n\t\n\t\n\t/**\n\t * Take a TD element and convert it into a column data index (not the visible index)\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iRow The row number the TD/TH can be found in\n\t * @param {node} n The TD/TH element to find\n\t * @returns {int} index if the node is found, -1 if not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t{\n\t\treturn $.inArray( n, oSettings.aoData[ iRow ].anCells );\n\t}\n\t\n\t\n\t/**\n\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t * @param {object} settings dataTables settings object\n\t * @param {int} rowIdx aoData row id\n\t * @param {int} colIdx Column index\n\t * @param {string} type data get type ('display', 'type' 'filter' 'sort')\n\t * @returns {*} Cell data\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetCellData( settings, rowIdx, colIdx, type )\n\t{\n\t\tvar draw = settings.iDraw;\n\t\tvar col = settings.aoColumns[colIdx];\n\t\tvar rowData = settings.aoData[rowIdx]._aData;\n\t\tvar defaultContent = col.sDefaultContent;\n\t\tvar cellData = col.fnGetData( rowData, type, {\n\t\t\tsettings: settings,\n\t\t\trow: rowIdx,\n\t\t\tcol: colIdx\n\t\t} );\n\t\n\t\tif ( cellData === undefined ) {\n\t\t\tif ( settings.iDrawError != draw && defaultContent === null ) {\n\t\t\t\t_fnLog( settings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t(typeof col.mData=='function' ? '{function}' : \"'\"+col.mData+\"'\")+\n\t\t\t\t\t\" for row \"+rowIdx, 4 );\n\t\t\t\tsettings.iDrawError = draw;\n\t\t\t}\n\t\t\treturn defaultContent;\n\t\t}\n\t\n\t\t/* When the data source is null, we can use default column data */\n\t\tif ( (cellData === rowData || cellData === null) && defaultContent !== null ) {\n\t\t\tcellData = defaultContent;\n\t\t}\n\t\telse if ( typeof cellData === 'function' ) {\n\t\t\t// If the data source is a function, then we run it and use the return,\n\t\t\t// executing in the scope of the data object (for instances)\n\t\t\treturn cellData.call( rowData );\n\t\t}\n\t\n\t\tif ( cellData === null && type == 'display' ) {\n\t\t\treturn '';\n\t\t}\n\t\treturn cellData;\n\t}\n\t\n\t\n\t/**\n\t * Set the value for a specific cell, into the internal data cache\n\t * @param {object} settings dataTables settings object\n\t * @param {int} rowIdx aoData row id\n\t * @param {int} colIdx Column index\n\t * @param {*} val Value to set\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSetCellData( settings, rowIdx, colIdx, val )\n\t{\n\t\tvar col = settings.aoColumns[colIdx];\n\t\tvar rowData = settings.aoData[rowIdx]._aData;\n\t\n\t\tcol.fnSetData( rowData, val, {\n\t\t\tsettings: settings,\n\t\t\trow: rowIdx,\n\t\t\tcol: colIdx\n\t\t} );\n\t}\n\t\n\t\n\t// Private variable that is used to match action syntax in the data property object\n\tvar __reArray = /\\[.*?\\]$/;\n\tvar __reFn = /\\(\\)$/;\n\t\n\t/**\n\t * Split string on periods, taking into account escaped periods\n\t * @param {string} str String to split\n\t * @return {array} Split string\n\t */\n\tfunction _fnSplitObjNotation( str )\n\t{\n\t\treturn $.map( str.match(/(\\\\.|[^\\.])+/g), function ( s ) {\n\t\t\treturn s.replace(/\\\\./g, '.');\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to get data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t * @param {string|int|function} mSource The data source for the object\n\t * @returns {function} Data get function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetObjectDataFn( mSource )\n\t{\n\t\tif ( $.isPlainObject( mSource ) )\n\t\t{\n\t\t\t/* Build an object of get functions, and wrap them in a single call */\n\t\t\tvar o = {};\n\t\t\t$.each( mSource, function (key, val) {\n\t\t\t\tif ( val ) {\n\t\t\t\t\to[key] = _fnGetObjectDataFn( val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\tvar t = o[type] || o._;\n\t\t\t\treturn t !== undefined ?\n\t\t\t\t\tt(data, type, row, meta) :\n\t\t\t\t\tdata;\n\t\t\t};\n\t\t}\n\t\telse if ( mSource === null )\n\t\t{\n\t\t\t/* Give an empty string for rendering / sorting etc */\n\t\t\treturn function (data) { // type, row and meta also passed, but not used\n\t\t\t\treturn data;\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'function' )\n\t\t{\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\treturn mSource( data, type, row, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||\n\t\t\t mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* If there is a . in the source string then the data source is in a\n\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t * be used if defined, rather than throwing an error\n\t\t\t */\n\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\tvar arrayNotation, funcNotation, out, innerSrc;\n\t\n\t\t\t\tif ( src !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tvar a = _fnSplitObjNotation( src );\n\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Check if we are dealing with special notation\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Array notation\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\n\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tout = [];\n\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\n\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\n\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( funcNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Function call\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\t\tdata = data[ a[i] ]();\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn data;\n\t\t\t};\n\t\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn fetchData( data, type, mSource );\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Array or flat object mapping */\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn data[mSource];\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to set data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t * @param {string|int|function} mSource The data source for the object\n\t * @returns {function} Data set function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSetObjectDataFn( mSource )\n\t{\n\t\tif ( $.isPlainObject( mSource ) )\n\t\t{\n\t\t\t/* Unlike get, only the underscore (global) option is used for for\n\t\t\t * setting data since we don't know the type here. This is why an object\n\t\t\t * option is not documented for `mData` (which is read/write), but it is\n\t\t\t * for `mRender` which is read only.\n\t\t\t */\n\t\t\treturn _fnSetObjectDataFn( mSource._ );\n\t\t}\n\t\telse if ( mSource === null )\n\t\t{\n\t\t\t/* Nothing to do when the data source is null */\n\t\t\treturn function () {};\n\t\t}\n\t\telse if ( typeof mSource === 'function' )\n\t\t{\n\t\t\treturn function (data, val, meta) {\n\t\t\t\tmSource( data, 'set', val, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||\n\t\t\t mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* Like the get, we need to get data from a nested object */\n\t\t\tvar setData = function (data, val, src) {\n\t\t\t\tvar a = _fnSplitObjNotation( src ), b;\n\t\t\t\tvar aLast = a[a.length-1];\n\t\t\t\tvar arrayNotation, funcNotation, o, innerSrc;\n\t\n\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t{\n\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\n\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\n\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( funcNotation )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Function call\n\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\tdata = data[ a[i] ]( val );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t}\n\t\n\t\t\t\t// Last item in the input - i.e, the actual set\n\t\t\t\tif ( aLast.match(__reFn ) )\n\t\t\t\t{\n\t\t\t\t\t// Function call\n\t\t\t\t\tdata = data[ aLast.replace(__reFn, '') ]( val );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ aLast.replace(__reArray, '') ] = val;\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\treturn setData( data, val, mSource );\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Array or flat object mapping */\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\tdata[mSource] = val;\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return an array with the full table data\n\t * @param {object} oSettings dataTables settings object\n\t * @returns array {array} aData Master data array\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetDataMaster ( settings )\n\t{\n\t\treturn _pluck( settings.aoData, '_aData' );\n\t}\n\t\n\t\n\t/**\n\t * Nuke the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnClearTable( settings )\n\t{\n\t\tsettings.aoData.length = 0;\n\t\tsettings.aiDisplayMaster.length = 0;\n\t\tsettings.aiDisplay.length = 0;\n\t}\n\t\n\t\n\t /**\n\t * Take an array of integers (index array) and remove a target integer (value - not\n\t * the key!)\n\t * @param {array} a Index array to target\n\t * @param {int} iTarget value to find\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDeleteIndex( a, iTarget, splice )\n\t{\n\t\tvar iTargetIndex = -1;\n\t\n\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( a[i] == iTarget )\n\t\t\t{\n\t\t\t\tiTargetIndex = i;\n\t\t\t}\n\t\t\telse if ( a[i] > iTarget )\n\t\t\t{\n\t\t\t\ta[i]--;\n\t\t\t}\n\t\t}\n\t\n\t\tif ( iTargetIndex != -1 && splice === undefined )\n\t\t{\n\t\t\ta.splice( iTargetIndex, 1 );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Mark cached data as invalid such that a re-read of the data will occur when\n\t * the cached data is next requested. Also update from the data source object.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {int} rowIdx Row index to invalidate\n\t * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom'\n\t * or 'data'\n\t * @param {int} [colIdx] Column index to invalidate. If undefined the whole\n\t * row will be invalidated\n\t * @memberof DataTable#oApi\n\t *\n\t * @todo For the modularisation of v1.11 this will need to become a callback, so\n\t * the sort and filter methods can subscribe to it. That will required\n\t * initialisation options for sorting, which is why it is not already baked in\n\t */\n\tfunction _fnInvalidate( settings, rowIdx, src, colIdx )\n\t{\n\t\tvar row = settings.aoData[ rowIdx ];\n\t\tvar i, ien;\n\t\tvar cellWrite = function ( cell, col ) {\n\t\t\t// This is very frustrating, but in IE if you just write directly\n\t\t\t// to innerHTML, and elements that are overwritten are GC'ed,\n\t\t\t// even if there is a reference to them elsewhere\n\t\t\twhile ( cell.childNodes.length ) {\n\t\t\t\tcell.removeChild( cell.firstChild );\n\t\t\t}\n\t\n\t\t\tcell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' );\n\t\t};\n\t\n\t\t// Are we reading last data from DOM or the data object?\n\t\tif ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {\n\t\t\t// Read the data from the DOM\n\t\t\trow._aData = _fnGetRowElements(\n\t\t\t\t\tsettings, row, colIdx, colIdx === undefined ? undefined : row._aData\n\t\t\t\t)\n\t\t\t\t.data;\n\t\t}\n\t\telse {\n\t\t\t// Reading from data object, update the DOM\n\t\t\tvar cells = row.anCells;\n\t\n\t\t\tif ( cells ) {\n\t\t\t\tif ( colIdx !== undefined ) {\n\t\t\t\t\tcellWrite( cells[colIdx], colIdx );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tcellWrite( cells[i], i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// For both row and cell invalidation, the cached data for sorting and\n\t\t// filtering is nulled out\n\t\trow._aSortData = null;\n\t\trow._aFilterData = null;\n\t\n\t\t// Invalidate the type for a specific column (if given) or all columns since\n\t\t// the data might have changed\n\t\tvar cols = settings.aoColumns;\n\t\tif ( colIdx !== undefined ) {\n\t\t\tcols[ colIdx ].sType = null;\n\t\t}\n\t\telse {\n\t\t\tfor ( i=0, ien=cols.length ; i<ien ; i++ ) {\n\t\t\t\tcols[i].sType = null;\n\t\t\t}\n\t\n\t\t\t// Update DataTables special `DT_*` attributes for the row\n\t\t\t_fnRowAttributes( row );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a data source object from an HTML row, reading the contents of the\n\t * cells that are in the row.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {node|object} TR element from which to read data or existing row\n\t * object from which to re-read the data from the cells\n\t * @param {int} [colIdx] Optional column index\n\t * @param {array|object} [d] Data source object. If `colIdx` is given then this\n\t * parameter should also be given and will be used to write the data into.\n\t * Only the column in question will be written\n\t * @returns {object} Object with two parameters: `data` the data read, in\n\t * document order, and `cells` and array of nodes (they can be useful to the\n\t * caller, so rather than needing a second traversal to get them, just return\n\t * them from here).\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetRowElements( settings, row, colIdx, d )\n\t{\n\t\tvar\n\t\t\ttds = [],\n\t\t\ttd = row.firstChild,\n\t\t\tname, col, o, i=0, contents,\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tobjectRead = settings._rowReadObject;\n\t\n\t\t// Allow the data object to be passed in, or construct\n\t\td = d || objectRead ? {} : [];\n\t\n\t\tvar attr = function ( str, td ) {\n\t\t\tif ( typeof str === 'string' ) {\n\t\t\t\tvar idx = str.indexOf('@');\n\t\n\t\t\t\tif ( idx !== -1 ) {\n\t\t\t\t\tvar attr = str.substring( idx+1 );\n\t\t\t\t\tvar setter = _fnSetObjectDataFn( str );\n\t\t\t\t\tsetter( d, td.getAttribute( attr ) );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\t// Read data from a cell and store into the data object\n\t\tvar cellProcess = function ( cell ) {\n\t\t\tif ( colIdx === undefined || colIdx === i ) {\n\t\t\t\tcol = columns[i];\n\t\t\t\tcontents = $.trim(cell.innerHTML);\n\t\n\t\t\t\tif ( col && col._bAttrSrc ) {\n\t\t\t\t\tvar setter = _fnSetObjectDataFn( col.mData._ );\n\t\t\t\t\tsetter( d, contents );\n\t\n\t\t\t\t\tattr( col.mData.sort, cell );\n\t\t\t\t\tattr( col.mData.type, cell );\n\t\t\t\t\tattr( col.mData.filter, cell );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Depending on the `data` option for the columns the data can\n\t\t\t\t\t// be read to either an object or an array.\n\t\t\t\t\tif ( objectRead ) {\n\t\t\t\t\t\tif ( ! col._setter ) {\n\t\t\t\t\t\t\t// Cache the setter function\n\t\t\t\t\t\t\tcol._setter = _fnSetObjectDataFn( col.mData );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcol._setter( d, contents );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\td[i] = contents;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t};\n\t\n\t\tif ( td ) {\n\t\t\t// `tr` element was passed in\n\t\t\twhile ( td ) {\n\t\t\t\tname = td.nodeName.toUpperCase();\n\t\n\t\t\t\tif ( name == \"TD\" || name == \"TH\" ) {\n\t\t\t\t\tcellProcess( td );\n\t\t\t\t\ttds.push( td );\n\t\t\t\t}\n\t\n\t\t\t\ttd = td.nextSibling;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Existing row object passed in\n\t\t\ttds = row.anCells;\n\t\t\t\n\t\t\tfor ( var j=0, jen=tds.length ; j<jen ; j++ ) {\n\t\t\t\tcellProcess( tds[j] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn {\n\t\t\tdata: d,\n\t\t\tcells: tds\n\t\t};\n\t}\n\t/**\n\t * Create a new TR element (and it's TD children) for a row\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iRow Row to consider\n\t * @param {node} [nTrIn] TR element to add to the table - optional. If not given,\n\t * DataTables will create a row automatically\n\t * @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t * if nTr is.\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCreateTr ( oSettings, iRow, nTrIn, anTds )\n\t{\n\t\tvar\n\t\t\trow = oSettings.aoData[iRow],\n\t\t\trowData = row._aData,\n\t\t\tcells = [],\n\t\t\tnTr, nTd, oCol,\n\t\t\ti, iLen;\n\t\n\t\tif ( row.nTr === null )\n\t\t{\n\t\t\tnTr = nTrIn || document.createElement('tr');\n\t\n\t\t\trow.nTr = nTr;\n\t\t\trow.anCells = cells;\n\t\n\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t * to the aoData array for fast look up\n\t\t\t */\n\t\t\tnTr._DT_RowIndex = iRow;\n\t\n\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t_fnRowAttributes( row );\n\t\n\t\t\t/* Process each column */\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\n\t\t\t\tnTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType );\n\t\t\t\tcells.push( nTd );\n\t\n\t\t\t\t// Need to create the HTML if new, or if a rendering function is defined\n\t\t\t\tif ( !nTrIn || oCol.mRender || oCol.mData !== i )\n\t\t\t\t{\n\t\t\t\t\tnTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t}\n\t\n\t\t\t\t/* Add user defined class */\n\t\t\t\tif ( oCol.sClass )\n\t\t\t\t{\n\t\t\t\t\tnTd.className += ' '+oCol.sClass;\n\t\t\t\t}\n\t\n\t\t\t\t// Visibility - add or remove as required\n\t\t\t\tif ( oCol.bVisible && ! nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t}\n\t\t\t\telse if ( ! oCol.bVisible && nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t}\n\t\n\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t{\n\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] );\n\t\t}\n\t\n\t\t// Remove once webkit bug 131819 and Chromium bug 365619 have been resolved\n\t\t// and deployed\n\t\trow.nTr.setAttribute( 'role', 'row' );\n\t}\n\t\n\t\n\t/**\n\t * Add attributes to a row based on the special `DT_*` parameters in a data\n\t * source object.\n\t * @param {object} DataTables row object for the row to be modified\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnRowAttributes( row )\n\t{\n\t\tvar tr = row.nTr;\n\t\tvar data = row._aData;\n\t\n\t\tif ( tr ) {\n\t\t\tif ( data.DT_RowId ) {\n\t\t\t\ttr.id = data.DT_RowId;\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowClass ) {\n\t\t\t\t// Remove any classes added by DT_RowClass before\n\t\t\t\tvar a = data.DT_RowClass.split(' ');\n\t\t\t\trow.__rowc = row.__rowc ?\n\t\t\t\t\t_unique( row.__rowc.concat( a ) ) :\n\t\t\t\t\ta;\n\t\n\t\t\t\t$(tr)\n\t\t\t\t\t.removeClass( row.__rowc.join(' ') )\n\t\t\t\t\t.addClass( data.DT_RowClass );\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowData ) {\n\t\t\t\t$(tr).data( data.DT_RowData );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Create the HTML header for the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnBuildHead( oSettings )\n\t{\n\t\tvar i, ien, cell, row, column;\n\t\tvar thead = oSettings.nTHead;\n\t\tvar tfoot = oSettings.nTFoot;\n\t\tvar createHeader = $('th, td', thead).length === 0;\n\t\tvar classes = oSettings.oClasses;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\tif ( createHeader ) {\n\t\t\trow = $('<tr/>').appendTo( thead );\n\t\t}\n\t\n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcell = $( column.nTh ).addClass( column.sClass );\n\t\n\t\t\tif ( createHeader ) {\n\t\t\t\tcell.appendTo( row );\n\t\t\t}\n\t\n\t\t\t// 1.11 move into sorting\n\t\t\tif ( oSettings.oFeatures.bSort ) {\n\t\t\t\tcell.addClass( column.sSortingClass );\n\t\n\t\t\t\tif ( column.bSortable !== false ) {\n\t\t\t\t\tcell\n\t\t\t\t\t\t.attr( 'tabindex', oSettings.iTabIndex )\n\t\t\t\t\t\t.attr( 'aria-controls', oSettings.sTableId );\n\t\n\t\t\t\t\t_fnSortAttachListener( oSettings, column.nTh, i );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( column.sTitle != cell.html() ) {\n\t\t\t\tcell.html( column.sTitle );\n\t\t\t}\n\t\n\t\t\t_fnRenderer( oSettings, 'header' )(\n\t\t\t\toSettings, cell, column, classes\n\t\t\t);\n\t\t}\n\t\n\t\tif ( createHeader ) {\n\t\t\t_fnDetectHeader( oSettings.aoHeader, thead );\n\t\t}\n\t\t\n\t\t/* ARIA role for the rows */\n\t \t$(thead).find('>tr').attr('role', 'row');\n\t\n\t\t/* Deal with the footer - add classes if required */\n\t\t$(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );\n\t\t$(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );\n\t\n\t\t// Cache the footer cells. Note that we only take the cells from the first\n\t\t// row in the footer. If there is more than one row the user wants to\n\t\t// interact with, they need to use the table().foot() method. Note also this\n\t\t// allows cells to be used for multiple columns using colspan\n\t\tif ( tfoot !== null ) {\n\t\t\tvar cells = oSettings.aoFooter[0];\n\t\n\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\tcolumn = columns[i];\n\t\t\t\tcolumn.nTf = cells[i].cell;\n\t\n\t\t\t\tif ( column.sClass ) {\n\t\t\t\t\t$(column.nTf).addClass( column.sClass );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the header (or footer) element based on the column visibility states. The\n\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t * traversed over cell at a time in a rows x columns grid fashion, although each\n\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t * already a cell in that position.\n\t * @param {object} oSettings dataTables settings object\n\t * @param array {objects} aoSource Layout array from _fnDetectHeader\n\t * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\tvar aoLocal = [];\n\t\tvar aApplied = [];\n\t\tvar iColumns = oSettings.aoColumns.length;\n\t\tvar iRowspan, iColspan;\n\t\n\t\tif ( ! aoSource )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( bIncludeHidden === undefined )\n\t\t{\n\t\t\tbIncludeHidden = false;\n\t\t}\n\t\n\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\n\t\t\t/* Remove any columns which are currently hidden */\n\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t{\n\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\taApplied.push( [] );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\n\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\tif ( nLocalTr )\n\t\t\t{\n\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tiRowspan = 1;\n\t\t\t\tiColspan = 1;\n\t\n\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t */\n\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\taApplied[i][j] = 1;\n\t\n\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t$(aoLocal[i][j].cell)\n\t\t\t\t\t\t.attr('rowspan', iRowspan)\n\t\t\t\t\t\t.attr('colspan', iColspan);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Insert the required TR nodes into the table for display\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDraw( oSettings )\n\t{\n\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t{\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar i, iLen, n;\n\t\tvar anRows = [];\n\t\tvar iRowCount = 0;\n\t\tvar asStripeClasses = oSettings.asStripeClasses;\n\t\tvar iStripes = asStripeClasses.length;\n\t\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\tvar oLang = oSettings.oLanguage;\n\t\tvar iInitDisplayStart = oSettings.iInitDisplayStart;\n\t\tvar bServerSide = _fnDataSource( oSettings ) == 'ssp';\n\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\n\t\toSettings.bDrawing = true;\n\t\n\t\t/* Check and see if we have an initial draw position from state saving */\n\t\tif ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )\n\t\t{\n\t\t\toSettings._iDisplayStart = bServerSide ?\n\t\t\t\tiInitDisplayStart :\n\t\t\t\tiInitDisplayStart >= oSettings.fnRecordsDisplay() ?\n\t\t\t\t\t0 :\n\t\t\t\t\tiInitDisplayStart;\n\t\n\t\t\toSettings.iInitDisplayStart = -1;\n\t\t}\n\t\n\t\tvar iDisplayStart = oSettings._iDisplayStart;\n\t\tvar iDisplayEnd = oSettings.fnDisplayEnd();\n\t\n\t\t/* Server-side processing draw intercept */\n\t\tif ( oSettings.bDeferLoading )\n\t\t{\n\t\t\toSettings.bDeferLoading = false;\n\t\t\toSettings.iDraw++;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\telse if ( !bServerSide )\n\t\t{\n\t\t\toSettings.iDraw++;\n\t\t}\n\t\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( aiDisplay.length !== 0 )\n\t\t{\n\t\t\tvar iStart = bServerSide ? 0 : iDisplayStart;\n\t\t\tvar iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;\n\t\n\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t{\n\t\t\t\tvar iDataIndex = aiDisplay[j];\n\t\t\t\tvar aoData = oSettings.aoData[ iDataIndex ];\n\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t{\n\t\t\t\t\t_fnCreateTr( oSettings, iDataIndex );\n\t\t\t\t}\n\t\n\t\t\t\tvar nRow = aoData.nTr;\n\t\n\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t{\n\t\t\t\t\tvar sStripe = asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Row callback functions - might want to manipulate the row\n\t\t\t\t// iRowCount and j are not currently documented. Are they at all\n\t\t\t\t// useful?\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null,\n\t\t\t\t\t[nRow, aoData._aData, iRowCount, j] );\n\t\n\t\t\t\tanRows.push( nRow );\n\t\t\t\tiRowCount++;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\tif ( oSettings.iDraw == 1 && _fnDataSource( oSettings ) == 'ajax' )\n\t\t\t{\n\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t}\n\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t{\n\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t}\n\t\n\t\t\tanRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )\n\t\t\t\t.append( $('<td />', {\n\t\t\t\t\t'valign': 'top',\n\t\t\t\t\t'colSpan': _fnVisbleColumns( oSettings ),\n\t\t\t\t\t'class': oSettings.oClasses.sRowEmpty\n\t\t\t\t} ).html( sZero ) )[0];\n\t\t}\n\t\n\t\t/* Header and footer callbacks */\n\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\tvar body = $(oSettings.nTBody);\n\t\n\t\tbody.children().detach();\n\t\tbody.append( $(anRows) );\n\t\n\t\t/* Call all required callback functions for the end of a draw */\n\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\n\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\toSettings.bSorted = false;\n\t\toSettings.bFiltered = false;\n\t\toSettings.bDrawing = false;\n\t}\n\t\n\t\n\t/**\n\t * Redraw the table - taking account of the various features which are enabled\n\t * @param {object} oSettings dataTables settings object\n\t * @param {boolean} [holdPosition] Keep the current paging position. By default\n\t * the paging is reset to the first page\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnReDraw( settings, holdPosition )\n\t{\n\t\tvar\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tsort = features.bSort,\n\t\t\tfilter = features.bFilter;\n\t\n\t\tif ( sort ) {\n\t\t\t_fnSort( settings );\n\t\t}\n\t\n\t\tif ( filter ) {\n\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch );\n\t\t}\n\t\telse {\n\t\t\t// No filtering, so we want to just use the display master\n\t\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\t}\n\t\n\t\tif ( holdPosition !== true ) {\n\t\t\tsettings._iDisplayStart = 0;\n\t\t}\n\t\n\t\t// Let any modules know about the draw hold position state (used by\n\t\t// scrolling internally)\n\t\tsettings._drawHold = holdPosition;\n\t\n\t\t_fnDraw( settings );\n\t\n\t\tsettings._drawHold = false;\n\t}\n\t\n\t\n\t/**\n\t * Add the options to the page HTML for the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddOptionsHtml ( oSettings )\n\t{\n\t\tvar classes = oSettings.oClasses;\n\t\tvar table = $(oSettings.nTable);\n\t\tvar holding = $('<div/>').insertBefore( table ); // Holding element for speed\n\t\tvar features = oSettings.oFeatures;\n\t\n\t\t// All DataTables are wrapped in a div\n\t\tvar insert = $('<div/>', {\n\t\t\tid: oSettings.sTableId+'_wrapper',\n\t\t\t'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)\n\t\t} );\n\t\n\t\toSettings.nHolding = holding[0];\n\t\toSettings.nTableWrapper = insert[0];\n\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\n\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\tvar aDom = oSettings.sDom.split('');\n\t\tvar featureNode, cOption, nNewNode, cNext, sAttr, j;\n\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t{\n\t\t\tfeatureNode = null;\n\t\t\tcOption = aDom[i];\n\t\n\t\t\tif ( cOption == '<' )\n\t\t\t{\n\t\t\t\t/* New container div */\n\t\t\t\tnNewNode = $('<div/>')[0];\n\t\n\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\tcNext = aDom[i+1];\n\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t{\n\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\tj = 2;\n\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\tj++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Replace jQuery UI constants @todo depreciated */\n\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIHeader;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIFooter;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t */\n\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t}\n\t\n\t\t\t\tinsert.append( nNewNode );\n\t\t\t\tinsert = $(nNewNode);\n\t\t\t}\n\t\t\telse if ( cOption == '>' )\n\t\t\t{\n\t\t\t\t/* End container div */\n\t\t\t\tinsert = insert.parent();\n\t\t\t}\n\t\t\t// @todo Move options into their own plugins?\n\t\t\telse if ( cOption == 'l' && features.bPaginate && features.bLengthChange )\n\t\t\t{\n\t\t\t\t/* Length */\n\t\t\t\tfeatureNode = _fnFeatureHtmlLength( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'f' && features.bFilter )\n\t\t\t{\n\t\t\t\t/* Filter */\n\t\t\t\tfeatureNode = _fnFeatureHtmlFilter( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'r' && features.bProcessing )\n\t\t\t{\n\t\t\t\t/* pRocessing */\n\t\t\t\tfeatureNode = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 't' )\n\t\t\t{\n\t\t\t\t/* Table */\n\t\t\t\tfeatureNode = _fnFeatureHtmlTable( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'i' && features.bInfo )\n\t\t\t{\n\t\t\t\t/* Info */\n\t\t\t\tfeatureNode = _fnFeatureHtmlInfo( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'p' && features.bPaginate )\n\t\t\t{\n\t\t\t\t/* Pagination */\n\t\t\t\tfeatureNode = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t}\n\t\t\telse if ( DataTable.ext.feature.length !== 0 )\n\t\t\t{\n\t\t\t\t/* Plug-in features */\n\t\t\t\tvar aoFeatures = DataTable.ext.feature;\n\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t{\n\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t{\n\t\t\t\t\t\tfeatureNode = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Add to the 2D features array */\n\t\t\tif ( featureNode )\n\t\t\t{\n\t\t\t\tvar aanFeatures = oSettings.aanFeatures;\n\t\n\t\t\t\tif ( ! aanFeatures[cOption] )\n\t\t\t\t{\n\t\t\t\t\taanFeatures[cOption] = [];\n\t\t\t\t}\n\t\n\t\t\t\taanFeatures[cOption].push( featureNode );\n\t\t\t\tinsert.append( featureNode );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\tholding.replaceWith( insert );\n\t}\n\t\n\t\n\t/**\n\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t * create a layout grid (array) of rows x columns, which contains a reference\n\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t * any column / row could be removed and the new grid constructed\n\t * @param array {object} aLayout Array to store the calculated layout in\n\t * @param {node} nThead The header/footer element for the table\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDetectHeader ( aLayout, nThead )\n\t{\n\t\tvar nTrs = $(nThead).children('tr');\n\t\tvar nTr, nCell;\n\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\tvar bUnique;\n\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\tvar k = a[i];\n\t while ( k[j] ) {\n\t\t\t\tj++;\n\t\t\t}\n\t\t\treturn j;\n\t\t};\n\t\n\t\taLayout.splice( 0, aLayout.length );\n\t\n\t\t/* We know how many rows there are in the layout - so prep it */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taLayout.push( [] );\n\t\t}\n\t\n\t\t/* Calculate a layout array */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTr = nTrs[i];\n\t\t\tiColumn = 0;\n\t\n\t\t\t/* For every cell in the row... */\n\t\t\tnCell = nTr.firstChild;\n\t\t\twhile ( nCell ) {\n\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t{\n\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\n\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target\n\t\t\t\t\t * accordingly\n\t\t\t\t\t */\n\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\n\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\n\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Get an array of unique th elements, one for each column\n\t * @param {object} oSettings dataTables settings object\n\t * @param {node} nHeader automatically detect the layout from this node - optional\n\t * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t * @returns array {node} aReturn list of unique th's\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t{\n\t\tvar aReturn = [];\n\t\tif ( !aLayout )\n\t\t{\n\t\t\taLayout = oSettings.aoHeader;\n\t\t\tif ( nHeader )\n\t\t\t{\n\t\t\t\taLayout = [];\n\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t}\n\t\t}\n\t\n\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( aLayout[i][j].unique &&\n\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t{\n\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn aReturn;\n\t}\n\t\n\t\n\t\n\t/**\n\t * Create an Ajax call based on the table's settings, taking into account that\n\t * parameters can have multiple forms, and backwards compatibility.\n\t *\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} data Data to send to the server, required by\n\t * DataTables - may be augmented by developer callbacks\n\t * @param {function} fn Callback function to run when data is obtained\n\t */\n\tfunction _fnBuildAjax( oSettings, data, fn )\n\t{\n\t\t// Compatibility with 1.9-, allow fnServerData and event to manipulate\n\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );\n\t\n\t\t// Convert to object based for 1.10+ if using the old array scheme which can\n\t\t// come from server-side processing or serverParams\n\t\tif ( data && $.isArray(data) ) {\n\t\t\tvar tmp = {};\n\t\t\tvar rbracket = /(.*?)\\[\\]$/;\n\t\n\t\t\t$.each( data, function (key, val) {\n\t\t\t\tvar match = val.name.match(rbracket);\n\t\n\t\t\t\tif ( match ) {\n\t\t\t\t\t// Support for arrays\n\t\t\t\t\tvar name = match[0];\n\t\n\t\t\t\t\tif ( ! tmp[ name ] ) {\n\t\t\t\t\t\ttmp[ name ] = [];\n\t\t\t\t\t}\n\t\t\t\t\ttmp[ name ].push( val.value );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttmp[val.name] = val.value;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdata = tmp;\n\t\t}\n\t\n\t\tvar ajaxData;\n\t\tvar ajax = oSettings.ajax;\n\t\tvar instance = oSettings.oInstance;\n\t\n\t\tif ( $.isPlainObject( ajax ) && ajax.data )\n\t\t{\n\t\t\tajaxData = ajax.data;\n\t\n\t\t\tvar newData = $.isFunction( ajaxData ) ?\n\t\t\t\tajaxData( data ) : // fn can manipulate data or return an object\n\t\t\t\tajaxData; // object or array to merge\n\t\n\t\t\t// If the function returned an object, use that alone\n\t\t\tdata = $.isFunction( ajaxData ) && newData ?\n\t\t\t\tnewData :\n\t\t\t\t$.extend( true, data, newData );\n\t\n\t\t\t// Remove the data property as we've resolved it already and don't want\n\t\t\t// jQuery to do it again (it is restored at the end of the function)\n\t\t\tdelete ajax.data;\n\t\t}\n\t\n\t\tvar baseAjax = {\n\t\t\t\"data\": data,\n\t\t\t\"success\": function (json) {\n\t\t\t\tvar error = json.error || json.sError;\n\t\t\t\tif ( error ) {\n\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, error );\n\t\t\t\t}\n\t\n\t\t\t\toSettings.json = json;\n\t\t\t\t_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json] );\n\t\t\t\tfn( json );\n\t\t\t},\n\t\t\t\"dataType\": \"json\",\n\t\t\t\"cache\": false,\n\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\tvar log = oSettings.oApi._fnLog;\n\t\n\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\tlog( oSettings, 0, 'Invalid JSON response', 1 );\n\t\t\t\t}\n\t\t\t\telse if ( xhr.readyState === 4 ) {\n\t\t\t\t\tlog( oSettings, 0, 'Ajax error', 7 );\n\t\t\t\t}\n\t\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t}\n\t\t};\n\t\n\t\t// Store the data submitted for the API\n\t\toSettings.oAjaxData = data;\n\t\n\t\t// Allow plug-ins and external processes to modify the data\n\t\t_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );\n\t\n\t\tif ( oSettings.fnServerData )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.fnServerData.call( instance,\n\t\t\t\toSettings.sAjaxSource,\n\t\t\t\t$.map( data, function (val, key) { // Need to convert back to 1.9 trad format\n\t\t\t\t\treturn { name: key, value: val };\n\t\t\t\t} ),\n\t\t\t\tfn,\n\t\t\t\toSettings\n\t\t\t);\n\t\t}\n\t\telse if ( oSettings.sAjaxSource || typeof ajax === 'string' )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, {\n\t\t\t\turl: ajax || oSettings.sAjaxSource\n\t\t\t} ) );\n\t\t}\n\t\telse if ( $.isFunction( ajax ) )\n\t\t{\n\t\t\t// Is a function - let the caller define what needs to be done\n\t\t\toSettings.jqXHR = ajax.call( instance, data, fn, oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Object to extend the base settings\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );\n\t\n\t\t\t// Restore for next time around\n\t\t\tajax.data = ajaxData;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Update the table using an Ajax call\n\t * @param {object} settings dataTables settings object\n\t * @returns {boolean} Block the table drawing or not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdate( settings )\n\t{\n\t\tif ( settings.bAjaxDataGet ) {\n\t\t\tsettings.iDraw++;\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t_fnBuildAjax(\n\t\t\t\tsettings,\n\t\t\t\t_fnAjaxParameters( settings ),\n\t\t\t\tfunction(json) {\n\t\t\t\t\t_fnAjaxUpdateDraw( settings, json );\n\t\t\t\t}\n\t\t\t);\n\t\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t\n\t\n\t/**\n\t * Build up the parameters in an object needed for a server-side processing\n\t * request. Note that this is basically done twice, is different ways - a modern\n\t * method which is used by default in DataTables 1.10 which uses objects and\n\t * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if\n\t * the sAjaxSource option is used in the initialisation, or the legacyAjax\n\t * option is set.\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {bool} block the table drawing or not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxParameters( settings )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tcolumnCount = columns.length,\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tpreSearch = settings.oPreviousSearch,\n\t\t\tpreColSearch = settings.aoPreSearchCols,\n\t\t\ti, data = [], dataProp, column, columnSearch,\n\t\t\tsort = _fnSortFlatten( settings ),\n\t\t\tdisplayStart = settings._iDisplayStart,\n\t\t\tdisplayLength = features.bPaginate !== false ?\n\t\t\t\tsettings._iDisplayLength :\n\t\t\t\t-1;\n\t\n\t\tvar param = function ( name, value ) {\n\t\t\tdata.push( { 'name': name, 'value': value } );\n\t\t};\n\t\n\t\t// DataTables 1.9- compatible method\n\t\tparam( 'sEcho', settings.iDraw );\n\t\tparam( 'iColumns', columnCount );\n\t\tparam( 'sColumns', _pluck( columns, 'sName' ).join(',') );\n\t\tparam( 'iDisplayStart', displayStart );\n\t\tparam( 'iDisplayLength', displayLength );\n\t\n\t\t// DataTables 1.10+ method\n\t\tvar d = {\n\t\t\tdraw: settings.iDraw,\n\t\t\tcolumns: [],\n\t\t\torder: [],\n\t\t\tstart: displayStart,\n\t\t\tlength: displayLength,\n\t\t\tsearch: {\n\t\t\t\tvalue: preSearch.sSearch,\n\t\t\t\tregex: preSearch.bRegex\n\t\t\t}\n\t\t};\n\t\n\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcolumnSearch = preColSearch[i];\n\t\t\tdataProp = typeof column.mData==\"function\" ? 'function' : column.mData ;\n\t\n\t\t\td.columns.push( {\n\t\t\t\tdata: dataProp,\n\t\t\t\tname: column.sName,\n\t\t\t\tsearchable: column.bSearchable,\n\t\t\t\torderable: column.bSortable,\n\t\t\t\tsearch: {\n\t\t\t\t\tvalue: columnSearch.sSearch,\n\t\t\t\t\tregex: columnSearch.bRegex\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\tparam( \"mDataProp_\"+i, dataProp );\n\t\n\t\t\tif ( features.bFilter ) {\n\t\t\t\tparam( 'sSearch_'+i, columnSearch.sSearch );\n\t\t\t\tparam( 'bRegex_'+i, columnSearch.bRegex );\n\t\t\t\tparam( 'bSearchable_'+i, column.bSearchable );\n\t\t\t}\n\t\n\t\t\tif ( features.bSort ) {\n\t\t\t\tparam( 'bSortable_'+i, column.bSortable );\n\t\t\t}\n\t\t}\n\t\n\t\tif ( features.bFilter ) {\n\t\t\tparam( 'sSearch', preSearch.sSearch );\n\t\t\tparam( 'bRegex', preSearch.bRegex );\n\t\t}\n\t\n\t\tif ( features.bSort ) {\n\t\t\t$.each( sort, function ( i, val ) {\n\t\t\t\td.order.push( { column: val.col, dir: val.dir } );\n\t\n\t\t\t\tparam( 'iSortCol_'+i, val.col );\n\t\t\t\tparam( 'sSortDir_'+i, val.dir );\n\t\t\t} );\n\t\n\t\t\tparam( 'iSortingCols', sort.length );\n\t\t}\n\t\n\t\t// If the legacy.ajax parameter is null, then we automatically decide which\n\t\t// form to use, based on sAjaxSource\n\t\tvar legacy = DataTable.ext.legacy.ajax;\n\t\tif ( legacy === null ) {\n\t\t\treturn settings.sAjaxSource ? data : d;\n\t\t}\n\t\n\t\t// Otherwise, if legacy has been specified then we use that to decide on the\n\t\t// form\n\t\treturn legacy ? data : d;\n\t}\n\t\n\t\n\t/**\n\t * Data the data from the server (nuking the old) and redraw the table\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} json json data return from the server.\n\t * @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t * @param {array} json.aaData The data to display on this page\n\t * @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdateDraw ( settings, json )\n\t{\n\t\t// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.\n\t\t// Support both\n\t\tvar compat = function ( old, modern ) {\n\t\t\treturn json[old] !== undefined ? json[old] : json[modern];\n\t\t};\n\t\n\t\tvar draw = compat( 'sEcho', 'draw' );\n\t\tvar recordsTotal = compat( 'iTotalRecords', 'recordsTotal' );\n\t\tvar recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );\n\t\n\t\tif ( draw ) {\n\t\t\t// Protect against out of sequence returns\n\t\t\tif ( draw*1 < settings.iDraw ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettings.iDraw = draw * 1;\n\t\t}\n\t\n\t\t_fnClearTable( settings );\n\t\tsettings._iRecordsTotal = parseInt(recordsTotal, 10);\n\t\tsettings._iRecordsDisplay = parseInt(recordsFiltered, 10);\n\t\n\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t_fnAddData( settings, data[i] );\n\t\t}\n\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\n\t\tsettings.bAjaxDataGet = false;\n\t\t_fnDraw( settings );\n\t\n\t\tif ( ! settings._bInitComplete ) {\n\t\t\t_fnInitComplete( settings, json );\n\t\t}\n\t\n\t\tsettings.bAjaxDataGet = true;\n\t\t_fnProcessingDisplay( settings, false );\n\t}\n\t\n\t\n\t/**\n\t * Get the data from the JSON data source to use for drawing a table. Using\n\t * `_fnGetObjectDataFn` allows the data to be sourced from a property of the\n\t * source object, or from a processing function.\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} json Data source object / array from the server\n\t * @return {array} Array of data to use\n\t */\n\tfunction _fnAjaxDataSrc ( oSettings, json )\n\t{\n\t\tvar dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?\n\t\t\toSettings.ajax.dataSrc :\n\t\t\toSettings.sAjaxDataProp; // Compatibility with 1.9-.\n\t\n\t\t// Compatibility with 1.9-. In order to read from aaData, check if the\n\t\t// default has been changed, if not, check for aaData\n\t\tif ( dataSrc === 'data' ) {\n\t\t\treturn json.aaData || json[dataSrc];\n\t\t}\n\t\n\t\treturn dataSrc !== \"\" ?\n\t\t\t_fnGetObjectDataFn( dataSrc )( json ) :\n\t\t\tjson;\n\t}\n\t\n\t\n\t/**\n\t * Generate the node required for filtering text\n\t * @returns {node} Filter control element\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlFilter ( settings )\n\t{\n\t\tvar classes = settings.oClasses;\n\t\tvar tableId = settings.sTableId;\n\t\tvar language = settings.oLanguage;\n\t\tvar previousSearch = settings.oPreviousSearch;\n\t\tvar features = settings.aanFeatures;\n\t\tvar input = '<input type=\"search\" class=\"'+classes.sFilterInput+'\"/>';\n\t\n\t\tvar str = language.sSearch;\n\t\tstr = str.match(/_INPUT_/) ?\n\t\t\tstr.replace('_INPUT_', input) :\n\t\t\tstr+input;\n\t\n\t\tvar filter = $('<div/>', {\n\t\t\t\t'id': ! features.f ? tableId+'_filter' : null,\n\t\t\t\t'class': classes.sFilter\n\t\t\t} )\n\t\t\t.append( $('<label/>' ).append( str ) );\n\t\n\t\tvar searchFn = function() {\n\t\t\t/* Update all other filter input elements for the new display */\n\t\t\tvar n = features.f;\n\t\t\tvar val = !this.value ? \"\" : this.value; // mental IE8 fix :-(\n\t\n\t\t\t/* Now do the filter */\n\t\t\tif ( val != previousSearch.sSearch ) {\n\t\t\t\t_fnFilterComplete( settings, {\n\t\t\t\t\t\"sSearch\": val,\n\t\t\t\t\t\"bRegex\": previousSearch.bRegex,\n\t\t\t\t\t\"bSmart\": previousSearch.bSmart ,\n\t\t\t\t\t\"bCaseInsensitive\": previousSearch.bCaseInsensitive\n\t\t\t\t} );\n\t\n\t\t\t\t// Need to redraw, without resorting\n\t\t\t\tsettings._iDisplayStart = 0;\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t};\n\t\n\t\tvar searchDelay = settings.searchDelay !== null ?\n\t\t\tsettings.searchDelay :\n\t\t\t_fnDataSource( settings ) === 'ssp' ?\n\t\t\t\t400 :\n\t\t\t\t0;\n\t\n\t\tvar jqFilter = $('input', filter)\n\t\t\t.val( previousSearch.sSearch )\n\t\t\t.attr( 'placeholder', language.sSearchPlaceholder )\n\t\t\t.bind(\n\t\t\t\t'keyup.DT search.DT input.DT paste.DT cut.DT',\n\t\t\t\tsearchDelay ?\n\t\t\t\t\t_fnThrottle( searchFn, searchDelay ) :\n\t\t\t\t\tsearchFn\n\t\t\t)\n\t\t\t.bind( 'keypress.DT', function(e) {\n\t\t\t\t/* Prevent form submission */\n\t\t\t\tif ( e.keyCode == 13 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attr('aria-controls', tableId);\n\t\n\t\t// Update the input elements whenever the table is filtered\n\t\t$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame...\n\t\t\t\ttry {\n\t\t\t\t\tif ( jqFilter[0] !== document.activeElement ) {\n\t\t\t\t\t\tjqFilter.val( previousSearch.sSearch );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {}\n\t\t\t}\n\t\t} );\n\t\n\t\treturn filter[0];\n\t}\n\t\n\t\n\t/**\n\t * Filter the table using both the global filter and column based filtering\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} oSearch search information\n\t * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t{\n\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t/* Save the filtering values */\n\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t};\n\t\tvar fnRegex = function ( o ) {\n\t\t\t// Backwards compatibility with the bEscapeRegex option\n\t\t\treturn o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;\n\t\t};\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo As per sort - can this be moved into an event handler?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' )\n\t\t{\n\t\t\t/* Global filter */\n\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );\n\t\t\tfnSaveFilter( oInput );\n\t\n\t\t\t/* Now do the individual column filter */\n\t\t\tfor ( var i=0 ; i<aoPrevSearch.length ; i++ )\n\t\t\t{\n\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),\n\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t}\n\t\n\t\t\t/* Custom filtering */\n\t\t\t_fnFilterCustom( oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfnSaveFilter( oInput );\n\t\t}\n\t\n\t\t/* Tell the draw function we have been filtering */\n\t\toSettings.bFiltered = true;\n\t\t_fnCallbackFire( oSettings, null, 'search', [oSettings] );\n\t}\n\t\n\t\n\t/**\n\t * Apply custom filtering functions\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCustom( settings )\n\t{\n\t\tvar filters = DataTable.ext.search;\n\t\tvar displayRows = settings.aiDisplay;\n\t\tvar row, rowIdx;\n\t\n\t\tfor ( var i=0, ien=filters.length ; i<ien ; i++ ) {\n\t\t\tvar rows = [];\n\t\n\t\t\t// Loop over each row and see if it should be included\n\t\t\tfor ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {\n\t\t\t\trowIdx = displayRows[ j ];\n\t\t\t\trow = settings.aoData[ rowIdx ];\n\t\n\t\t\t\tif ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {\n\t\t\t\t\trows.push( rowIdx );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// So the array reference doesn't break set the results into the\n\t\t\t// existing array\n\t\t\tdisplayRows.length = 0;\n\t\t\tdisplayRows.push.apply( displayRows, rows );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Filter the table on a per-column basis\n\t * @param {object} oSettings dataTables settings object\n\t * @param {string} sInput string to filter on\n\t * @param {int} iColumn column to filter\n\t * @param {bool} bRegex treat search string as a regular expression or not\n\t * @param {bool} bSmart use smart filtering or not\n\t * @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )\n\t{\n\t\tif ( searchStr === '' ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar data;\n\t\tvar display = settings.aiDisplay;\n\t\tvar rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );\n\t\n\t\tfor ( var i=display.length-1 ; i>=0 ; i-- ) {\n\t\t\tdata = settings.aoData[ display[i] ]._aFilterData[ colIdx ];\n\t\n\t\t\tif ( ! rpSearch.test( data ) ) {\n\t\t\t\tdisplay.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Filter the data table based on user input and draw the table\n\t * @param {object} settings dataTables settings object\n\t * @param {string} input string to filter on\n\t * @param {int} force optional - force a research of the master array (1) or not (undefined or 0)\n\t * @param {bool} regex treat as a regular expression or not\n\t * @param {bool} smart perform smart filtering or not\n\t * @param {bool} caseInsensitive Do case insenstive matching or not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilter( settings, input, force, regex, smart, caseInsensitive )\n\t{\n\t\tvar rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );\n\t\tvar prevSearch = settings.oPreviousSearch.sSearch;\n\t\tvar displayMaster = settings.aiDisplayMaster;\n\t\tvar display, invalidated, i;\n\t\n\t\t// Need to take account of custom filtering functions - always filter\n\t\tif ( DataTable.ext.search.length !== 0 ) {\n\t\t\tforce = true;\n\t\t}\n\t\n\t\t// Check if any of the rows were invalidated\n\t\tinvalidated = _fnFilterData( settings );\n\t\n\t\t// If the input is blank - we just want the full data set\n\t\tif ( input.length <= 0 ) {\n\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t}\n\t\telse {\n\t\t\t// New search - start from the master array\n\t\t\tif ( invalidated ||\n\t\t\t\t force ||\n\t\t\t\t prevSearch.length > input.length ||\n\t\t\t\t input.indexOf(prevSearch) !== 0 ||\n\t\t\t\t settings.bSorted // On resort, the display master needs to be\n\t\t\t\t // re-filtered since indexes will have changed\n\t\t\t) {\n\t\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t\t}\n\t\n\t\t\t// Search the display array\n\t\t\tdisplay = settings.aiDisplay;\n\t\n\t\t\tfor ( i=display.length-1 ; i>=0 ; i-- ) {\n\t\t\t\tif ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {\n\t\t\t\t\tdisplay.splice( i, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a regular expression object suitable for searching a table\n\t * @param {string} sSearch string to search for\n\t * @param {bool} bRegex treat as a regular expression or not\n\t * @param {bool} bSmart perform smart filtering or not\n\t * @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t * @returns {RegExp} constructed object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCreateSearch( search, regex, smart, caseInsensitive )\n\t{\n\t\tsearch = regex ?\n\t\t\tsearch :\n\t\t\t_fnEscapeRegex( search );\n\t\t\n\t\tif ( smart ) {\n\t\t\t/* For smart filtering we want to allow the search to work regardless of\n\t\t\t * word order. We also want double quoted text to be preserved, so word\n\t\t\t * order is important - a la google. So this is what we want to\n\t\t\t * generate:\n\t\t\t * \n\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo three\\b)(?=.*?\\bfour\\b).*$\n\t\t\t */\n\t\t\tvar a = $.map( search.match( /\"[^\"]+\"|[^ ]+/g ) || '', function ( word ) {\n\t\t\t\tif ( word.charAt(0) === '\"' ) {\n\t\t\t\t\tvar m = word.match( /^\"(.*)\"$/ );\n\t\t\t\t\tword = m ? m[1] : word;\n\t\t\t\t}\n\t\n\t\t\t\treturn word.replace('\"', '');\n\t\t\t} );\n\t\n\t\t\tsearch = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';\n\t\t}\n\t\n\t\treturn new RegExp( search, caseInsensitive ? 'i' : '' );\n\t}\n\t\n\t\n\t/**\n\t * Escape a string such that it can be used in a regular expression\n\t * @param {string} sVal string to escape\n\t * @returns {string} escaped string\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnEscapeRegex ( sVal )\n\t{\n\t\treturn sVal.replace( _re_escape_regex, '\\\\$1' );\n\t}\n\t\n\t\n\t\n\tvar __filter_div = $('<div>')[0];\n\tvar __filter_div_textContent = __filter_div.textContent !== undefined;\n\t\n\t// Update the filtering data for each row if needed (by invalidation or first run)\n\tfunction _fnFilterData ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar column;\n\t\tvar i, j, ien, jen, filterData, cellData, row;\n\t\tvar fomatters = DataTable.ext.type.search;\n\t\tvar wasInvalidated = false;\n\t\n\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aFilterData ) {\n\t\t\t\tfilterData = [];\n\t\n\t\t\t\tfor ( j=0, jen=columns.length ; j<jen ; j++ ) {\n\t\t\t\t\tcolumn = columns[j];\n\t\n\t\t\t\t\tif ( column.bSearchable ) {\n\t\t\t\t\t\tcellData = _fnGetCellData( settings, i, j, 'filter' );\n\t\n\t\t\t\t\t\tif ( fomatters[ column.sType ] ) {\n\t\t\t\t\t\t\tcellData = fomatters[ column.sType ]( cellData );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Search in DataTables 1.10 is string based. In 1.11 this\n\t\t\t\t\t\t// should be altered to also allow strict type checking.\n\t\t\t\t\t\tif ( cellData === null ) {\n\t\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( typeof cellData !== 'string' && cellData.toString ) {\n\t\t\t\t\t\t\tcellData = cellData.toString();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If it looks like there is an HTML entity in the string,\n\t\t\t\t\t// attempt to decode it so sorting works as expected. Note that\n\t\t\t\t\t// we could use a single line of jQuery to do this, but the DOM\n\t\t\t\t\t// method used here is much faster http://jsperf.com/html-decode\n\t\t\t\t\tif ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {\n\t\t\t\t\t\t__filter_div.innerHTML = cellData;\n\t\t\t\t\t\tcellData = __filter_div_textContent ?\n\t\t\t\t\t\t\t__filter_div.textContent :\n\t\t\t\t\t\t\t__filter_div.innerText;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif ( cellData.replace ) {\n\t\t\t\t\t\tcellData = cellData.replace(/[\\r\\n]/g, '');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfilterData.push( cellData );\n\t\t\t\t}\n\t\n\t\t\t\trow._aFilterData = filterData;\n\t\t\t\trow._sFilterRow = filterData.join(' ');\n\t\t\t\twasInvalidated = true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn wasInvalidated;\n\t}\n\t\n\t\n\t/**\n\t * Convert from the internal Hungarian notation to camelCase for external\n\t * interaction\n\t * @param {object} obj Object to convert\n\t * @returns {object} Inverted object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToCamel ( obj )\n\t{\n\t\treturn {\n\t\t\tsearch: obj.sSearch,\n\t\t\tsmart: obj.bSmart,\n\t\t\tregex: obj.bRegex,\n\t\t\tcaseInsensitive: obj.bCaseInsensitive\n\t\t};\n\t}\n\t\n\t\n\t\n\t/**\n\t * Convert from camelCase notation to the internal Hungarian. We could use the\n\t * Hungarian convert function here, but this is cleaner\n\t * @param {object} obj Object to convert\n\t * @returns {object} Inverted object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToHung ( obj )\n\t{\n\t\treturn {\n\t\t\tsSearch: obj.search,\n\t\t\tbSmart: obj.smart,\n\t\t\tbRegex: obj.regex,\n\t\t\tbCaseInsensitive: obj.caseInsensitive\n\t\t};\n\t}\n\t\n\t/**\n\t * Generate the node required for the info display\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {node} Information element\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlInfo ( settings )\n\t{\n\t\tvar\n\t\t\ttid = settings.sTableId,\n\t\t\tnodes = settings.aanFeatures.i,\n\t\t\tn = $('<div/>', {\n\t\t\t\t'class': settings.oClasses.sInfo,\n\t\t\t\t'id': ! nodes ? tid+'_info' : null\n\t\t\t} );\n\t\n\t\tif ( ! nodes ) {\n\t\t\t// Update display on each draw\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\"sName\": \"information\"\n\t\t\t} );\n\t\n\t\t\tn\n\t\t\t\t.attr( 'role', 'status' )\n\t\t\t\t.attr( 'aria-live', 'polite' );\n\t\n\t\t\t// Table is described by our info div\n\t\t\t$(settings.nTable).attr( 'aria-describedby', tid+'_info' );\n\t\t}\n\t\n\t\treturn n[0];\n\t}\n\t\n\t\n\t/**\n\t * Update the information elements in the display\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnUpdateInfo ( settings )\n\t{\n\t\t/* Show information about the table */\n\t\tvar nodes = settings.aanFeatures.i;\n\t\tif ( nodes.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\tlang = settings.oLanguage,\n\t\t\tstart = settings._iDisplayStart+1,\n\t\t\tend = settings.fnDisplayEnd(),\n\t\t\tmax = settings.fnRecordsTotal(),\n\t\t\ttotal = settings.fnRecordsDisplay(),\n\t\t\tout = total ?\n\t\t\t\tlang.sInfo :\n\t\t\t\tlang.sInfoEmpty;\n\t\n\t\tif ( total !== max ) {\n\t\t\t/* Record set after filtering */\n\t\t\tout += ' ' + lang.sInfoFiltered;\n\t\t}\n\t\n\t\t// Convert the macros\n\t\tout += lang.sInfoPostFix;\n\t\tout = _fnInfoMacros( settings, out );\n\t\n\t\tvar callback = lang.fnInfoCallback;\n\t\tif ( callback !== null ) {\n\t\t\tout = callback.call( settings.oInstance,\n\t\t\t\tsettings, start, end, max, total, out\n\t\t\t);\n\t\t}\n\t\n\t\t$(nodes).html( out );\n\t}\n\t\n\t\n\tfunction _fnInfoMacros ( settings, str )\n\t{\n\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t// internally\n\t\tvar\n\t\t\tformatter = settings.fnFormatNumber,\n\t\t\tstart = settings._iDisplayStart+1,\n\t\t\tlen = settings._iDisplayLength,\n\t\t\tvis = settings.fnRecordsDisplay(),\n\t\t\tall = len === -1;\n\t\n\t\treturn str.\n\t\t\treplace(/_START_/g, formatter.call( settings, start ) ).\n\t\t\treplace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ).\n\t\t\treplace(/_MAX_/g, formatter.call( settings, settings.fnRecordsTotal() ) ).\n\t\t\treplace(/_TOTAL_/g, formatter.call( settings, vis ) ).\n\t\t\treplace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).\n\t\t\treplace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );\n\t}\n\t\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnInitialise ( settings )\n\t{\n\t\tvar i, iLen, iAjaxStart=settings.iInitDisplayStart;\n\t\tvar columns = settings.aoColumns, column;\n\t\tvar features = settings.oFeatures;\n\t\n\t\t/* Ensure that the table data is fully initialised */\n\t\tif ( ! settings.bInitialised ) {\n\t\t\tsetTimeout( function(){ _fnInitialise( settings ); }, 200 );\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Show the display HTML options */\n\t\t_fnAddOptionsHtml( settings );\n\t\n\t\t/* Build and draw the header / footer for the table */\n\t\t_fnBuildHead( settings );\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\t/* Okay to show that something is going on now */\n\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t/* Calculate sizes for columns */\n\t\tif ( features.bAutoWidth ) {\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=columns.length ; i<iLen ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\n\t\t\tif ( column.sWidth ) {\n\t\t\t\tcolumn.nTh.style.width = _fnStringToCss( column.sWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t// If there is default sorting required - let's do it. The sort function\n\t\t// will do the drawing for us. Otherwise we draw the table regardless of the\n\t\t// Ajax source - this allows the table to look initialised for Ajax sourcing\n\t\t// data (show 'loading' message possibly)\n\t\t_fnReDraw( settings );\n\t\n\t\t// Server-side processing init complete is done by _fnAjaxUpdateDraw\n\t\tvar dataSrc = _fnDataSource( settings );\n\t\tif ( dataSrc != 'ssp' ) {\n\t\t\t// if there is an ajax source load the data\n\t\t\tif ( dataSrc == 'ajax' ) {\n\t\t\t\t_fnBuildAjax( settings, [], function(json) {\n\t\t\t\t\tvar aData = _fnAjaxDataSrc( settings, json );\n\t\n\t\t\t\t\t// Got the data - add it to the table\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ ) {\n\t\t\t\t\t\t_fnAddData( settings, aData[i] );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Reset the init display for cookie saving. We've already done\n\t\t\t\t\t// a filter, and therefore cleared it before. So we need to make\n\t\t\t\t\t// it appear 'fresh'\n\t\t\t\t\tsettings.iInitDisplayStart = iAjaxStart;\n\t\n\t\t\t\t\t_fnReDraw( settings );\n\t\n\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t_fnInitComplete( settings, json );\n\t\t\t\t}, settings );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t_fnInitComplete( settings );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t * with client-side processing (optional)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnInitComplete ( settings, json )\n\t{\n\t\tsettings._bInitComplete = true;\n\t\n\t\t// On an Ajax load we now have data and therefore want to apply the column\n\t\t// sizing\n\t\tif ( json ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );\n\t}\n\t\n\t\n\tfunction _fnLengthChange ( settings, val )\n\t{\n\t\tvar len = parseInt( val, 10 );\n\t\tsettings._iDisplayLength = len;\n\t\n\t\t_fnLengthOverflow( settings );\n\t\n\t\t// Fire length change event\n\t\t_fnCallbackFire( settings, null, 'length', [settings, len] );\n\t}\n\t\n\t\n\t/**\n\t * Generate the node required for user display length changing\n\t * @param {object} settings dataTables settings object\n\t * @returns {node} Display length feature node\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlLength ( settings )\n\t{\n\t\tvar\n\t\t\tclasses = settings.oClasses,\n\t\t\ttableId = settings.sTableId,\n\t\t\tmenu = settings.aLengthMenu,\n\t\t\td2 = $.isArray( menu[0] ),\n\t\t\tlengths = d2 ? menu[0] : menu,\n\t\t\tlanguage = d2 ? menu[1] : menu;\n\t\n\t\tvar select = $('<select/>', {\n\t\t\t'name': tableId+'_length',\n\t\t\t'aria-controls': tableId,\n\t\t\t'class': classes.sLengthSelect\n\t\t} );\n\t\n\t\tfor ( var i=0, ien=lengths.length ; i<ien ; i++ ) {\n\t\t\tselect[0][ i ] = new Option( language[i], lengths[i] );\n\t\t}\n\t\n\t\tvar div = $('<div><label/></div>').addClass( classes.sLength );\n\t\tif ( ! settings.aanFeatures.l ) {\n\t\t\tdiv[0].id = tableId+'_length';\n\t\t}\n\t\n\t\tdiv.children().append(\n\t\t\tsettings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )\n\t\t);\n\t\n\t\t// Can't use `select` variable as user might provide their own and the\n\t\t// reference is broken by the use of outerHTML\n\t\t$('select', div)\n\t\t\t.val( settings._iDisplayLength )\n\t\t\t.bind( 'change.DT', function(e) {\n\t\t\t\t_fnLengthChange( settings, $(this).val() );\n\t\t\t\t_fnDraw( settings );\n\t\t\t} );\n\t\n\t\t// Update node value whenever anything changes the table's length\n\t\t$(settings.nTable).bind( 'length.dt.DT', function (e, s, len) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t$('select', div).val( len );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn div[0];\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Note that most of the paging logic is done in\n\t * DataTable.ext.pager\n\t */\n\t\n\t/**\n\t * Generate the node required for default pagination\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {node} Pagination feature node\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlPaginate ( settings )\n\t{\n\t\tvar\n\t\t\ttype = settings.sPaginationType,\n\t\t\tplugin = DataTable.ext.pager[ type ],\n\t\t\tmodern = typeof plugin === 'function',\n\t\t\tredraw = function( settings ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t},\n\t\t\tnode = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],\n\t\t\tfeatures = settings.aanFeatures;\n\t\n\t\tif ( ! modern ) {\n\t\t\tplugin.fnInit( settings, node, redraw );\n\t\t}\n\t\n\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\tif ( ! features.p )\n\t\t{\n\t\t\tnode.id = settings.sTableId+'_paginate';\n\t\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": function( settings ) {\n\t\t\t\t\tif ( modern ) {\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\tstart = settings._iDisplayStart,\n\t\t\t\t\t\t\tlen = settings._iDisplayLength,\n\t\t\t\t\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\t\t\t\t\tall = len === -1,\n\t\t\t\t\t\t\tpage = all ? 0 : Math.ceil( start / len ),\n\t\t\t\t\t\t\tpages = all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\t\t\t\tbuttons = plugin(page, pages),\n\t\t\t\t\t\t\ti, ien;\n\t\n\t\t\t\t\t\tfor ( i=0, ien=features.p.length ; i<ien ; i++ ) {\n\t\t\t\t\t\t\t_fnRenderer( settings, 'pageButton' )(\n\t\t\t\t\t\t\t\tsettings, features.p[i], i, buttons, page, pages\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\telse {\n\t\t\t\t\t\tplugin.fnUpdate( settings, redraw );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"sName\": \"pagination\"\n\t\t\t} );\n\t\t}\n\t\n\t\treturn node;\n\t}\n\t\n\t\n\t/**\n\t * Alter the display settings to change the page\n\t * @param {object} settings DataTables settings object\n\t * @param {string|int} action Paging action to take: \"first\", \"previous\",\n\t * \"next\" or \"last\" or page number to jump to (integer)\n\t * @param [bool] redraw Automatically draw the update or not\n\t * @returns {bool} true page has changed, false - no change\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnPageChange ( settings, action, redraw )\n\t{\n\t\tvar\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tlen = settings._iDisplayLength,\n\t\t\trecords = settings.fnRecordsDisplay();\n\t\n\t\tif ( records === 0 || len === -1 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( typeof action === \"number\" )\n\t\t{\n\t\t\tstart = action * len;\n\t\n\t\t\tif ( start > records )\n\t\t\t{\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"first\" )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( action == \"previous\" )\n\t\t{\n\t\t\tstart = len >= 0 ?\n\t\t\t\tstart - len :\n\t\t\t\t0;\n\t\n\t\t\tif ( start < 0 )\n\t\t\t{\n\t\t\t start = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"next\" )\n\t\t{\n\t\t\tif ( start + len < records )\n\t\t\t{\n\t\t\t\tstart += len;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"last\" )\n\t\t{\n\t\t\tstart = Math.floor( (records-1) / len) * len;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnLog( settings, 0, \"Unknown paging action: \"+action, 5 );\n\t\t}\n\t\n\t\tvar changed = settings._iDisplayStart !== start;\n\t\tsettings._iDisplayStart = start;\n\t\n\t\tif ( changed ) {\n\t\t\t_fnCallbackFire( settings, null, 'page', [settings] );\n\t\n\t\t\tif ( redraw ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t}\n\t\n\t\treturn changed;\n\t}\n\t\n\t\n\t\n\t/**\n\t * Generate the node required for the processing node\n\t * @param {object} settings dataTables settings object\n\t * @returns {node} Processing element\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlProcessing ( settings )\n\t{\n\t\treturn $('<div/>', {\n\t\t\t\t'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,\n\t\t\t\t'class': settings.oClasses.sProcessing\n\t\t\t} )\n\t\t\t.html( settings.oLanguage.sProcessing )\n\t\t\t.insertBefore( settings.nTable )[0];\n\t}\n\t\n\t\n\t/**\n\t * Display or hide the processing indicator\n\t * @param {object} settings dataTables settings object\n\t * @param {bool} show Show the processing indicator (true) or not (false)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnProcessingDisplay ( settings, show )\n\t{\n\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'processing', [settings, show] );\n\t}\n\t\n\t/**\n\t * Add any control elements for the table - specifically scrolling\n\t * @param {object} settings dataTables settings object\n\t * @returns {node} Node to add to the DOM\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlTable ( settings )\n\t{\n\t\tvar table = $(settings.nTable);\n\t\n\t\t// Add the ARIA grid role to the table\n\t\ttable.attr( 'role', 'grid' );\n\t\n\t\t// Scrolling from here on in\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( scroll.sX === '' && scroll.sY === '' ) {\n\t\t\treturn settings.nTable;\n\t\t}\n\t\n\t\tvar scrollX = scroll.sX;\n\t\tvar scrollY = scroll.sY;\n\t\tvar classes = settings.oClasses;\n\t\tvar caption = table.children('caption');\n\t\tvar captionSide = caption.length ? caption[0]._captionSide : null;\n\t\tvar headerClone = $( table[0].cloneNode(false) );\n\t\tvar footerClone = $( table[0].cloneNode(false) );\n\t\tvar footer = table.children('tfoot');\n\t\tvar _div = '<div/>';\n\t\tvar size = function ( s ) {\n\t\t\treturn !s ? null : _fnStringToCss( s );\n\t\t};\n\t\n\t\t// This is fairly messy, but with x scrolling enabled, if the table has a\n\t\t// width attribute, regardless of any width applied using the column width\n\t\t// options, the browser will shrink or grow the table as needed to fit into\n\t\t// that 100%. That would make the width options useless. So we remove it.\n\t\t// This is okay, under the assumption that width:100% is applied to the\n\t\t// table in CSS (it is in the default stylesheet) which will set the table\n\t\t// width as appropriate (the attribute and css behave differently...)\n\t\tif ( scroll.sX && table.attr('width') === '100%' ) {\n\t\t\ttable.removeAttr('width');\n\t\t}\n\t\n\t\tif ( ! footer.length ) {\n\t\t\tfooter = null;\n\t\t}\n\t\n\t\t/*\n\t\t * The HTML structure that we want to generate in this function is:\n\t\t * div - scroller\n\t\t * div - scroll head\n\t\t * div - scroll head inner\n\t\t * table - scroll head table\n\t\t * thead - thead\n\t\t * div - scroll body\n\t\t * table - table (master table)\n\t\t * thead - thead clone for sizing\n\t\t * tbody - tbody\n\t\t * div - scroll foot\n\t\t * div - scroll foot inner\n\t\t * table - scroll foot table\n\t\t * tfoot - tfoot\n\t\t */\n\t\tvar scroller = $( _div, { 'class': classes.sScrollWrapper } )\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollHead } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollHeadInner } )\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t'box-sizing': 'content-box',\n\t\t\t\t\t\t\t\twidth: scroll.sXInner || '100%'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\theaderClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'top' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('thead')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollBody } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t\theight: size( scrollY ),\n\t\t\t\t\t\twidth: size( scrollX )\n\t\t\t\t\t} )\n\t\t\t\t\t.append( table )\n\t\t\t);\n\t\n\t\tif ( footer ) {\n\t\t\tscroller.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollFoot } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollFootInner } )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\tfooterClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'bottom' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('tfoot')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\n\t\tvar children = scroller.children();\n\t\tvar scrollHead = children[0];\n\t\tvar scrollBody = children[1];\n\t\tvar scrollFoot = footer ? children[2] : null;\n\t\n\t\t// When the body is scrolled, then we also want to scroll the headers\n\t\tif ( scrollX ) {\n\t\t\t$(scrollBody).scroll( function (e) {\n\t\t\t\tvar scrollLeft = this.scrollLeft;\n\t\n\t\t\t\tscrollHead.scrollLeft = scrollLeft;\n\t\n\t\t\t\tif ( footer ) {\n\t\t\t\t\tscrollFoot.scrollLeft = scrollLeft;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\n\t\tsettings.nScrollHead = scrollHead;\n\t\tsettings.nScrollBody = scrollBody;\n\t\tsettings.nScrollFoot = scrollFoot;\n\t\n\t\t// On redraw - align columns\n\t\tsettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\"sName\": \"scrolling\"\n\t\t} );\n\t\n\t\treturn scroller[0];\n\t}\n\t\n\t\n\t\n\t/**\n\t * Update the header, footer and body tables for resizing - i.e. column\n\t * alignment.\n\t *\n\t * Welcome to the most horrible function DataTables. The process that this\n\t * function follows is basically:\n\t * 1. Re-create the table inside the scrolling div\n\t * 2. Take live measurements from the DOM\n\t * 3. Apply the measurements to align the columns\n\t * 4. Clean up\n\t *\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnScrollDraw ( settings )\n\t{\n\t\t// Given that this is such a monster function, a lot of variables are use\n\t\t// to try and keep the minimised size as small as possible\n\t\tvar\n\t\t\tscroll = settings.oScroll,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tscrollY = scroll.sY,\n\t\t\tbarWidth = scroll.iBarWidth,\n\t\t\tdivHeader = $(settings.nScrollHead),\n\t\t\tdivHeaderStyle = divHeader[0].style,\n\t\t\tdivHeaderInner = divHeader.children('div'),\n\t\t\tdivHeaderInnerStyle = divHeaderInner[0].style,\n\t\t\tdivHeaderTable = divHeaderInner.children('table'),\n\t\t\tdivBodyEl = settings.nScrollBody,\n\t\t\tdivBody = $(divBodyEl),\n\t\t\tdivBodyStyle = divBodyEl.style,\n\t\t\tdivFooter = $(settings.nScrollFoot),\n\t\t\tdivFooterInner = divFooter.children('div'),\n\t\t\tdivFooterTable = divFooterInner.children('table'),\n\t\t\theader = $(settings.nTHead),\n\t\t\ttable = $(settings.nTable),\n\t\t\ttableEl = table[0],\n\t\t\ttableStyle = tableEl.style,\n\t\t\tfooter = settings.nTFoot ? $(settings.nTFoot) : null,\n\t\t\tbrowser = settings.oBrowser,\n\t\t\tie67 = browser.bScrollOversize,\n\t\t\theaderTrgEls, footerTrgEls,\n\t\t\theaderSrcEls, footerSrcEls,\n\t\t\theaderCopy, footerCopy,\n\t\t\theaderWidths=[], footerWidths=[],\n\t\t\theaderContent=[],\n\t\t\tidx, correction, sanityWidth,\n\t\t\tzeroOut = function(nSizer) {\n\t\t\t\tvar style = nSizer.style;\n\t\t\t\tstyle.paddingTop = \"0\";\n\t\t\t\tstyle.paddingBottom = \"0\";\n\t\t\t\tstyle.borderTopWidth = \"0\";\n\t\t\t\tstyle.borderBottomWidth = \"0\";\n\t\t\t\tstyle.height = 0;\n\t\t\t};\n\t\n\t\t/*\n\t\t * 1. Re-create the table inside the scrolling div\n\t\t */\n\t\n\t\t// Remove the old minimised thead and tfoot elements in the inner table\n\t\ttable.children('thead, tfoot').remove();\n\t\n\t\t// Clone the current header and footer elements and then place it into the inner table\n\t\theaderCopy = header.clone().prependTo( table );\n\t\theaderTrgEls = header.find('tr'); // original header is in its own table\n\t\theaderSrcEls = headerCopy.find('tr');\n\t\theaderCopy.find('th, td').removeAttr('tabindex');\n\t\n\t\tif ( footer ) {\n\t\t\tfooterCopy = footer.clone().prependTo( table );\n\t\t\tfooterTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized\n\t\t\tfooterSrcEls = footerCopy.find('tr');\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t */\n\t\n\t\t// Remove old sizing and apply the calculated column widths\n\t\t// Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t// calculated sizes to this header\n\t\tif ( ! scrollX )\n\t\t{\n\t\t\tdivBodyStyle.width = '100%';\n\t\t\tdivHeader[0].style.width = '100%';\n\t\t}\n\t\n\t\t$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {\n\t\t\tidx = _fnVisibleToColumnIndex( settings, i );\n\t\t\tel.style.width = settings.aoColumns[idx].sWidth;\n\t\t} );\n\t\n\t\tif ( footer ) {\n\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\tn.style.width = \"\";\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// If scroll collapse is enabled, when we put the headers back into the body for sizing, we\n\t\t// will end up forcing the scrollbar to appear, making our measurements wrong for when we\n\t\t// then hide it (end of this function), so add the header height to the body scroller.\n\t\tif ( scroll.bCollapse && scrollY !== \"\" ) {\n\t\t\tdivBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+\"px\";\n\t\t}\n\t\n\t\t// Size the table as a whole\n\t\tsanityWidth = table.outerWidth();\n\t\tif ( scrollX === \"\" ) {\n\t\t\t// No x scrolling\n\t\t\ttableStyle.width = \"100%\";\n\t\n\t\t\t// IE7 will make the width of the table when 100% include the scrollbar\n\t\t\t// - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t// into account.\n\t\t\tif ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// x scrolling\n\t\t\tif ( scrollXInner !== \"\" ) {\n\t\t\t\t// x scroll inner has been given - use it\n\t\t\t\ttableStyle.width = _fnStringToCss(scrollXInner);\n\t\t\t}\n\t\t\telse if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) {\n\t\t\t\t// There is y-scrolling - try to take account of the y scroll bar\n\t\t\t\ttableStyle.width = _fnStringToCss( sanityWidth-barWidth );\n\t\t\t\tif ( table.outerWidth() > sanityWidth-barWidth ) {\n\t\t\t\t\t// Not possible to take account of it\n\t\t\t\t\ttableStyle.width = _fnStringToCss( sanityWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// When all else fails\n\t\t\t\ttableStyle.width = _fnStringToCss( sanityWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t// Recalculate the sanity width - now that we've applied the required width,\n\t\t// before it was a temporary variable. This is required because the column\n\t\t// width calculation is done before this table DOM is created.\n\t\tsanityWidth = table.outerWidth();\n\t\n\t\t// Hidden header should have zero height, so remove padding and borders. Then\n\t\t// set the width based on the real headers\n\t\n\t\t// Apply all styles in one pass\n\t\t_fnApplyToChildren( zeroOut, headerSrcEls );\n\t\n\t\t// Read all widths in next pass\n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\theaderContent.push( nSizer.innerHTML );\n\t\t\theaderWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t}, headerSrcEls );\n\t\n\t\t// Apply all widths in final pass\n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\tnToSize.style.width = headerWidths[i];\n\t\t}, headerTrgEls );\n\t\n\t\t$(headerSrcEls).height(0);\n\t\n\t\t/* Same again with the footer if we have one */\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( zeroOut, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\tfooterWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t\t}, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = footerWidths[i];\n\t\t\t}, footerTrgEls );\n\t\n\t\t\t$(footerSrcEls).height(0);\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 3. Apply the measurements\n\t\t */\n\t\n\t\t// \"Hide\" the header and footer that we used for the sizing. We need to keep\n\t\t// the content of the cell so that the width applied to the header and body\n\t\t// both match, but we want to hide it completely. We want to also fix their\n\t\t// width to what they currently are\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\" style=\"height:0;overflow:hidden;\">'+headerContent[i]+'</div>';\n\t\t\tnSizer.style.width = headerWidths[i];\n\t\t}, headerSrcEls );\n\t\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\tnSizer.style.width = footerWidths[i];\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t// misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\tif ( table.outerWidth() < sanityWidth )\n\t\t{\n\t\t\t// The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\tcorrection = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\tsanityWidth+barWidth :\n\t\t\t\t\tsanityWidth;\n\t\n\t\t\t// IE6/7 are a law unto themselves...\n\t\t\tif ( ie67 && (divBodyEl.scrollHeight >\n\t\t\t\tdivBodyEl.offsetHeight || divBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( correction-barWidth );\n\t\t\t}\n\t\n\t\t\t// And give the user a warning that we've stopped the table getting too small\n\t\t\tif ( scrollX === \"\" || scrollXInner !== \"\" ) {\n\t\t\t\t_fnLog( settings, 1, 'Possible column misalignment', 6 );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcorrection = '100%';\n\t\t}\n\t\n\t\t// Apply to the container elements\n\t\tdivBodyStyle.width = _fnStringToCss( correction );\n\t\tdivHeaderStyle.width = _fnStringToCss( correction );\n\t\n\t\tif ( footer ) {\n\t\t\tsettings.nScrollFoot.style.width = _fnStringToCss( correction );\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 4. Clean up\n\t\t */\n\t\tif ( ! scrollY ) {\n\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t */\n\t\t\tif ( ie67 ) {\n\t\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );\n\t\t\t}\n\t\t}\n\t\n\t\tif ( scrollY && scroll.bCollapse ) {\n\t\t\tdivBodyStyle.height = _fnStringToCss( scrollY );\n\t\n\t\t\tvar iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ?\n\t\t\t\tbarWidth :\n\t\t\t\t0;\n\t\n\t\t\tif ( tableEl.offsetHeight < divBodyEl.offsetHeight ) {\n\t\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Finally set the width's of the header and footer tables */\n\t\tvar iOuterWidth = table.outerWidth();\n\t\tdivHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\tdivHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );\n\t\n\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\tvar bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == \"scroll\";\n\t\tvar padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );\n\t\tdivHeaderInnerStyle[ padding ] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\n\t\tif ( footer ) {\n\t\t\tdivFooterTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style[padding] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\t}\n\t\n\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\tdivBody.scroll();\n\t\n\t\t// If sorting or filtering has occurred, jump the scrolling back to the top\n\t\t// only if we aren't holding the position\n\t\tif ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {\n\t\t\tdivBodyEl.scrollTop = 0;\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Apply a given function to the display child nodes of an element array (typically\n\t * TD children of TR rows\n\t * @param {function} fn Method to apply to the objects\n\t * @param array {nodes} an1 List of elements to look through for display children\n\t * @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t{\n\t\tvar index=0, i=0, iLen=an1.length;\n\t\tvar nNode1, nNode2;\n\t\n\t\twhile ( i < iLen ) {\n\t\t\tnNode1 = an1[i].firstChild;\n\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\n\t\t\twhile ( nNode1 ) {\n\t\t\t\tif ( nNode1.nodeType === 1 ) {\n\t\t\t\t\tif ( an2 ) {\n\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\n\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t}\n\t}\n\t\n\t\n\t\n\tvar __re_html_remove = /<.*?>/g;\n\t\n\t\n\t/**\n\t * Calculate the width of columns for the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCalculateColumnWidths ( oSettings )\n\t{\n\t\tvar\n\t\t\ttable = oSettings.nTable,\n\t\t\tcolumns = oSettings.aoColumns,\n\t\t\tscroll = oSettings.oScroll,\n\t\t\tscrollY = scroll.sY,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tcolumnCount = columns.length,\n\t\t\tvisibleColumns = _fnGetColumns( oSettings, 'bVisible' ),\n\t\t\theaderCells = $('th', oSettings.nTHead),\n\t\t\ttableWidthAttr = table.getAttribute('width'),\n\t\t\ttableContainer = table.parentNode,\n\t\t\tuserInputs = false,\n\t\t\ti, column, columnIdx, width, outerWidth;\n\t\n\t\t/* Convert any user input sizes into pixel sizes */\n\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\tif ( column.sWidth !== null ) {\n\t\t\t\tcolumn.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );\n\t\n\t\t\t\tuserInputs = true;\n\t\t\t}\n\t\t}\n\t\n\t\t/* If the number of columns in the DOM equals the number that we have to\n\t\t * process in DataTables, then we can use the offsets that are created by\n\t\t * the web- browser. No custom sizes can be set in order for this to happen,\n\t\t * nor scrolling used\n\t\t */\n\t\tif ( ! userInputs && ! scrollX && ! scrollY &&\n\t\t columnCount == _fnVisbleColumns( oSettings ) &&\n\t\t\tcolumnCount == headerCells.length\n\t\t) {\n\t\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\t\tcolumns[i].sWidth = _fnStringToCss( headerCells.eq(i).width() );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Otherwise construct a single row table with the widest node in the\n\t\t\t// data, assign any user defined widths, then insert it into the DOM and\n\t\t\t// allow the browser to do all the hard work of calculating table widths\n\t\t\tvar tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table\n\t\t\t\t.empty()\n\t\t\t\t.css( 'visibility', 'hidden' )\n\t\t\t\t.removeAttr( 'id' )\n\t\t\t\t.append( $(oSettings.nTHead).clone( false ) )\n\t\t\t\t.append( $(oSettings.nTFoot).clone( false ) )\n\t\t\t\t.append( $('<tbody><tr/></tbody>') );\n\t\n\t\t\t// Remove any assigned widths from the footer (from scrolling)\n\t\t\ttmpTable.find('tfoot th, tfoot td').css('width', '');\n\t\n\t\t\tvar tr = tmpTable.find( 'tbody tr' );\n\t\n\t\t\t// Apply custom sizing to the cloned header\n\t\t\theaderCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );\n\t\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\t\theaderCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?\n\t\t\t\t\t_fnStringToCss( column.sWidthOrig ) :\n\t\t\t\t\t'';\n\t\t\t}\n\t\n\t\t\t// Find the widest cell for each column and put it into the table\n\t\t\tif ( oSettings.aoData.length ) {\n\t\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\t\tcolumnIdx = visibleColumns[i];\n\t\t\t\t\tcolumn = columns[ columnIdx ];\n\t\n\t\t\t\t\t$( _fnGetWidestNode( oSettings, columnIdx ) )\n\t\t\t\t\t\t.clone( false )\n\t\t\t\t\t\t.append( column.sContentPadding )\n\t\t\t\t\t\t.appendTo( tr );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Table has been built, attach to the document so we can work with it\n\t\t\ttmpTable.appendTo( tableContainer );\n\t\n\t\t\t// When scrolling (X or Y) we want to set the width of the table as \n\t\t\t// appropriate. However, when not scrolling leave the table width as it\n\t\t\t// is. This results in slightly different, but I think correct behaviour\n\t\t\tif ( scrollX && scrollXInner ) {\n\t\t\t\ttmpTable.width( scrollXInner );\n\t\t\t}\n\t\t\telse if ( scrollX ) {\n\t\t\t\ttmpTable.css( 'width', 'auto' );\n\t\n\t\t\t\tif ( tmpTable.width() < tableContainer.offsetWidth ) {\n\t\t\t\t\ttmpTable.width( tableContainer.offsetWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( scrollY ) {\n\t\t\t\ttmpTable.width( tableContainer.offsetWidth );\n\t\t\t}\n\t\t\telse if ( tableWidthAttr ) {\n\t\t\t\ttmpTable.width( tableWidthAttr );\n\t\t\t}\n\t\n\t\t\t// Take into account the y scrollbar\n\t\t\t_fnScrollingWidthAdjust( oSettings, tmpTable[0] );\n\t\n\t\t\t// Browsers need a bit of a hand when a width is assigned to any columns\n\t\t\t// when x-scrolling as they tend to collapse the table to the min-width,\n\t\t\t// even if we sent the column widths. So we need to keep track of what\n\t\t\t// the table width should be by summing the user given values, and the\n\t\t\t// automatic values\n\t\t\tif ( scrollX )\n\t\t\t{\n\t\t\t\tvar total = 0;\n\t\n\t\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\t\t\t\touterWidth = $(headerCells[i]).outerWidth();\n\t\n\t\t\t\t\ttotal += column.sWidthOrig === null ?\n\t\t\t\t\t\touterWidth :\n\t\t\t\t\t\tparseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width();\n\t\t\t\t}\n\t\n\t\t\t\ttmpTable.width( _fnStringToCss( total ) );\n\t\t\t\ttable.style.width = _fnStringToCss( total );\n\t\t\t}\n\t\n\t\t\t// Get the width of each column in the constructed table\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\t\t\twidth = $(headerCells[i]).width();\n\t\n\t\t\t\tif ( width ) {\n\t\t\t\t\tcolumn.sWidth = _fnStringToCss( width );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\ttable.style.width = _fnStringToCss( tmpTable.css('width') );\n\t\n\t\t\t// Finished with the table - ditch it\n\t\t\ttmpTable.remove();\n\t\t}\n\t\n\t\t// If there is a width attr, we want to attach an event listener which\n\t\t// allows the table sizing to automatically adjust when the window is\n\t\t// resized. Use the width attr rather than CSS, since we can't know if the\n\t\t// CSS is a relative value or absolute - DOM read is always px.\n\t\tif ( tableWidthAttr ) {\n\t\t\ttable.style.width = _fnStringToCss( tableWidthAttr );\n\t\t}\n\t\n\t\tif ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {\n\t\t\t$(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t} ) );\n\t\n\t\t\toSettings._reszEvt = true;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Throttle the calls to a function. Arguments and context are maintained for\n\t * the throttled function\n\t * @param {function} fn Function to be called\n\t * @param {int} [freq=200] call frequency in mS\n\t * @returns {function} wrapped function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnThrottle( fn, freq ) {\n\t\tvar\n\t\t\tfrequency = freq !== undefined ? freq : 200,\n\t\t\tlast,\n\t\t\ttimer;\n\t\n\t\treturn function () {\n\t\t\tvar\n\t\t\t\tthat = this,\n\t\t\t\tnow = +new Date(),\n\t\t\t\targs = arguments;\n\t\n\t\t\tif ( last && now < last + frequency ) {\n\t\t\t\tclearTimeout( timer );\n\t\n\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\tlast = undefined;\n\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t}, frequency );\n\t\t\t}\n\t\t\telse if ( last ) {\n\t\t\t\tlast = now;\n\t\t\t\tfn.apply( that, args );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlast = now;\n\t\t\t}\n\t\t};\n\t}\n\t\n\t\n\t/**\n\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t * @param {string} width width to be converted\n\t * @param {node} parent parent to get the with for (required for relative widths) - optional\n\t * @returns {int} width in pixels\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnConvertToWidth ( width, parent )\n\t{\n\t\tif ( ! width ) {\n\t\t\treturn 0;\n\t\t}\n\t\n\t\tvar n = $('<div/>')\n\t\t\t.css( 'width', _fnStringToCss( width ) )\n\t\t\t.appendTo( parent || document.body );\n\t\n\t\tvar val = n[0].offsetWidth;\n\t\tn.remove();\n\t\n\t\treturn val;\n\t}\n\t\n\t\n\t/**\n\t * Adjust a table's width to take account of vertical scroll bar\n\t * @param {object} oSettings dataTables settings object\n\t * @param {node} n table node\n\t * @memberof DataTable#oApi\n\t */\n\t\n\tfunction _fnScrollingWidthAdjust ( settings, n )\n\t{\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( scroll.sX || scroll.sY ) {\n\t\t\t// When y-scrolling only, we want to remove the width of the scroll bar\n\t\t\t// so the table + scroll bar will fit into the area available, otherwise\n\t\t\t// we fix the table at its current size with no adjustment\n\t\t\tvar correction = ! scroll.sX ? scroll.iBarWidth : 0;\n\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth() - correction );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Get the widest node\n\t * @param {object} settings dataTables settings object\n\t * @param {int} colIdx column of interest\n\t * @returns {node} widest table node\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetWidestNode( settings, colIdx )\n\t{\n\t\tvar idx = _fnGetMaxLenString( settings, colIdx );\n\t\tif ( idx < 0 ) {\n\t\t\treturn null;\n\t\t}\n\t\n\t\tvar data = settings.aoData[ idx ];\n\t\treturn ! data.nTr ? // Might not have been created when deferred rendering\n\t\t\t$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :\n\t\t\tdata.anCells[ colIdx ];\n\t}\n\t\n\t\n\t/**\n\t * Get the maximum strlen for each data column\n\t * @param {object} settings dataTables settings object\n\t * @param {int} colIdx column of interest\n\t * @returns {string} max string length for each column\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetMaxLenString( settings, colIdx )\n\t{\n\t\tvar s, max=-1, maxIdx = -1;\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\ts = _fnGetCellData( settings, i, colIdx, 'display' )+'';\n\t\t\ts = s.replace( __re_html_remove, '' );\n\t\n\t\t\tif ( s.length > max ) {\n\t\t\t\tmax = s.length;\n\t\t\t\tmaxIdx = i;\n\t\t\t}\n\t\t}\n\t\n\t\treturn maxIdx;\n\t}\n\t\n\t\n\t/**\n\t * Append a CSS unit (only if required) to a string\n\t * @param {string} value to css-ify\n\t * @returns {string} value with css unit\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnStringToCss( s )\n\t{\n\t\tif ( s === null ) {\n\t\t\treturn '0px';\n\t\t}\n\t\n\t\tif ( typeof s == 'number' ) {\n\t\t\treturn s < 0 ?\n\t\t\t\t'0px' :\n\t\t\t\ts+'px';\n\t\t}\n\t\n\t\t// Check it has a unit character already\n\t\treturn s.match(/\\d$/) ?\n\t\t\ts+'px' :\n\t\t\ts;\n\t}\n\t\n\t\n\t/**\n\t * Get the width of a scroll bar in this browser being used\n\t * @returns {int} width in pixels\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnScrollBarWidth ()\n\t{\n\t\t// On first run a static variable is set, since this is only needed once.\n\t\t// Subsequent runs will just use the previously calculated value\n\t\tif ( ! DataTable.__scrollbarWidth ) {\n\t\t\tvar inner = $('<p/>').css( {\n\t\t\t\twidth: '100%',\n\t\t\t\theight: 200,\n\t\t\t\tpadding: 0\n\t\t\t} )[0];\n\t\n\t\t\tvar outer = $('<div/>')\n\t\t\t\t.css( {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\twidth: 200,\n\t\t\t\t\theight: 150,\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tvisibility: 'hidden'\n\t\t\t\t} )\n\t\t\t\t.append( inner )\n\t\t\t\t.appendTo( 'body' );\n\t\n\t\t\tvar w1 = inner.offsetWidth;\n\t\t\touter.css( 'overflow', 'scroll' );\n\t\t\tvar w2 = inner.offsetWidth;\n\t\n\t\t\tif ( w1 === w2 ) {\n\t\t\t\tw2 = outer[0].clientWidth;\n\t\t\t}\n\t\n\t\t\touter.remove();\n\t\n\t\t\tDataTable.__scrollbarWidth = w1 - w2;\n\t\t}\n\t\n\t\treturn DataTable.__scrollbarWidth;\n\t}\n\t\n\t\n\t\n\tfunction _fnSortFlatten ( settings )\n\t{\n\t\tvar\n\t\t\ti, iLen, k, kLen,\n\t\t\taSort = [],\n\t\t\taiOrig = [],\n\t\t\taoColumns = settings.aoColumns,\n\t\t\taDataSort, iCol, sType, srcCol,\n\t\t\tfixed = settings.aaSortingFixed,\n\t\t\tfixedObj = $.isPlainObject( fixed ),\n\t\t\tnestedSort = [],\n\t\t\tadd = function ( a ) {\n\t\t\t\tif ( a.length && ! $.isArray( a[0] ) ) {\n\t\t\t\t\t// 1D array\n\t\t\t\t\tnestedSort.push( a );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// 2D array\n\t\t\t\t\tnestedSort.push.apply( nestedSort, a );\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t// Build the sort array, with pre-fix and post-fix options if they have been\n\t\t// specified\n\t\tif ( $.isArray( fixed ) ) {\n\t\t\tadd( fixed );\n\t\t}\n\t\n\t\tif ( fixedObj && fixed.pre ) {\n\t\t\tadd( fixed.pre );\n\t\t}\n\t\n\t\tadd( settings.aaSorting );\n\t\n\t\tif (fixedObj && fixed.post ) {\n\t\t\tadd( fixed.post );\n\t\t}\n\t\n\t\tfor ( i=0 ; i<nestedSort.length ; i++ )\n\t\t{\n\t\t\tsrcCol = nestedSort[i][0];\n\t\t\taDataSort = aoColumns[ srcCol ].aDataSort;\n\t\n\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t{\n\t\t\t\tiCol = aDataSort[k];\n\t\t\t\tsType = aoColumns[ iCol ].sType || 'string';\n\t\n\t\t\t\tif ( nestedSort[i]._idx === undefined ) {\n\t\t\t\t\tnestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting );\n\t\t\t\t}\n\t\n\t\t\t\taSort.push( {\n\t\t\t\t\tsrc: srcCol,\n\t\t\t\t\tcol: iCol,\n\t\t\t\t\tdir: nestedSort[i][1],\n\t\t\t\t\tindex: nestedSort[i]._idx,\n\t\t\t\t\ttype: sType,\n\t\t\t\t\tformatter: DataTable.ext.type.order[ sType+\"-pre\" ]\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\treturn aSort;\n\t}\n\t\n\t/**\n\t * Change the order of the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t * @todo This really needs split up!\n\t */\n\tfunction _fnSort ( oSettings )\n\t{\n\t\tvar\n\t\t\ti, ien, iLen, j, jLen, k, kLen,\n\t\t\tsDataType, nTh,\n\t\t\taiOrig = [],\n\t\t\toExtSort = DataTable.ext.type.order,\n\t\t\taoData = oSettings.aoData,\n\t\t\taoColumns = oSettings.aoColumns,\n\t\t\taDataSort, data, iCol, sType, oSort,\n\t\t\tformatters = 0,\n\t\t\tsortCol,\n\t\t\tdisplayMaster = oSettings.aiDisplayMaster,\n\t\t\taSort;\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo Can this be moved into a 'data-ready' handler which is called when\n\t\t// data is going to be used in the table?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\taSort = _fnSortFlatten( oSettings );\n\t\n\t\tfor ( i=0, ien=aSort.length ; i<ien ; i++ ) {\n\t\t\tsortCol = aSort[i];\n\t\n\t\t\t// Track if we can use the fast sort algorithm\n\t\t\tif ( sortCol.formatter ) {\n\t\t\t\tformatters++;\n\t\t\t}\n\t\n\t\t\t// Load the data needed for the sort, for each cell\n\t\t\t_fnSortData( oSettings, sortCol.col );\n\t\t}\n\t\n\t\t/* No sorting required if server-side or no sorting array */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )\n\t\t{\n\t\t\t// Create a value - key array of the current row positions such that we can use their\n\t\t\t// current position during the sort, if values match, in order to perform stable sorting\n\t\t\tfor ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {\n\t\t\t\taiOrig[ displayMaster[i] ] = i;\n\t\t\t}\n\t\n\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t * fnLocalSorting = function(a,b){\n\t\t\t * var iTest;\n\t\t\t * iTest = oSort['string-asc']('data11', 'data12');\n\t\t\t * if (iTest !== 0)\n\t\t\t * return iTest;\n\t\t\t * iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t * if (iTest !== 0)\n\t\t\t * return iTest;\n\t\t\t * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t * }\n\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row\n\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t *\n\t\t\t * Note - I know it seems excessive to have two sorting methods, but the first is around\n\t\t\t * 15% faster, so the second is only maintained for backwards compatibility with sorting\n\t\t\t * methods which do not have a pre-sort formatting function.\n\t\t\t */\n\t\t\tif ( formatters === aSort.length ) {\n\t\t\t\t// All sort types have formatting functions\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, test, sort,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\ttest = x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn sort.dir === 'asc' ? test : -test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Depreciated - remove in 1.11 (providing a plug-in option)\n\t\t\t\t// Not all sort types have formatting methods, so we have to call their sorting\n\t\t\t\t// methods.\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, l, test, sort, fn,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\tfn = oExtSort[ sort.type+\"-\"+sort.dir ] || oExtSort[ \"string-\"+sort.dir ];\n\t\t\t\t\t\ttest = fn( x, y );\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Tell the draw function that we have sorted the data */\n\t\toSettings.bSorted = true;\n\t}\n\t\n\t\n\tfunction _fnSortAria ( settings )\n\t{\n\t\tvar label;\n\t\tvar nextSort;\n\t\tvar columns = settings.aoColumns;\n\t\tvar aSort = _fnSortFlatten( settings );\n\t\tvar oAria = settings.oLanguage.oAria;\n\t\n\t\t// ARIA attributes - need to loop all columns, to update all (removing old\n\t\t// attributes as needed)\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar col = columns[i];\n\t\t\tvar asSorting = col.asSorting;\n\t\t\tvar sTitle = col.sTitle.replace( /<.*?>/g, \"\" );\n\t\t\tvar th = col.nTh;\n\t\n\t\t\t// IE7 is throwing an error when setting these properties with jQuery's\n\t\t\t// attr() and removeAttr() methods...\n\t\t\tth.removeAttribute('aria-sort');\n\t\n\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\tif ( col.bSortable ) {\n\t\t\t\tif ( aSort.length > 0 && aSort[0].col == i ) {\n\t\t\t\t\tth.setAttribute('aria-sort', aSort[0].dir==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\tnextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnextSort = asSorting[0];\n\t\t\t\t}\n\t\n\t\t\t\tlabel = sTitle + ( nextSort === \"asc\" ?\n\t\t\t\t\toAria.sSortAscending :\n\t\t\t\t\toAria.sSortDescending\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlabel = sTitle;\n\t\t\t}\n\t\n\t\t\tth.setAttribute('aria-label', label);\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Function to run on user sort request\n\t * @param {object} settings dataTables settings object\n\t * @param {node} attachTo node to attach the handler to\n\t * @param {int} colIdx column sorting index\n\t * @param {boolean} [append=false] Append the requested sort to the existing\n\t * sort if true (i.e. multi-column sort)\n\t * @param {function} [callback] callback function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortListener ( settings, colIdx, append, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\tvar sorting = settings.aaSorting;\n\t\tvar asSorting = col.asSorting;\n\t\tvar nextSortIdx;\n\t\tvar next = function ( a, overflow ) {\n\t\t\tvar idx = a._idx;\n\t\t\tif ( idx === undefined ) {\n\t\t\t\tidx = $.inArray( a[1], asSorting );\n\t\t\t}\n\t\n\t\t\treturn idx+1 < asSorting.length ?\n\t\t\t\tidx+1 :\n\t\t\t\toverflow ?\n\t\t\t\t\tnull :\n\t\t\t\t\t0;\n\t\t};\n\t\n\t\t// Convert to 2D array if needed\n\t\tif ( typeof sorting[0] === 'number' ) {\n\t\t\tsorting = settings.aaSorting = [ sorting ];\n\t\t}\n\t\n\t\t// If appending the sort then we are multi-column sorting\n\t\tif ( append && settings.oFeatures.bSortMulti ) {\n\t\t\t// Are we already doing some kind of sort on this column?\n\t\t\tvar sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );\n\t\n\t\t\tif ( sortIdx !== -1 ) {\n\t\t\t\t// Yes, modify the sort\n\t\t\t\tnextSortIdx = next( sorting[sortIdx], true );\n\t\n\t\t\t\tif ( nextSortIdx === null ) {\n\t\t\t\t\tsorting.splice( sortIdx, 1 );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsorting[sortIdx][1] = asSorting[ nextSortIdx ];\n\t\t\t\t\tsorting[sortIdx]._idx = nextSortIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// No sort on this column yet\n\t\t\t\tsorting.push( [ colIdx, asSorting[0], 0 ] );\n\t\t\t\tsorting[sorting.length-1]._idx = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( sorting.length && sorting[0][0] == colIdx ) {\n\t\t\t// Single column - already sorting on this column, modify the sort\n\t\t\tnextSortIdx = next( sorting[0] );\n\t\n\t\t\tsorting.length = 1;\n\t\t\tsorting[0][1] = asSorting[ nextSortIdx ];\n\t\t\tsorting[0]._idx = nextSortIdx;\n\t\t}\n\t\telse {\n\t\t\t// Single column - sort only on this column\n\t\t\tsorting.length = 0;\n\t\t\tsorting.push( [ colIdx, asSorting[0] ] );\n\t\t\tsorting[0]._idx = 0;\n\t\t}\n\t\n\t\t// Run the sort by calling a full redraw\n\t\t_fnReDraw( settings );\n\t\n\t\t// callback used for async user interaction\n\t\tif ( typeof callback == 'function' ) {\n\t\t\tcallback( settings );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Attach a sort handler (click) to a node\n\t * @param {object} settings dataTables settings object\n\t * @param {node} attachTo node to attach the handler to\n\t * @param {int} colIdx column sorting index\n\t * @param {function} [callback] callback function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortAttachListener ( settings, attachTo, colIdx, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\n\t\t_fnBindAction( attachTo, {}, function (e) {\n\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\tif ( col.bSortable === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If processing is enabled use a timeout to allow the processing\n\t\t\t// display to be shown - otherwise to it synchronously\n\t\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\n\t\t\t\t\t// In server-side processing, the draw callback will remove the\n\t\t\t\t\t// processing display\n\t\t\t\t\tif ( _fnDataSource( settings ) !== 'ssp' ) {\n\t\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t}\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Set the sorting classes on table's body, Note: it is safe to call this function\n\t * when bSort and bSortClasses are false\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortingClasses( settings )\n\t{\n\t\tvar oldSort = settings.aLastSort;\n\t\tvar sortClass = settings.oClasses.sSortColumn;\n\t\tvar sort = _fnSortFlatten( settings );\n\t\tvar features = settings.oFeatures;\n\t\tvar i, ien, colIdx;\n\t\n\t\tif ( features.bSort && features.bSortClasses ) {\n\t\t\t// Remove old sorting classes\n\t\t\tfor ( i=0, ien=oldSort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = oldSort[i].src;\n\t\n\t\t\t\t// Remove column sorting\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.removeClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\n\t\t\t// Add new column sorting\n\t\t\tfor ( i=0, ien=sort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = sort[i].src;\n\t\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.addClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\t}\n\t\n\t\tsettings.aLastSort = sort;\n\t}\n\t\n\t\n\t// Get the data to sort a column, be it from cache, fresh (populating the\n\t// cache), or from a sort formatter\n\tfunction _fnSortData( settings, idx )\n\t{\n\t\t// Custom sorting function - provided by the sort data type\n\t\tvar column = settings.aoColumns[ idx ];\n\t\tvar customSort = DataTable.ext.order[ column.sSortDataType ];\n\t\tvar customData;\n\t\n\t\tif ( customSort ) {\n\t\t\tcustomData = customSort.call( settings.oInstance, settings, idx,\n\t\t\t\t_fnColumnIndexToVisible( settings, idx )\n\t\t\t);\n\t\t}\n\t\n\t\t// Use / populate cache\n\t\tvar row, cellData;\n\t\tvar formatter = DataTable.ext.type.order[ column.sType+\"-pre\" ];\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aSortData ) {\n\t\t\t\trow._aSortData = [];\n\t\t\t}\n\t\n\t\t\tif ( ! row._aSortData[idx] || customSort ) {\n\t\t\t\tcellData = customSort ?\n\t\t\t\t\tcustomData[i] : // If there was a custom sort function, use data from there\n\t\t\t\t\t_fnGetCellData( settings, i, idx, 'sort' );\n\t\n\t\t\t\trow._aSortData[ idx ] = formatter ?\n\t\t\t\t\tformatter( cellData ) :\n\t\t\t\t\tcellData;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Save the state of a table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSaveState ( settings )\n\t{\n\t\tif ( !settings.oFeatures.bStateSave || settings.bDestroying )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Store the interesting variables */\n\t\tvar state = {\n\t\t\ttime: +new Date(),\n\t\t\tstart: settings._iDisplayStart,\n\t\t\tlength: settings._iDisplayLength,\n\t\t\torder: $.extend( true, [], settings.aaSorting ),\n\t\t\tsearch: _fnSearchToCamel( settings.oPreviousSearch ),\n\t\t\tcolumns: $.map( settings.aoColumns, function ( col, i ) {\n\t\t\t\treturn {\n\t\t\t\t\tvisible: col.bVisible,\n\t\t\t\t\tsearch: _fnSearchToCamel( settings.aoPreSearchCols[i] )\n\t\t\t\t};\n\t\t\t} )\n\t\t};\n\t\n\t\t_fnCallbackFire( settings, \"aoStateSaveParams\", 'stateSaveParams', [settings, state] );\n\t\n\t\tsettings.oSavedState = state;\n\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, state );\n\t}\n\t\n\t\n\t/**\n\t * Attempt to load a saved table state\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} oInit DataTables init object so we can override settings\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnLoadState ( settings, oInit )\n\t{\n\t\tvar i, ien;\n\t\tvar columns = settings.aoColumns;\n\t\n\t\tif ( ! settings.oFeatures.bStateSave ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar state = settings.fnStateLoadCallback.call( settings.oInstance, settings );\n\t\tif ( ! state || ! state.time ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t * cancelling of loading by returning false\n\t\t */\n\t\tvar abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, state] );\n\t\tif ( $.inArray( false, abStateLoad ) !== -1 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Reject old data */\n\t\tvar duration = settings.iStateDuration;\n\t\tif ( duration > 0 && state.time < +new Date() - (duration*1000) ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Number of columns have changed - all bets are off, no restore of settings\n\t\tif ( columns.length !== state.columns.length ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Store the saved state so it might be accessed at any time\n\t\tsettings.oLoadedState = $.extend( true, {}, state );\n\t\n\t\t// Restore key features - todo - for 1.11 this needs to be done by\n\t\t// subscribed events\n\t\tsettings._iDisplayStart = state.start;\n\t\tsettings.iInitDisplayStart = state.start;\n\t\tsettings._iDisplayLength = state.length;\n\t\tsettings.aaSorting = [];\n\t\n\t\t// Order\n\t\t$.each( state.order, function ( i, col ) {\n\t\t\tsettings.aaSorting.push( col[0] >= columns.length ?\n\t\t\t\t[ 0, col[1] ] :\n\t\t\t\tcol\n\t\t\t);\n\t\t} );\n\t\n\t\t// Search\n\t\t$.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) );\n\t\n\t\t// Columns\n\t\tfor ( i=0, ien=state.columns.length ; i<ien ; i++ ) {\n\t\t\tvar col = state.columns[i];\n\t\n\t\t\t// Visibility\n\t\t\tcolumns[i].bVisible = col.visible;\n\t\n\t\t\t// Search\n\t\t\t$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] );\n\t}\n\t\n\t\n\t/**\n\t * Return the settings object for a particular table\n\t * @param {node} table table we are using as a dataTable\n\t * @returns {object} Settings object - or null if not found\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSettingsFromNode ( table )\n\t{\n\t\tvar settings = DataTable.settings;\n\t\tvar idx = $.inArray( table, _pluck( settings, 'nTable' ) );\n\t\n\t\treturn idx !== -1 ?\n\t\t\tsettings[ idx ] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Log an error message\n\t * @param {object} settings dataTables settings object\n\t * @param {int} level log error messages, or display them to the user\n\t * @param {string} msg error message\n\t * @param {int} tn Technical note id to get more information about the error.\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnLog( settings, level, msg, tn )\n\t{\n\t\tmsg = 'DataTables warning: '+\n\t\t\t(settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg;\n\t\n\t\tif ( tn ) {\n\t\t\tmsg += '. For more information about this error, please see '+\n\t\t\t'http://datatables.net/tn/'+tn;\n\t\t}\n\t\n\t\tif ( ! level ) {\n\t\t\t// Backwards compatibility pre 1.10\n\t\t\tvar ext = DataTable.ext;\n\t\t\tvar type = ext.sErrMode || ext.errMode;\n\t\n\t\t\tif ( type == 'alert' ) {\n\t\t\t\talert( msg );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(msg);\n\t\t\t}\n\t\t}\n\t\telse if ( window.console && console.log ) {\n\t\t\tconsole.log( msg );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * See if a property is defined on one object, if so assign it to the other object\n\t * @param {object} ret target object\n\t * @param {object} src source object\n\t * @param {string} name property\n\t * @param {string} [mappedName] name to map too - optional, name used if not given\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnMap( ret, src, name, mappedName )\n\t{\n\t\tif ( $.isArray( name ) ) {\n\t\t\t$.each( name, function (i, val) {\n\t\t\t\tif ( $.isArray( val ) ) {\n\t\t\t\t\t_fnMap( ret, src, val[0], val[1] );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t_fnMap( ret, src, val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( mappedName === undefined ) {\n\t\t\tmappedName = name;\n\t\t}\n\t\n\t\tif ( src[name] !== undefined ) {\n\t\t\tret[mappedName] = src[name];\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and\n\t * shallow copy arrays. The reason we need to do this, is that we don't want to\n\t * deep copy array init values (such as aaSorting) since the dev wouldn't be\n\t * able to override them, but we do want to deep copy arrays.\n\t * @param {object} out Object to extend\n\t * @param {object} extender Object from which the properties will be applied to\n\t * out\n\t * @param {boolean} breakRefs If true, then arrays will be sliced to take an\n\t * independent copy with the exception of the `data` or `aaData` parameters\n\t * if they are present. This is so you can pass in a collection to\n\t * DataTables and have that used as your data source without breaking the\n\t * references\n\t * @returns {object} out Reference, just for convenience - out === the return.\n\t * @memberof DataTable#oApi\n\t * @todo This doesn't take account of arrays inside the deep copied objects.\n\t */\n\tfunction _fnExtend( out, extender, breakRefs )\n\t{\n\t\tvar val;\n\t\n\t\tfor ( var prop in extender ) {\n\t\t\tif ( extender.hasOwnProperty(prop) ) {\n\t\t\t\tval = extender[prop];\n\t\n\t\t\t\tif ( $.isPlainObject( val ) ) {\n\t\t\t\t\tif ( ! $.isPlainObject( out[prop] ) ) {\n\t\t\t\t\t\tout[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, out[prop], val );\n\t\t\t\t}\n\t\t\t\telse if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) {\n\t\t\t\t\tout[prop] = val.slice();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tout[prop] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t}\n\t\n\t\n\t/**\n\t * Bind an event handers to allow a click or return key to activate the callback.\n\t * This is good for accessibility since a return on the keyboard will have the\n\t * same effect as a click, if the element has focus.\n\t * @param {element} n Element to bind the action to\n\t * @param {object} oData Data object to pass to the triggered function\n\t * @param {function} fn Callback function for when the event is triggered\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnBindAction( n, oData, fn )\n\t{\n\t\t$(n)\n\t\t\t.bind( 'click.DT', oData, function (e) {\n\t\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\t\tfn(e);\n\t\t\t\t} )\n\t\t\t.bind( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t.bind( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Register a callback function. Easily allows a callback function to be added to\n\t * an array store of callback functions that can then all be called together.\n\t * @param {object} oSettings dataTables settings object\n\t * @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t * @param {function} fn Function to be called back\n\t * @param {string} sName Identifying name for the callback (i.e. a label)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t{\n\t\tif ( fn )\n\t\t{\n\t\t\toSettings[sStore].push( {\n\t\t\t\t\"fn\": fn,\n\t\t\t\t\"sName\": sName\n\t\t\t} );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Fire callback functions and trigger events. Note that the loop over the\n\t * callback array store is done backwards! Further note that you do not want to\n\t * fire off triggers in time sensitive applications (for example cell creation)\n\t * as its slow.\n\t * @param {object} settings dataTables settings object\n\t * @param {string} callbackArr Name of the array storage for the callbacks in\n\t * oSettings\n\t * @param {string} event Name of the jQuery custom event to trigger. If null no\n\t * trigger is fired\n\t * @param {array} args Array of arguments to pass to the callback function /\n\t * trigger\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackFire( settings, callbackArr, e, args )\n\t{\n\t\tvar ret = [];\n\t\n\t\tif ( callbackArr ) {\n\t\t\tret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {\n\t\t\t\treturn val.fn.apply( settings.oInstance, args );\n\t\t\t} );\n\t\t}\n\t\n\t\tif ( e !== null ) {\n\t\t\t$(settings.nTable).trigger( e+'.dt', args );\n\t\t}\n\t\n\t\treturn ret;\n\t}\n\t\n\t\n\tfunction _fnLengthOverflow ( settings )\n\t{\n\t\tvar\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tend = settings.fnDisplayEnd(),\n\t\t\tlen = settings._iDisplayLength;\n\t\n\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\tif ( start >= end )\n\t\t{\n\t\t\tstart = end - len;\n\t\t}\n\t\n\t\t// Keep the start record on the current page\n\t\tstart -= (start % len);\n\t\n\t\tif ( len === -1 || start < 0 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\n\t\tsettings._iDisplayStart = start;\n\t}\n\t\n\t\n\tfunction _fnRenderer( settings, type )\n\t{\n\t\tvar renderer = settings.renderer;\n\t\tvar host = DataTable.ext.renderer[type];\n\t\n\t\tif ( $.isPlainObject( renderer ) && renderer[type] ) {\n\t\t\t// Specific renderer for this type. If available use it, otherwise use\n\t\t\t// the default.\n\t\t\treturn host[renderer[type]] || host._;\n\t\t}\n\t\telse if ( typeof renderer === 'string' ) {\n\t\t\t// Common renderer - if there is one available for this type use it,\n\t\t\t// otherwise use the default\n\t\t\treturn host[renderer] || host._;\n\t\t}\n\t\n\t\t// Use the default\n\t\treturn host._;\n\t}\n\t\n\t\n\t/**\n\t * Detect the data source being used for the table. Used to simplify the code\n\t * a little (ajax) and to make it compress a little smaller.\n\t *\n\t * @param {object} settings dataTables settings object\n\t * @returns {string} Data source\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDataSource ( settings )\n\t{\n\t\tif ( settings.oFeatures.bServerSide ) {\n\t\t\treturn 'ssp';\n\t\t}\n\t\telse if ( settings.ajax || settings.sAjaxSource ) {\n\t\t\treturn 'ajax';\n\t\t}\n\t\treturn 'dom';\n\t}\n\t\n\n\tDataTable = function( options )\n\t{\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t * @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t * criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t * @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t * Can be either 'current', whereby the current sorting of the table is used, or\n\t\t * 'original' whereby the original order the data was read into the table is used.\n\t\t * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t * (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t * 'current' and filter is 'applied', regardless of what they might be given as.\n\t\t * @returns {object} jQuery object, filtered by the given selector.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Highlight every second row\n\t\t * oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t * // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t * oTable.fnFilter('Webkit');\n\t\t * oTable.$('tr', {\"search\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t * oTable.fnFilter('');\n\t\t * } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).$( sSelector, oOpts );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to\n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t * @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t * @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t * criterion (\"applied\") or all elements (i.e. no filter).\n\t\t * @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t * Can be either 'current', whereby the current sorting of the table is used, or\n\t\t * 'original' whereby the original order the data was read into the table is used.\n\t\t * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t * (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t * 'current' and filter is 'applied', regardless of what they might be given as.\n\t\t * @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t * selector, were not TR, TD or TH elements in the DataTable, they will have a null\n\t\t * entry in the array.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Get the data from the first row in the table\n\t\t * var data = oTable._('tr:first');\n\t\t *\n\t\t * // Do something useful with the data\n\t\t * alert( \"First cell is: \"+data[0] );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Filter to 'Webkit' and get all data for\n\t\t * oTable.fnFilter('Webkit');\n\t\t * var data = oTable._('tr', {\"search\": \"applied\"});\n\t\t *\n\t\t * // Do something with the data\n\t\t * alert( data.length+\" rows matched the search\" );\n\t\t * } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).rows( sSelector, oOpts ).data();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a DataTables Api instance, with the currently selected tables for\n\t\t * the Api's context.\n\t\t * @param {boolean} [traditional=false] Set the API instance's context to be\n\t\t * only the table referred to by the `DataTable.ext.iApiIndex` option, as was\n\t\t * used in the API presented by DataTables 1.9- (i.e. the traditional mode),\n\t\t * or if all tables captured in the jQuery object should be used.\n\t\t * @return {DataTables.Api}\n\t\t */\n\t\tthis.api = function ( traditional )\n\t\t{\n\t\t\treturn traditional ?\n\t\t\t\tnew _Api(\n\t\t\t\t\t_fnSettingsFromNode( this[ _ext.iApiIndex ] )\n\t\t\t\t) :\n\t\t\t\tnew _Api( this );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using\n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t * @param {array|object} data The data to be added to the table. This can be:\n\t\t * <ul>\n\t\t * <li>1D array of data - add a single row with the data provided</li>\n\t\t * <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t * <li>object - data object when using <i>mData</i></li>\n\t\t * <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t * </ul>\n\t\t * @param {bool} [redraw=true] redraw the table or not\n\t\t * @returns {array} An array of integers, representing the list of indexes in\n\t\t * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to\n\t\t * the table.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * // Global var for counter\n\t\t * var giCount = 2;\n\t\t *\n\t\t * $(document).ready(function() {\n\t\t * $('#example').dataTable();\n\t\t * } );\n\t\t *\n\t\t * function fnClickAddRow() {\n\t\t * $('#example').dataTable().fnAddData( [\n\t\t * giCount+\".1\",\n\t\t * giCount+\".2\",\n\t\t * giCount+\".3\",\n\t\t * giCount+\".4\" ]\n\t\t * );\n\t\t *\n\t\t * giCount++;\n\t\t * }\n\t\t */\n\t\tthis.fnAddData = function( data, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tvar rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?\n\t\t\t\tapi.rows.add( data ) :\n\t\t\t\tapi.row.add( data );\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn rows.flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data\n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or\n\t\t * through the sWidth parameter). This can be useful when the width of the table's\n\t\t * parent element changes (for example a window resize).\n\t\t * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable( {\n\t\t * \"sScrollY\": \"200px\",\n\t\t * \"bPaginate\": false\n\t\t * } );\n\t\t *\n\t\t * $(window).bind('resize', function () {\n\t\t * oTable.fnAdjustColumnSizing();\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).columns.adjust();\n\t\t\tvar settings = api.settings()[0];\n\t\t\tvar scroll = settings.oScroll;\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw( false );\n\t\t\t}\n\t\t\telse if ( scroll.sX !== \"\" || scroll.sY !== \"\" ) {\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\t_fnScrollDraw( settings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t * @param {bool} [bRedraw=true] redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t * oTable.fnClearTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).clear();\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which\n\t\t * are currently 'open'.\n\t\t * @param {node} nTr the table row to 'close'\n\t\t * @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\tthis.api( true ).row( nTr ).child.hide();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t * @param {mixed} target The index of the row from aoData to be deleted, or\n\t\t * the TR element you want to delete\n\t\t * @param {function|null} [callBack] Callback function\n\t\t * @param {bool} [redraw=true] Redraw the table or not\n\t\t * @returns {array} The row that was deleted\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Immediately remove the first row\n\t\t * oTable.fnDeleteRow( 0 );\n\t\t * } );\n\t\t */\n\t\tthis.fnDeleteRow = function( target, callback, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar rows = api.rows( target );\n\t\t\tvar settings = rows.settings()[0];\n\t\t\tvar data = settings.aoData[ rows[0][0] ];\n\t\t\n\t\t\trows.remove();\n\t\t\n\t\t\tif ( callback ) {\n\t\t\t\tcallback.call( this, settings, data );\n\t\t\t}\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn data;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables\n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t * @param {boolean} [remove=false] Completely remove the table from the DOM\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnDestroy();\n\t\t * } );\n\t\t */\n\t\tthis.fnDestroy = function ( remove )\n\t\t{\n\t\t\tthis.api( true ).destroy( remove );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t * oTable.fnDraw();\n\t\t * } );\n\t\t */\n\t\tthis.fnDraw = function( complete )\n\t\t{\n\t\t\t// Note that this isn't an exact match to the old call to _fnDraw - it takes\n\t\t\t// into account the new data, but can old position.\n\t\t\tthis.api( true ).draw( ! complete );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t * @param {string} sInput String to filter the table on\n\t\t * @param {int|null} [iColumn] Column to limit filtering to\n\t\t * @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t * @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sometime later - filter...\n\t\t * oTable.fnFilter( 'test string' );\n\t\t * } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === null || iColumn === undefined ) {\n\t\t\t\tapi.search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\n\t\t\tapi.draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the\n\t\t * provided parameters.\n\t\t * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as\n\t\t * a TR node then the data source for the whole row will be returned. If given as a\n\t\t * TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t * cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t * data index for the row (see fnGetPosition) and the data for that row used.\n\t\t * @param {int} [col] Optional column index that you want the data of.\n\t\t * @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t * returned. If mRow is defined, just data for that row, and is iCol is\n\t\t * defined, only data for the designated cell is returned.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * // Row data\n\t\t * $(document).ready(function() {\n\t\t * oTable = $('#example').dataTable();\n\t\t *\n\t\t * oTable.$('tr').click( function () {\n\t\t * var data = oTable.fnGetData( this );\n\t\t * // ... do something with the array / object of data for the row\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Individual cell data\n\t\t * $(document).ready(function() {\n\t\t * oTable = $('#example').dataTable();\n\t\t *\n\t\t * oTable.$('td').click( function () {\n\t\t * var sData = oTable.fnGetData( this );\n\t\t * alert( 'The cell clicked on had the value of '+sData );\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\tthis.fnGetData = function( src, col )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( src !== undefined ) {\n\t\t\t\tvar type = src.nodeName ? src.nodeName.toLowerCase() : '';\n\t\t\n\t\t\t\treturn col !== undefined || type == 'td' || type == 'th' ?\n\t\t\t\t\tapi.cell( src, col ).data() :\n\t\t\t\t\tapi.row( src ).data() || null;\n\t\t\t}\n\t\t\n\t\t\treturn api.data().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will\n\t\t * typically want to use the '$' API method in preference to this as it is more\n\t\t * flexible.\n\t\t * @param {int} [iRow] Optional row index for the TR element you want\n\t\t * @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t * in the table's body, or iRow is defined, just the TR element requested.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Get the nodes from the table\n\t\t * var nNodes = oTable.fnGetNodes( );\n\t\t * } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\treturn iRow !== undefined ?\n\t\t\t\tapi.row( iRow ).node() :\n\t\t\t\tapi.rows().nodes().flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t * @param {node} node this can either be a TR, TD or TH in the table's body\n\t\t * @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t * if given as a cell, an array of [row index, column index (visible),\n\t\t * column index (all)] is given.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * $('#example tbody td').click( function () {\n\t\t * // Get the position of the current data from the node\n\t\t * var aPos = oTable.fnGetPosition( this );\n\t\t *\n\t\t * // Get the data array for this row\n\t\t * var aData = oTable.fnGetData( aPos[0] );\n\t\t *\n\t\t * // Update the data array and return the value\n\t\t * aData[ aPos[1] ] = 'clicked';\n\t\t * this.innerHTML = 'clicked';\n\t\t * } );\n\t\t *\n\t\t * // Init DataTables\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnGetPosition = function( node )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar nodeName = node.nodeName.toUpperCase();\n\t\t\n\t\t\tif ( nodeName == 'TR' ) {\n\t\t\t\treturn api.row( node ).index();\n\t\t\t}\n\t\t\telse if ( nodeName == 'TD' || nodeName == 'TH' ) {\n\t\t\t\tvar cell = api.cell( node ).index();\n\t\t\n\t\t\t\treturn [\n\t\t\t\t\tcell.row,\n\t\t\t\t\tcell.columnVisible,\n\t\t\t\t\tcell.column\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t * @param {node} nTr the table row to check\n\t\t * @returns {boolean} true if the row is currently open, false otherwise\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\treturn this.api( true ).row( nTr ).child.isShown();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently\n\t\t * on display on the page, with the HTML contents that is passed into the\n\t\t * function. This can be used, for example, to ask for confirmation that a\n\t\t * particular record should be deleted.\n\t\t * @param {node} nTr The table row to 'open'\n\t\t * @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t * @param {string} sClass Class to give the new TD cell\n\t\t * @returns {node} The row opened. Note that if the table row passed in as the\n\t\t * first parameter, is not found in the table, this method will silently\n\t\t * return.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\treturn this.api( true )\n\t\t\t\t.row( nTr )\n\t\t\t\t.child( mHtml, sClass )\n\t\t\t\t.show()\n\t\t\t\t.child()[0];\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API\n\t\t * function. With this function you can have a DataTables table go to the next,\n\t\t * previous, first or last pages.\n\t\t * @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t * or page number to jump to (integer), note that page 0 is the first page.\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnPageChange( 'next' );\n\t\t * } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).page( mAction );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw(false);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t * @param {int} iCol The column whose display should be changed\n\t\t * @param {bool} bShow Show (true) or hide (false) the column\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Hide the second column after initialisation\n\t\t * oTable.fnSetColumnVis( 1, false );\n\t\t * } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).column( iCol ).visible( bShow );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.columns.adjust().draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t * @returns {object} DataTables settings object. See\n\t\t * {@link DataTable.models.oSettings}\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * var oSettings = oTable.fnSettings();\n\t\t *\n\t\t * // Show an example parameter from the settings\n\t\t * alert( oSettings._iDisplayStart );\n\t\t * } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[_ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t * @param {int} iCol the data index to sort on. Note that this will not match the\n\t\t * 'display index' if you have hidden data entries\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sort immediately with columns 0 and 1\n\t\t * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t * } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tthis.api( true ).order( aaSort ).draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t * @param {node} nNode the element to attach the sort listener to\n\t\t * @param {int} iColumn the column that a click on this node will sort on\n\t\t * @param {function} [fnCallback] callback function when sort is run\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sort on column 1, when 'sorter' is clicked on\n\t\t * oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t * } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\tthis.api( true ).order.listener( nNode, iColumn, fnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t * @param {object|array|string} mData Data to update the cell/row with\n\t\t * @param {node|int} mRow TR element you want to update or the aoData index\n\t\t * @param {int} [iColumn] The column to update, give as null or undefined to\n\t\t * update a whole row.\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t * @returns {int} 0 on success, 1 on error\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row\n\t\t * } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null ) {\n\t\t\t\tapi.row( mRow ).data( mData );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.cell( mRow, iColumn ).data( mData );\n\t\t\t}\n\t\t\n\t\t\tif ( bAction === undefined || bAction ) {\n\t\t\t\tapi.columns.adjust();\n\t\t\t}\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t * @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t * formats \"X\" and \"X.Y\" are also acceptable.\n\t\t * @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t * version, or false if this version of DataTales is not suitable\n\t\t * @method\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t * } );\n\t\t */\n\t\tthis.fnVersionCheck = _ext.fnVersionCheck;\n\t\t\n\n\t\tvar _that = this;\n\t\tvar emptyInit = options === undefined;\n\t\tvar len = this.length;\n\n\t\tif ( emptyInit ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tthis.oApi = this.internal = _ext.internal;\n\n\t\t// Extend with old style plug-in API methods\n\t\tfor ( var fn in DataTable.ext.internal ) {\n\t\t\tif ( fn ) {\n\t\t\t\tthis[fn] = _fnExternApiFunc(fn);\n\t\t\t}\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// For each initialisation we want to give it a clean initialisation\n\t\t\t// object that can be bashed around\n\t\t\tvar o = {};\n\t\t\tvar oInit = len > 1 ? // optimisation for single table case\n\t\t\t\t_fnExtend( o, options, true ) :\n\t\t\t\toptions;\n\n\t\t\t/*global oInit,_that,emptyInit*/\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar defaults = DataTable.defaults;\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Backwards compatibility for the defaults */\n\t\t\t_fnCompatOpts( defaults );\n\t\t\t_fnCompatCols( defaults.column );\n\t\t\t\n\t\t\t/* Convert the camel-case defaults to Hungarian */\n\t\t\t_fnCamelToHungarian( defaults, defaults, true );\n\t\t\t_fnCamelToHungarian( defaults.column, defaults.column, true );\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\t_fnCamelToHungarian( defaults, oInit );\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tvar allSettings = DataTable.settings;\n\t\t\tfor ( i=0, iLen=allSettings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif ( allSettings[i].nTable == this )\n\t\t\t\t{\n\t\t\t\t\tvar bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;\n\t\t\t\t\tvar bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;\n\t\t\t\n\t\t\t\t\tif ( emptyInit || bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn allSettings[i].oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\tallSettings[i].oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( allSettings[i], 0, 'Cannot reinitialise DataTable', 3 );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( allSettings[i].sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tallSettings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._unique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"nTable\": this,\n\t\t\t\t\"oApi\": _that.internal,\n\t\t\t\t\"oInit\": oInit,\n\t\t\t\t\"sDestroyWidth\": $(this)[0].style.width,\n\t\t\t\t\"sInstance\": sId,\n\t\t\t\t\"sTableId\": sId\n\t\t\t} );\n\t\t\tallSettings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\t_fnCompatOpts( oInit );\n\t\t\t\n\t\t\tif ( oInit.oLanguage )\n\t\t\t{\n\t\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t// If the length menu is given, but the init display length is not, use the length menu\n\t\t\tif ( oInit.aLengthMenu && ! oInit.iDisplayLength )\n\t\t\t{\n\t\t\t\toInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?\n\t\t\t\t\toInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];\n\t\t\t}\n\t\t\t\n\t\t\t// Apply the defaults and init options to make a single init object will all\n\t\t\t// options defined from defaults and instance options.\n\t\t\toInit = _fnExtend( $.extend( true, {}, defaults ), oInit );\n\t\t\t\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, [\n\t\t\t\t\"bPaginate\",\n\t\t\t\t\"bLengthChange\",\n\t\t\t\t\"bFilter\",\n\t\t\t\t\"bSort\",\n\t\t\t\t\"bSortMulti\",\n\t\t\t\t\"bInfo\",\n\t\t\t\t\"bProcessing\",\n\t\t\t\t\"bAutoWidth\",\n\t\t\t\t\"bSortClasses\",\n\t\t\t\t\"bServerSide\",\n\t\t\t\t\"bDeferRender\"\n\t\t\t] );\n\t\t\t_fnMap( oSettings, oInit, [\n\t\t\t\t\"asStripeClasses\",\n\t\t\t\t\"ajax\",\n\t\t\t\t\"fnServerData\",\n\t\t\t\t\"fnFormatNumber\",\n\t\t\t\t\"sServerMethod\",\n\t\t\t\t\"aaSorting\",\n\t\t\t\t\"aaSortingFixed\",\n\t\t\t\t\"aLengthMenu\",\n\t\t\t\t\"sPaginationType\",\n\t\t\t\t\"sAjaxSource\",\n\t\t\t\t\"sAjaxDataProp\",\n\t\t\t\t\"iStateDuration\",\n\t\t\t\t\"sDom\",\n\t\t\t\t\"bSortCellsTop\",\n\t\t\t\t\"iTabIndex\",\n\t\t\t\t\"fnStateLoadCallback\",\n\t\t\t\t\"fnStateSaveCallback\",\n\t\t\t\t\"renderer\",\n\t\t\t\t\"searchDelay\",\n\t\t\t\t[ \"iCookieDuration\", \"iStateDuration\" ], // backwards compat\n\t\t\t\t[ \"oSearch\", \"oPreviousSearch\" ],\n\t\t\t\t[ \"aoSearchCols\", \"aoPreSearchCols\" ],\n\t\t\t\t[ \"iDisplayLength\", \"_iDisplayLength\" ],\n\t\t\t\t[ \"bJQueryUI\", \"bJUI\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oScroll, oInit, [\n\t\t\t\t[ \"sScrollX\", \"sX\" ],\n\t\t\t\t[ \"sScrollXInner\", \"sXInner\" ],\n\t\t\t\t[ \"sScrollY\", \"sY\" ],\n\t\t\t\t[ \"bScrollCollapse\", \"bCollapse\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' );\n\t\t\t\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\t// @todo Remove in 1.11\n\t\t\tif ( oInit.bJQueryUI )\n\t\t\t{\n\t\t\t\t/* Use the JUI classes object for display. You could clone the oStdClasses object if\n\t\t\t\t * you want to have multiple tables with multiple independent classes\n\t\t\t\t */\n\t\t\t\t$.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses );\n\t\t\t\n\t\t\t\tif ( oInit.sDom === defaults.sDom && defaults.sDom === \"lfrtip\" )\n\t\t\t\t{\n\t\t\t\t\t/* Set the DOM to use a layout suitable for jQuery UI's theming */\n\t\t\t\t\toSettings.sDom = '<\"H\"lfr>t<\"F\"ip>';\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif ( ! oSettings.renderer ) {\n\t\t\t\t\toSettings.renderer = 'jqueryui';\n\t\t\t\t}\n\t\t\t\telse if ( $.isPlainObject( oSettings.renderer ) && ! oSettings.renderer.header ) {\n\t\t\t\t\toSettings.renderer.header = 'jqueryui';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );\n\t\t\t}\n\t\t\t$(this).addClass( oClasses.sTable );\n\t\t\t\n\t\t\t/* Calculate the scroll bar width and cache it for use later on */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\toSettings.oScroll.iBarWidth = _fnScrollBarWidth();\n\t\t\t}\n\t\t\tif ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling\n\t\t\t\toSettings.oScroll.sX = '100%';\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = $.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tvar oLanguage = oSettings.oLanguage;\n\t\t\t$.extend( true, oLanguage, oInit.oLanguage );\n\t\t\t\n\t\t\tif ( oLanguage.sUrl !== \"\" )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that\n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\t$.ajax( {\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\turl: oLanguage.sUrl,\n\t\t\t\t\tsuccess: function ( json ) {\n\t\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t\t_fnCamelToHungarian( defaults.oLanguage, json );\n\t\t\t\t\t\t$.extend( true, oLanguage, json );\n\t\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t\t},\n\t\t\t\t\terror: function () {\n\t\t\t\t\t\t// Error occurred loading language file, continue on as best we can\n\t\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toClasses.sStripeOdd,\n\t\t\t\t\toClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tvar stripeClasses = oSettings.asStripeClasses;\n\t\t\tvar rowOne = $('tbody tr:eq(0)', this);\n\t\t\tif ( $.inArray( true, $.map( stripeClasses, function(el, i) {\n\t\t\t\treturn rowOne.hasClass(el);\n\t\t\t} ) ) !== -1 ) {\n\t\t\t\t$('tbody tr', this).removeClass( stripeClasses.join(' ') );\n\t\t\t\toSettings.asDestroyStripes = stripeClasses.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t/* HTML5 attribute detection - build an mData object automatically if the\n\t\t\t * attributes are found\n\t\t\t */\n\t\t\tif ( rowOne.length ) {\n\t\t\t\tvar a = function ( cell, name ) {\n\t\t\t\t\treturn cell.getAttribute( 'data-'+name ) ? name : null;\n\t\t\t\t};\n\t\t\t\n\t\t\t\t$.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) {\n\t\t\t\t\tvar col = oSettings.aoColumns[i];\n\t\t\t\n\t\t\t\t\tif ( col.mData === i ) {\n\t\t\t\t\t\tvar sort = a( cell, 'sort' ) || a( cell, 'order' );\n\t\t\t\t\t\tvar filter = a( cell, 'filter' ) || a( cell, 'search' );\n\t\t\t\n\t\t\t\t\t\tif ( sort !== null || filter !== null ) {\n\t\t\t\t\t\t\tcol.mData = {\n\t\t\t\t\t\t\t\t_: i+'.display',\n\t\t\t\t\t\t\t\tsort: sort !== null ? i+'.@data-'+sort : undefined,\n\t\t\t\t\t\t\t\ttype: sort !== null ? i+'.@data-'+sort : undefined,\n\t\t\t\t\t\t\t\tfilter: filter !== null ? i+'.@data-'+filter : undefined\n\t\t\t\t\t\t\t};\n\t\t\t\n\t\t\t\t\t\t\t_fnColumnOptions( oSettings, i );\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\t\n\t\t\tvar features = oSettings.oFeatures;\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by the state saving! */\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\tfeatures.bStateSave = true;\n\t\t\t\t_fnLoadState( oSettings, oInit );\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Sorting\n\t\t\t * @todo For modularisation (1.11) this needs to do into a sort start up handler\n\t\t\t */\n\t\t\t\n\t\t\t// If aaSorting is not defined, then we use the first indicator in asSorting\n\t\t\t// in case that has been altered, so the default sort reflects that option\n\t\t\tif ( oInit.aaSorting === undefined )\n\t\t\t{\n\t\t\t\tvar sorting = oSettings.aaSorting;\n\t\t\t\tfor ( i=0, iLen=sorting.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t */\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\tif ( features.bSort )\n\t\t\t{\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\tif ( oSettings.bSorted ) {\n\t\t\t\t\t\tvar aSort = _fnSortFlatten( oSettings );\n\t\t\t\t\t\tvar sortedColumns = {};\n\t\t\t\n\t\t\t\t\t\t$.each( aSort, function (i, val) {\n\t\t\t\t\t\t\tsortedColumns[ val.src ] = val.dir;\n\t\t\t\t\t\t} );\n\t\t\t\n\t\t\t\t\t\t_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );\n\t\t\t\t\t\t_fnSortAria( oSettings );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\tif ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {\n\t\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\t}\n\t\t\t}, 'sc' );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Final init\n\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t */\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\tvar captions = $(this).children('caption').each( function () {\n\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t} );\n\t\t\t\n\t\t\tvar thead = $(this).children('thead');\n\t\t\tif ( thead.length === 0 )\n\t\t\t{\n\t\t\t\tthead = $('<thead/>').appendTo(this);\n\t\t\t}\n\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\tvar tbody = $(this).children('tbody');\n\t\t\tif ( tbody.length === 0 )\n\t\t\t{\n\t\t\t\ttbody = $('<tbody/>').appendTo(this);\n\t\t\t}\n\t\t\toSettings.nTBody = tbody[0];\n\t\t\t\n\t\t\tvar tfoot = $(this).children('tfoot');\n\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t\t{\n\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\ttfoot = $('<tfoot/>').appendTo(this);\n\t\t\t}\n\t\t\t\n\t\t\tif ( tfoot.length === 0 || tfoot.children().length === 0 ) {\n\t\t\t\t$(this).addClass( oClasses.sNoFooter );\n\t\t\t}\n\t\t\telse if ( tfoot.length > 0 ) {\n\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if there is data passing into the constructor */\n\t\t\tif ( oInit.aaData )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' )\n\t\t\t{\n\t\t\t\t/* Grab the data from the page - only do this when deferred loading or no Ajax\n\t\t\t\t * source since there is no point in reading the DOM data if we are then going\n\t\t\t\t * to replace it with Ajax data\n\t\t\t\t */\n\t\t\t\t_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );\n\t\t\t}\n\t\t\t\n\t\t\t/* Copy the data index array */\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t * language processor)\n\t\t\t */\n\t\t\tif ( bInitHandedOff === false )\n\t\t\t{\n\t\t\t\t_fnInitialise( oSettings );\n\t\t\t}\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\t\n\t\n\t/**\n\t * Computed structure of the DataTables API, defined by the options passed to\n\t * `DataTable.Api.register()` when building the API.\n\t *\n\t * The structure is built in order to speed creation and extension of the Api\n\t * objects since the extensions are effectively pre-parsed.\n\t *\n\t * The array is an array of objects with the following structure, where this\n\t * base array represents the Api prototype base:\n\t *\n\t * [\n\t * {\n\t * name: 'data' -- string - Property name\n\t * val: function () {}, -- function - Api method (or undefined if just an object\n\t * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result\n\t * propExt: [ ... ] -- array - Array of Api object definitions to extend the property\n\t * },\n\t * {\n\t * name: 'row'\n\t * val: {},\n\t * methodExt: [ ... ],\n\t * propExt: [\n\t * {\n\t * name: 'data'\n\t * val: function () {},\n\t * methodExt: [ ... ],\n\t * propExt: [ ... ]\n\t * },\n\t * ...\n\t * ]\n\t * }\n\t * ]\n\t *\n\t * @type {Array}\n\t * @ignore\n\t */\n\tvar __apiStruct = [];\n\t\n\t\n\t/**\n\t * `Array.prototype` reference.\n\t *\n\t * @type object\n\t * @ignore\n\t */\n\tvar __arrayProto = Array.prototype;\n\t\n\t\n\t/**\n\t * Abstraction for `context` parameter of the `Api` constructor to allow it to\n\t * take several different forms for ease of use.\n\t *\n\t * Each of the input parameter types will be converted to a DataTables settings\n\t * object where possible.\n\t *\n\t * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one\n\t * of:\n\t *\n\t * * `string` - jQuery selector. Any DataTables' matching the given selector\n\t * with be found and used.\n\t * * `node` - `TABLE` node which has already been formed into a DataTable.\n\t * * `jQuery` - A jQuery object of `TABLE` nodes.\n\t * * `object` - DataTables settings object\n\t * * `DataTables.Api` - API instance\n\t * @return {array|null} Matching DataTables settings objects. `null` or\n\t * `undefined` is returned if no matching DataTable is found.\n\t * @ignore\n\t */\n\tvar _toSettings = function ( mixed )\n\t{\n\t\tvar idx, jq;\n\t\tvar settings = DataTable.settings;\n\t\tvar tables = $.map( settings, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\tif ( ! mixed ) {\n\t\t\treturn [];\n\t\t}\n\t\telse if ( mixed.nTable && mixed.oApi ) {\n\t\t\t// DataTables settings object\n\t\t\treturn [ mixed ];\n\t\t}\n\t\telse if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {\n\t\t\t// Table node\n\t\t\tidx = $.inArray( mixed, tables );\n\t\t\treturn idx !== -1 ? [ settings[idx] ] : null;\n\t\t}\n\t\telse if ( mixed && typeof mixed.settings === 'function' ) {\n\t\t\treturn mixed.settings().toArray();\n\t\t}\n\t\telse if ( typeof mixed === 'string' ) {\n\t\t\t// jQuery selector\n\t\t\tjq = $(mixed);\n\t\t}\n\t\telse if ( mixed instanceof $ ) {\n\t\t\t// jQuery object (also DataTables instance)\n\t\t\tjq = mixed;\n\t\t}\n\t\n\t\tif ( jq ) {\n\t\t\treturn jq.map( function(i) {\n\t\t\t\tidx = $.inArray( this, tables );\n\t\t\t\treturn idx !== -1 ? settings[idx] : null;\n\t\t\t} ).toArray();\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * DataTables API class - used to control and interface with one or more\n\t * DataTables enhanced tables.\n\t *\n\t * The API class is heavily based on jQuery, presenting a chainable interface\n\t * that you can use to interact with tables. Each instance of the API class has\n\t * a \"context\" - i.e. the tables that it will operate on. This could be a single\n\t * table, all tables on a page or a sub-set thereof.\n\t *\n\t * Additionally the API is designed to allow you to easily work with the data in\n\t * the tables, retrieving and manipulating it as required. This is done by\n\t * presenting the API class as an array like interface. The contents of the\n\t * array depend upon the actions requested by each method (for example\n\t * `rows().nodes()` will return an array of nodes, while `rows().data()` will\n\t * return an array of objects or arrays depending upon your table's\n\t * configuration). The API object has a number of array like methods (`push`,\n\t * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,\n\t * `unique` etc) to assist your working with the data held in a table.\n\t *\n\t * Most methods (those which return an Api instance) are chainable, which means\n\t * the return from a method call also has all of the methods available that the\n\t * top level object had. For example, these two calls are equivalent:\n\t *\n\t * // Not chained\n\t * api.row.add( {...} );\n\t * api.draw();\n\t *\n\t * // Chained\n\t * api.row.add( {...} ).draw();\n\t *\n\t * @class DataTable.Api\n\t * @param {array|object|string|jQuery} context DataTable identifier. This is\n\t * used to define which DataTables enhanced tables this API will operate on.\n\t * Can be one of:\n\t *\n\t * * `string` - jQuery selector. Any DataTables' matching the given selector\n\t * with be found and used.\n\t * * `node` - `TABLE` node which has already been formed into a DataTable.\n\t * * `jQuery` - A jQuery object of `TABLE` nodes.\n\t * * `object` - DataTables settings object\n\t * @param {array} [data] Data to initialise the Api instance with.\n\t *\n\t * @example\n\t * // Direct initialisation during DataTables construction\n\t * var api = $('#example').DataTable();\n\t *\n\t * @example\n\t * // Initialisation using a DataTables jQuery object\n\t * var api = $('#example').dataTable().api();\n\t *\n\t * @example\n\t * // Initialisation as a constructor\n\t * var api = new $.fn.DataTable.Api( 'table.dataTable' );\n\t */\n\t_Api = function ( context, data )\n\t{\n\t\tif ( ! this instanceof _Api ) {\n\t\t\tthrow 'DT API must be constructed as a new object';\n\t\t\t// or should it do the 'new' for the caller?\n\t\t\t// return new _Api.apply( this, arguments );\n\t\t}\n\t\n\t\tvar settings = [];\n\t\tvar ctxSettings = function ( o ) {\n\t\t\tvar a = _toSettings( o );\n\t\t\tif ( a ) {\n\t\t\t\tsettings.push.apply( settings, a );\n\t\t\t}\n\t\t};\n\t\n\t\tif ( $.isArray( context ) ) {\n\t\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tctxSettings( context[i] );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tctxSettings( context );\n\t\t}\n\t\n\t\t// Remove duplicates\n\t\tthis.context = _unique( settings );\n\t\n\t\t// Initial data\n\t\tif ( data ) {\n\t\t\tthis.push.apply( this, data.toArray ? data.toArray() : data );\n\t\t}\n\t\n\t\t// selector\n\t\tthis.selector = {\n\t\t\trows: null,\n\t\t\tcols: null,\n\t\t\topts: null\n\t\t};\n\t\n\t\t_Api.extend( this, this, __apiStruct );\n\t};\n\t\n\tDataTable.Api = _Api;\n\t\n\t_Api.prototype = /** @lends DataTables.Api */{\n\t\t/**\n\t\t * Return a new Api instance, comprised of the data held in the current\n\t\t * instance, join with the other array(s) and/or value(s).\n\t\t *\n\t\t * An alias for `Array.prototype.concat`.\n\t\t *\n\t\t * @type method\n\t\t * @param {*} value1 Arrays and/or values to concatenate.\n\t\t * @param {*} [...] Additional arrays and/or values to concatenate.\n\t\t * @returns {DataTables.Api} New API instance, comprising of the combined\n\t\t * array.\n\t\t */\n\t\tconcat: __arrayProto.concat,\n\t\n\t\n\t\tcontext: [], // array of table settings objects\n\t\n\t\n\t\teach: function ( fn )\n\t\t{\n\t\t\tfor ( var i=0, ien=this.length ; i<ien; i++ ) {\n\t\t\t\tfn.call( this, this[i], i, this );\n\t\t\t}\n\t\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\teq: function ( idx )\n\t\t{\n\t\t\tvar ctx = this.context;\n\t\n\t\t\treturn ctx.length > idx ?\n\t\t\t\tnew _Api( ctx[idx], this[idx] ) :\n\t\t\t\tnull;\n\t\t},\n\t\n\t\n\t\tfilter: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.filter ) {\n\t\t\t\ta = __arrayProto.filter.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( fn.call( this, this[i], i, this ) ) {\n\t\t\t\t\t\ta.push( this[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tflatten: function ()\n\t\t{\n\t\t\tvar a = [];\n\t\t\treturn new _Api( this.context, a.concat.apply( a, this.toArray() ) );\n\t\t},\n\t\n\t\n\t\tjoin: __arrayProto.join,\n\t\n\t\n\t\tindexOf: __arrayProto.indexOf || function (obj, start)\n\t\t{\n\t\t\tfor ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {\n\t\t\t\tif ( this[i] === obj ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\t\n\t\t// Note that `alwaysNew` is internal - use iteratorNew externally\n\t\titerator: function ( flatten, type, fn, alwaysNew ) {\n\t\t\tvar\n\t\t\t\ta = [], ret,\n\t\t\t\ti, ien, j, jen,\n\t\t\t\tcontext = this.context,\n\t\t\t\trows, items, item,\n\t\t\t\tselector = this.selector;\n\t\n\t\t\t// Argument shifting\n\t\t\tif ( typeof flatten === 'string' ) {\n\t\t\t\talwaysNew = fn;\n\t\t\t\tfn = type;\n\t\t\t\ttype = flatten;\n\t\t\t\tflatten = false;\n\t\t\t}\n\t\n\t\t\tfor ( i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tvar apiInst = new _Api( context[i] );\n\t\n\t\t\t\tif ( type === 'table' ) {\n\t\t\t\t\tret = fn.call( apiInst, context[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'columns' || type === 'rows' ) {\n\t\t\t\t\t// this has same length as context - one entry for each table\n\t\t\t\t\tret = fn.call( apiInst, context[i], this[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {\n\t\t\t\t\t// columns and rows share the same structure.\n\t\t\t\t\t// 'this' is an array of column indexes for each context\n\t\t\t\t\titems = this[i];\n\t\n\t\t\t\t\tif ( type === 'column-rows' ) {\n\t\t\t\t\t\trows = _selector_row_indexes( context[i], selector.opts );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfor ( j=0, jen=items.length ; j<jen ; j++ ) {\n\t\t\t\t\t\titem = items[j];\n\t\n\t\t\t\t\t\tif ( type === 'cell' ) {\n\t\t\t\t\t\t\tret = fn.call( apiInst, context[i], item.row, item.column, i, j );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tret = fn.call( apiInst, context[i], item, i, j, rows );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( a.length || alwaysNew ) {\n\t\t\t\tvar api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );\n\t\t\t\tvar apiSelector = api.selector;\n\t\t\t\tapiSelector.rows = selector.rows;\n\t\t\t\tapiSelector.cols = selector.cols;\n\t\t\t\tapiSelector.opts = selector.opts;\n\t\t\t\treturn api;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\tlastIndexOf: __arrayProto.lastIndexOf || function (obj, start)\n\t\t{\n\t\t\t// Bit cheeky...\n\t\t\treturn this.indexOf.apply( this.toArray.reverse(), arguments );\n\t\t},\n\t\n\t\n\t\tlength: 0,\n\t\n\t\n\t\tmap: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.map ) {\n\t\t\t\ta = __arrayProto.map.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\ta.push( fn.call( this, this[i], i ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tpluck: function ( prop )\n\t\t{\n\t\t\treturn this.map( function ( el ) {\n\t\t\t\treturn el[ prop ];\n\t\t\t} );\n\t\t},\n\t\n\t\tpop: __arrayProto.pop,\n\t\n\t\n\t\tpush: __arrayProto.push,\n\t\n\t\n\t\t// Does not return an API instance\n\t\treduce: __arrayProto.reduce || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, 0, this.length, 1 );\n\t\t},\n\t\n\t\n\t\treduceRight: __arrayProto.reduceRight || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, this.length-1, -1, -1 );\n\t\t},\n\t\n\t\n\t\treverse: __arrayProto.reverse,\n\t\n\t\n\t\t// Object with rows, columns and opts\n\t\tselector: null,\n\t\n\t\n\t\tshift: __arrayProto.shift,\n\t\n\t\n\t\tsort: __arrayProto.sort, // ? name - order?\n\t\n\t\n\t\tsplice: __arrayProto.splice,\n\t\n\t\n\t\ttoArray: function ()\n\t\t{\n\t\t\treturn __arrayProto.slice.call( this );\n\t\t},\n\t\n\t\n\t\tto$: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\ttoJQuery: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\tunique: function ()\n\t\t{\n\t\t\treturn new _Api( this.context, _unique(this) );\n\t\t},\n\t\n\t\n\t\tunshift: __arrayProto.unshift\n\t};\n\t\n\t\n\t_Api.extend = function ( scope, obj, ext )\n\t{\n\t\t// Only extend API instances and static properties of the API\n\t\tif ( ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\tj, jen,\n\t\t\tstruct, inner,\n\t\t\tmethodScoping = function ( scope, fn, struc ) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar ret = fn.apply( scope, arguments );\n\t\n\t\t\t\t\t// Method extension\n\t\t\t\t\t_Api.extend( ret, ret, struc.methodExt );\n\t\t\t\t\treturn ret;\n\t\t\t\t};\n\t\t\t};\n\t\n\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\tstruct = ext[i];\n\t\n\t\t\t// Value\n\t\t\tobj[ struct.name ] = typeof struct.val === 'function' ?\n\t\t\t\tmethodScoping( scope, struct.val, struct ) :\n\t\t\t\t$.isPlainObject( struct.val ) ?\n\t\t\t\t\t{} :\n\t\t\t\t\tstruct.val;\n\t\n\t\t\tobj[ struct.name ].__dt_wrapper = true;\n\t\n\t\t\t// Property extension\n\t\t\t_Api.extend( scope, obj[ struct.name ], struct.propExt );\n\t\t}\n\t};\n\t\n\t\n\t// @todo - Is there need for an augment function?\n\t// _Api.augment = function ( inst, name )\n\t// {\n\t// \t// Find src object in the structure from the name\n\t// \tvar parts = name.split('.');\n\t\n\t// \t_Api.extend( inst, obj );\n\t// };\n\t\n\t\n\t// [\n\t// {\n\t// name: 'data' -- string - Property name\n\t// val: function () {}, -- function - Api method (or undefined if just an object\n\t// methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result\n\t// propExt: [ ... ] -- array - Array of Api object definitions to extend the property\n\t// },\n\t// {\n\t// name: 'row'\n\t// val: {},\n\t// methodExt: [ ... ],\n\t// propExt: [\n\t// {\n\t// name: 'data'\n\t// val: function () {},\n\t// methodExt: [ ... ],\n\t// propExt: [ ... ]\n\t// },\n\t// ...\n\t// ]\n\t// }\n\t// ]\n\t\n\t_Api.register = _api_register = function ( name, val )\n\t{\n\t\tif ( $.isArray( name ) ) {\n\t\t\tfor ( var j=0, jen=name.length ; j<jen ; j++ ) {\n\t\t\t\t_Api.register( name[j], val );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\their = name.split('.'),\n\t\t\tstruct = __apiStruct,\n\t\t\tkey, method;\n\t\n\t\tvar find = function ( src, name ) {\n\t\t\tfor ( var i=0, ien=src.length ; i<ien ; i++ ) {\n\t\t\t\tif ( src[i].name === name ) {\n\t\t\t\t\treturn src[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\n\t\tfor ( i=0, ien=heir.length ; i<ien ; i++ ) {\n\t\t\tmethod = heir[i].indexOf('()') !== -1;\n\t\t\tkey = method ?\n\t\t\t\their[i].replace('()', '') :\n\t\t\t\their[i];\n\t\n\t\t\tvar src = find( struct, key );\n\t\t\tif ( ! src ) {\n\t\t\t\tsrc = {\n\t\t\t\t\tname: key,\n\t\t\t\t\tval: {},\n\t\t\t\t\tmethodExt: [],\n\t\t\t\t\tpropExt: []\n\t\t\t\t};\n\t\t\t\tstruct.push( src );\n\t\t\t}\n\t\n\t\t\tif ( i === ien-1 ) {\n\t\t\t\tsrc.val = val;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstruct = method ?\n\t\t\t\t\tsrc.methodExt :\n\t\t\t\t\tsrc.propExt;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\t_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {\n\t\t_Api.register( pluralName, val );\n\t\n\t\t_Api.register( singularName, function () {\n\t\t\tvar ret = val.apply( this, arguments );\n\t\n\t\t\tif ( ret === this ) {\n\t\t\t\t// Returned item is the API instance that was passed in, return it\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\telse if ( ret instanceof _Api ) {\n\t\t\t\t// New API instance returned, want the value from the first item\n\t\t\t\t// in the returned array for the singular result.\n\t\t\t\treturn ret.length ?\n\t\t\t\t\t$.isArray( ret[0] ) ?\n\t\t\t\t\t\tnew _Api( ret.context, ret[0] ) : // Array results are 'enhanced'\n\t\t\t\t\t\tret[0] :\n\t\t\t\t\tundefined;\n\t\t\t}\n\t\n\t\t\t// Non-API return - just fire it back\n\t\t\treturn ret;\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t * Selector for HTML tables. Apply the given selector to the give array of\n\t * DataTables settings objects.\n\t *\n\t * @param {string|integer} [selector] jQuery selector string or integer\n\t * @param {array} Array of DataTables settings objects to be filtered\n\t * @return {array}\n\t * @ignore\n\t */\n\tvar __table_selector = function ( selector, a )\n\t{\n\t\t// Integer is used to pick out a table by index\n\t\tif ( typeof selector === 'number' ) {\n\t\t\treturn [ a[ selector ] ];\n\t\t}\n\t\n\t\t// Perform a jQuery selector on the table nodes\n\t\tvar nodes = $.map( a, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\treturn $(nodes)\n\t\t\t.filter( selector )\n\t\t\t.map( function (i) {\n\t\t\t\t// Need to translate back from the table node to the settings\n\t\t\t\tvar idx = $.inArray( this, nodes );\n\t\t\t\treturn a[ idx ];\n\t\t\t} )\n\t\t\t.toArray();\n\t};\n\t\n\t\n\t\n\t/**\n\t * Context selector for the API's context (i.e. the tables the API instance\n\t * refers to.\n\t *\n\t * @name DataTable.Api#tables\n\t * @param {string|integer} [selector] Selector to pick which tables the iterator\n\t * should operate on. If not given, all tables in the current context are\n\t * used. This can be given as a jQuery selector (for example `':gt(0)'`) to\n\t * select multiple tables or as an integer to select a single table.\n\t * @returns {DataTable.Api} Returns a new API instance if a selector is given.\n\t */\n\t_api_register( 'tables()', function ( selector ) {\n\t\t// A new instance is created if there was a selector specified\n\t\treturn selector ?\n\t\t\tnew _Api( __table_selector( selector, this.context ) ) :\n\t\t\tthis;\n\t} );\n\t\n\t\n\t_api_register( 'table()', function ( selector ) {\n\t\tvar tables = this.tables( selector );\n\t\tvar ctx = tables.context;\n\t\n\t\t// Truncate to the first matched table\n\t\treturn ctx.length ?\n\t\t\tnew _Api( ctx[0] ) :\n\t\t\ttables;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTable;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().body()', 'table().body()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTBody;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().header()', 'table().header()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTHead;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTFoot;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().containers()', 'table().container()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTableWrapper;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Redraw the tables in the current context.\n\t *\n\t * @param {boolean} [reset=true] Reset (default) or hold the current paging\n\t * position. A full re-sort and re-filter is performed when this method is\n\t * called, which is why the pagination reset is the default action.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'draw()', function ( resetPaging ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnReDraw( settings, resetPaging===false );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get the current page index.\n\t *\n\t * @return {integer} Current page index (zero based)\n\t *//**\n\t * Set the current page.\n\t *\n\t * Note that if you attempt to show a page which does not exist, DataTables will\n\t * not throw an error, but rather reset the paging.\n\t *\n\t * @param {integer|string} action The paging action to take. This can be one of:\n\t * * `integer` - The page index to jump to\n\t * * `string` - An action to take:\n\t * * `first` - Jump to first page.\n\t * * `next` - Jump to the next page\n\t * * `previous` - Jump to previous page\n\t * * `last` - Jump to the last page.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page()', function ( action ) {\n\t\tif ( action === undefined ) {\n\t\t\treturn this.page.info().page; // not an expensive call\n\t\t}\n\t\n\t\t// else, have an action to take on all tables\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnPageChange( settings, action );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Paging information for the first table in the current context.\n\t *\n\t * If you require paging information for another table, use the `table()` method\n\t * with a suitable selector.\n\t *\n\t * @return {object} Object with the following properties set:\n\t * * `page` - Current page index (zero based - i.e. the first page is `0`)\n\t * * `pages` - Total number of pages\n\t * * `start` - Display index for the first record shown on the current page\n\t * * `end` - Display index for the last record shown on the current page\n\t * * `length` - Display length (number of records). Note that generally `start\n\t * + length = end`, but this is not always true, for example if there are\n\t * only 2 records to show on the final page, with a length of 10.\n\t * * `recordsTotal` - Full data set length\n\t * * `recordsDisplay` - Data set length once the current filtering criterion\n\t * are applied.\n\t */\n\t_api_register( 'page.info()', function ( action ) {\n\t\tif ( this.context.length === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t\n\t\tvar\n\t\t\tsettings = this.context[0],\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tlen = settings._iDisplayLength,\n\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\tall = len === -1;\n\t\n\t\treturn {\n\t\t\t\"page\": all ? 0 : Math.floor( start / len ),\n\t\t\t\"pages\": all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\"start\": start,\n\t\t\t\"end\": settings.fnDisplayEnd(),\n\t\t\t\"length\": len,\n\t\t\t\"recordsTotal\": settings.fnRecordsTotal(),\n\t\t\t\"recordsDisplay\": visRecords\n\t\t};\n\t} );\n\t\n\t\n\t/**\n\t * Get the current page length.\n\t *\n\t * @return {integer} Current page length. Note `-1` indicates that all records\n\t * are to be shown.\n\t *//**\n\t * Set the current page length.\n\t *\n\t * @param {integer} Page length to set. Use `-1` to show all records.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page.len()', function ( len ) {\n\t\t// Note that we can't call this function 'length()' because `length`\n\t\t// is a Javascript property of functions which defines how many arguments\n\t\t// the function expects.\n\t\tif ( len === undefined ) {\n\t\t\treturn this.context.length !== 0 ?\n\t\t\t\tthis.context[0]._iDisplayLength :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// else, set the page length\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnLengthChange( settings, len );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\tvar __reload = function ( settings, holdPosition, callback ) {\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t_fnReDraw( settings, holdPosition );\n\t\t}\n\t\telse {\n\t\t\t// Trigger xhr\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t_fnBuildAjax( settings, [], function( json ) {\n\t\t\t\t_fnClearTable( settings );\n\t\n\t\t\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\t_fnAddData( settings, data[i] );\n\t\t\t\t}\n\t\n\t\t\t\t_fnReDraw( settings, holdPosition );\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t} );\n\t\t}\n\t\n\t\t// Use the draw event to trigger a callback, regardless of if it is an async\n\t\t// or sync draw\n\t\tif ( callback ) {\n\t\t\tvar api = new _Api( settings );\n\t\n\t\t\tapi.one( 'draw', function () {\n\t\t\t\tcallback( api.ajax.json() );\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Get the JSON response from the last Ajax request that DataTables made to the\n\t * server. Note that this returns the JSON from the first table in the current\n\t * context.\n\t *\n\t * @return {object} JSON received from the server.\n\t */\n\t_api_register( 'ajax.json()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].json;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Get the data submitted in the last Ajax request\n\t */\n\t_api_register( 'ajax.params()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].oAjaxData;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Reload tables from the Ajax data source. Note that this function will\n\t * automatically re-draw the table when the remote data has been loaded.\n\t *\n\t * @param {boolean} [reset=true] Reset (default) or hold the current paging\n\t * position. A full re-sort and re-filter is performed when this method is\n\t * called, which is why the pagination reset is the default action.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.reload()', function ( callback, resetPaging ) {\n\t\treturn this.iterator( 'table', function (settings) {\n\t\t\t__reload( settings, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Get the current Ajax URL. Note that this returns the URL from the first\n\t * table in the current context.\n\t *\n\t * @return {string} Current Ajax source URL\n\t *//**\n\t * Set the Ajax URL. Note that this will set the URL for all tables in the\n\t * current context.\n\t *\n\t * @param {string} url URL to set.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url()', function ( url ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( url === undefined ) {\n\t\t\t// get\n\t\t\tif ( ctx.length === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tctx = ctx[0];\n\t\n\t\t\treturn ctx.ajax ?\n\t\t\t\t$.isPlainObject( ctx.ajax ) ?\n\t\t\t\t\tctx.ajax.url :\n\t\t\t\t\tctx.ajax :\n\t\t\t\tctx.sAjaxSource;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( $.isPlainObject( settings.ajax ) ) {\n\t\t\t\tsettings.ajax.url = url;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsettings.ajax = url;\n\t\t\t}\n\t\t\t// No need to consider sAjaxSource here since DataTables gives priority\n\t\t\t// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any\n\t\t\t// value of `sAjaxSource` redundant.\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Load data from the newly set Ajax URL. Note that this method is only\n\t * available when `ajax.url()` is used to set a URL. Additionally, this method\n\t * has the same effect as calling `ajax.reload()` but is provided for\n\t * convenience when setting a new URL. Like `ajax.reload()` it will\n\t * automatically redraw the table once the remote data has been loaded.\n\t *\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {\n\t\t// Same as a reload, but makes sense to present it for easy access after a\n\t\t// url change\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\t__reload( ctx, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t\n\tvar _selector_run = function ( selector, select )\n\t{\n\t\tvar\n\t\t\tout = [], res,\n\t\t\ta, i, ien, j, jen,\n\t\t\tselectorType = typeof selector;\n\t\n\t\t// Can't just check for isArray here, as an API or jQuery instance might be\n\t\t// given with their array like look\n\t\tif ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {\n\t\t\tselector = [ selector ];\n\t\t}\n\t\n\t\tfor ( i=0, ien=selector.length ; i<ien ; i++ ) {\n\t\t\ta = selector[i] && selector[i].split ?\n\t\t\t\tselector[i].split(',') :\n\t\t\t\t[ selector[i] ];\n\t\n\t\t\tfor ( j=0, jen=a.length ; j<jen ; j++ ) {\n\t\t\t\tres = select( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );\n\t\n\t\t\t\tif ( res && res.length ) {\n\t\t\t\t\tout.push.apply( out, res );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _selector_opts = function ( opts )\n\t{\n\t\tif ( ! opts ) {\n\t\t\topts = {};\n\t\t}\n\t\n\t\t// Backwards compatibility for 1.9- which used the terminology filter rather\n\t\t// than search\n\t\tif ( opts.filter && ! opts.search ) {\n\t\t\topts.search = opts.filter;\n\t\t}\n\t\n\t\treturn {\n\t\t\tsearch: opts.search || 'none',\n\t\t\torder: opts.order || 'current',\n\t\t\tpage: opts.page || 'all'\n\t\t};\n\t};\n\t\n\t\n\tvar _selector_first = function ( inst )\n\t{\n\t\t// Reduce the API instance to the first item found\n\t\tfor ( var i=0, ien=inst.length ; i<ien ; i++ ) {\n\t\t\tif ( inst[i].length > 0 ) {\n\t\t\t\t// Assign the first element to the first item in the instance\n\t\t\t\t// and truncate the instance and context\n\t\t\t\tinst[0] = inst[i];\n\t\t\t\tinst.length = 1;\n\t\t\t\tinst.context = [ inst.context[i] ];\n\t\n\t\t\t\treturn inst;\n\t\t\t}\n\t\t}\n\t\n\t\t// Not found - return an empty instance\n\t\tinst.length = 0;\n\t\treturn inst;\n\t};\n\t\n\t\n\tvar _selector_row_indexes = function ( settings, opts )\n\t{\n\t\tvar\n\t\t\ti, ien, tmp, a=[],\n\t\t\tdisplayFiltered = settings.aiDisplay,\n\t\t\tdisplayMaster = settings.aiDisplayMaster;\n\t\n\t\tvar\n\t\t\tsearch = opts.search, // none, applied, removed\n\t\t\torder = opts.order, // applied, current, index (original - compatibility with 1.9)\n\t\t\tpage = opts.page; // all, current\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t// In server-side processing mode, most options are irrelevant since\n\t\t\t// rows not shown don't exist and the index order is the applied order\n\t\t\t// Removed is a special case - for consistency just return an empty\n\t\t\t// array\n\t\t\treturn search === 'removed' ?\n\t\t\t\t[] :\n\t\t\t\t_range( 0, displayMaster.length );\n\t\t}\n\t\telse if ( page == 'current' ) {\n\t\t\t// Current page implies that order=current and fitler=applied, since it is\n\t\t\t// fairly senseless otherwise, regardless of what order and search actually\n\t\t\t// are\n\t\t\tfor ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {\n\t\t\t\ta.push( displayFiltered[i] );\n\t\t\t}\n\t\t}\n\t\telse if ( order == 'current' || order == 'applied' ) {\n\t\t\ta = search == 'none' ?\n\t\t\t\tdisplayMaster.slice() : // no search\n\t\t\t\tsearch == 'applied' ?\n\t\t\t\t\tdisplayFiltered.slice() : // applied search\n\t\t\t\t\t$.map( displayMaster, function (el, i) { // removed search\n\t\t\t\t\t\treturn $.inArray( el, displayFiltered ) === -1 ? el : null;\n\t\t\t\t\t} );\n\t\t}\n\t\telse if ( order == 'index' || order == 'original' ) {\n\t\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\t\tif ( search == 'none' ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t\telse { // applied | removed\n\t\t\t\t\ttmp = $.inArray( i, displayFiltered );\n\t\n\t\t\t\t\tif ((tmp === -1 && search == 'removed') ||\n\t\t\t\t\t\t(tmp >= 0 && search == 'applied') )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn a;\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Rows\n\t *\n\t * {} - no selector - use all available rows\n\t * {integer} - row aoData index\n\t * {node} - TR node\n\t * {string} - jQuery selector to apply to the TR elements\n\t * {array} - jQuery array of nodes, or simply an array of TR nodes\n\t *\n\t */\n\t\n\t\n\tvar __row_selector = function ( settings, selector, opts )\n\t{\n\t\treturn _selector_run( selector, function ( sel ) {\n\t\t\tvar selInt = _intVal( sel );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Short cut - selector is a number and no options provided (default is\n\t\t\t// all records, so no need to check if the index is in there, since it\n\t\t\t// must be - dev error if the index doesn't exist).\n\t\t\tif ( selInt !== null && ! opts ) {\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\n\t\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\n\t\t\tif ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {\n\t\t\t\t// Selector - integer\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\t\telse if ( ! sel ) {\n\t\t\t\t// Selector - none\n\t\t\t\treturn rows;\n\t\t\t}\n\t\n\t\t\t// Selector - function\n\t\t\tif ( typeof sel === 'function' ) {\n\t\t\t\treturn $.map( rows, function (idx) {\n\t\t\t\t\tvar row = settings.aoData[ idx ];\n\t\t\t\t\treturn sel( idx, row._aData, row.nTr ) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Get nodes in the order from the `rows` array with null values removed\n\t\t\tvar nodes = _removeEmpty(\n\t\t\t\t_pluck_order( settings.aoData, rows, 'nTr' )\n\t\t\t);\n\t\n\t\t\t// Selector - node\n\t\t\tif ( sel.nodeName ) {\n\t\t\t\tif ( $.inArray( sel, nodes ) !== -1 ) {\n\t\t\t\t\treturn [ sel._DT_RowIndex ]; // sel is a TR node that is in the table\n\t\t\t\t\t // and DataTables adds a prop for fast lookup\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery selector string, array of nodes or jQuery object/\n\t\t\t// As jQuery's .filter() allows jQuery objects to be passed in filter,\n\t\t\t// it also allows arrays, so this will cope with all three options\n\t\t\treturn $(nodes)\n\t\t\t\t.filter( sel )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn this._DT_RowIndex;\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'rows()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __row_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in __row_selector?\n\t\tinst.selector.rows = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t\n\t_api_register( 'rows().nodes()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn settings.aoData[ row ].nTr || undefined;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'rows().data()', function () {\n\t\treturn this.iterator( true, 'rows', function ( settings, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, '_aData' );\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\tvar r = settings.aoData[ row ];\n\t\t\treturn type === 'search' ? r._aFilterData : r._aSortData;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\t_fnInvalidate( settings, row, src );\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().indexes()', 'row().index()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn row;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().remove()', 'row().remove()', function () {\n\t\tvar that = this;\n\t\n\t\treturn this.iterator( 'row', function ( settings, row, thatIdx ) {\n\t\t\tvar data = settings.aoData;\n\t\n\t\t\tdata.splice( row, 1 );\n\t\n\t\t\t// Update the _DT_RowIndex parameter on all rows in the table\n\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\tif ( data[i].nTr !== null ) {\n\t\t\t\t\tdata[i].nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Remove the target row from the search array\n\t\t\tvar displayIndex = $.inArray( row, settings.aiDisplay );\n\t\n\t\t\t// Delete from the display arrays\n\t\t\t_fnDeleteIndex( settings.aiDisplayMaster, row );\n\t\t\t_fnDeleteIndex( settings.aiDisplay, row );\n\t\t\t_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes\n\t\n\t\t\t// Check for an 'overflow' they case for displaying the table\n\t\t\t_fnLengthOverflow( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'rows.add()', function ( rows ) {\n\t\tvar newRows = this.iterator( 'table', function ( settings ) {\n\t\t\t\tvar row, i, ien;\n\t\t\t\tvar out = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\t\t\tout.push( _fnAddTr( settings, row )[0] );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tout.push( _fnAddData( settings, row ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn out;\n\t\t\t}, 1 );\n\t\n\t\t// Return an Api.rows() extended instance, so rows().nodes() etc can be used\n\t\tvar modRows = this.rows( -1 );\n\t\tmodRows.pop();\n\t\tmodRows.push.apply( modRows, newRows.toArray() );\n\t\n\t\treturn modRows;\n\t} );\n\t\n\t\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'row()', function ( selector, opts ) {\n\t\treturn _selector_first( this.rows( selector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'row().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._aData :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\tctx[0].aoData[ this[0] ]._aData = data;\n\t\n\t\t// Automatically invalidate\n\t\t_fnInvalidate( ctx[0], this[0], 'data' );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( 'row().node()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\treturn ctx.length && this.length ?\n\t\t\tctx[0].aoData[ this[0] ].nTr || null :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'row.add()', function ( row ) {\n\t\t// Allow a jQuery object to be passed in - only a single row is added from\n\t\t// it though - the first element in the set\n\t\tif ( row instanceof $ && row.length ) {\n\t\t\trow = row[0];\n\t\t}\n\t\n\t\tvar rows = this.iterator( 'table', function ( settings ) {\n\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\treturn _fnAddTr( settings, row )[0];\n\t\t\t}\n\t\t\treturn _fnAddData( settings, row );\n\t\t} );\n\t\n\t\t// Return an Api.rows() extended instance, with the newly added row selected\n\t\treturn this.row( rows[0] );\n\t} );\n\t\n\t\n\t\n\tvar __details_add = function ( ctx, row, data, klass )\n\t{\n\t\t// Convert to array of TR elements\n\t\tvar rows = [];\n\t\tvar addRow = function ( r, k ) {\n\t\t\t// If we get a TR element, then just add it directly - up to the dev\n\t\t\t// to add the correct number of columns etc\n\t\t\tif ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {\n\t\t\t\trows.push( r );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Otherwise create a row with a wrapper\n\t\t\t\tvar created = $('<tr><td/></tr>').addClass( k );\n\t\t\t\t$('td', created)\n\t\t\t\t\t.addClass( k )\n\t\t\t\t\t.html( r )\n\t\t\t\t\t[0].colSpan = _fnVisbleColumns( ctx );\n\t\n\t\t\t\trows.push( created[0] );\n\t\t\t}\n\t\t};\n\t\n\t\tif ( $.isArray( data ) || data instanceof $ ) {\n\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\taddRow( data[i], klass );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\taddRow( data, klass );\n\t\t}\n\t\n\t\tif ( row._details ) {\n\t\t\trow._details.remove();\n\t\t}\n\t\n\t\trow._details = $(rows);\n\t\n\t\t// If the children were already shown, that state should be retained\n\t\tif ( row._detailsShow ) {\n\t\t\trow._details.insertAfter( row.nTr );\n\t\t}\n\t};\n\t\n\t\n\tvar __details_remove = function ( api, idx )\n\t{\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length ) {\n\t\t\tvar row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];\n\t\n\t\t\tif ( row._details ) {\n\t\t\t\trow._details.remove();\n\t\n\t\t\t\trow._detailsShow = undefined;\n\t\t\t\trow._details = undefined;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_display = function ( api, show ) {\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length && api.length ) {\n\t\t\tvar row = ctx[0].aoData[ api[0] ];\n\t\n\t\t\tif ( row._details ) {\n\t\t\t\trow._detailsShow = show;\n\t\n\t\t\t\tif ( show ) {\n\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow._details.detach();\n\t\t\t\t}\n\t\n\t\t\t\t__details_events( ctx[0] );\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_events = function ( settings )\n\t{\n\t\tvar api = new _Api( settings );\n\t\tvar namespace = '.dt.DT_details';\n\t\tvar drawEvent = 'draw'+namespace;\n\t\tvar colvisEvent = 'column-visibility'+namespace;\n\t\tvar destroyEvent = 'destroy'+namespace;\n\t\tvar data = settings.aoData;\n\t\n\t\tapi.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );\n\t\n\t\tif ( _pluck( data, '_details' ).length > 0 ) {\n\t\t\t// On each draw, insert the required elements into the document\n\t\t\tapi.on( drawEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tapi.rows( {page:'current'} ).eq(0).each( function (idx) {\n\t\t\t\t\t// Internal data grab\n\t\t\t\t\tvar row = data[ idx ];\n\t\n\t\t\t\t\tif ( row._detailsShow ) {\n\t\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\n\t\t\t// Column visibility change - update the colspan\n\t\t\tapi.on( colvisEvent, function ( e, ctx, idx, vis ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Update the colspan for the details rows (note, only if it already has\n\t\t\t\t// a colspan)\n\t\t\t\tvar row, visible = _fnVisbleColumns( ctx );\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = data[i];\n\t\n\t\t\t\t\tif ( row._details ) {\n\t\t\t\t\t\trow._details.children('td[colspan]').attr('colspan', visible );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\t// Table destroyed - nuke any child rows\n\t\t\tapi.on( destroyEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( data[i]._details ) {\n\t\t\t\t\t\t__details_remove( api, i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t// Strings for the method names to help minification\n\tvar _emp = '';\n\tvar _child_obj = _emp+'row().child';\n\tvar _child_mth = _child_obj+'()';\n\t\n\t// data can be:\n\t// tr\n\t// string\n\t// jQuery or array of any of the above\n\t_api_register( _child_mth, function ( data, klass ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._details :\n\t\t\t\tundefined;\n\t\t}\n\t\telse if ( data === true ) {\n\t\t\t// show\n\t\t\tthis.child.show();\n\t\t}\n\t\telse if ( data === false ) {\n\t\t\t// remove\n\t\t\t__details_remove( this );\n\t\t}\n\t\telse if ( ctx.length && this.length ) {\n\t\t\t// set\n\t\t\t__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );\n\t\t}\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.show()',\n\t\t_child_mth+'.show()' // only when `child()` was called with parameters (without\n\t], function ( show ) { // it returns an object and this method is not executed)\n\t\t__details_display( this, true );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.hide()',\n\t\t_child_mth+'.hide()' // only when `child()` was called with parameters (without\n\t], function () { // it returns an object and this method is not executed)\n\t\t__details_display( this, false );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.remove()',\n\t\t_child_mth+'.remove()' // only when `child()` was called with parameters (without\n\t], function () { // it returns an object and this method is not executed)\n\t\t__details_remove( this );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( _child_obj+'.isShown()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length && this.length ) {\n\t\t\t// _detailsShown as false or undefined will fall through to return false\n\t\t\treturn ctx[0].aoData[ this[0] ]._detailsShow || false;\n\t\t}\n\t\treturn false;\n\t} );\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Columns\n\t *\n\t * {integer} - column index (>=0 count from left, <0 count from right)\n\t * \"{integer}:visIdx\" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right)\n\t * \"{integer}:visible\" - alias for {integer}:visIdx (>=0 count from left, <0 count from right)\n\t * \"{string}:name\" - column name\n\t * \"{string}\" - jQuery selector on column header nodes\n\t *\n\t */\n\t\n\t// can be an array of these items, comma separated list, or an array of comma\n\t// separated lists\n\t\n\tvar __re_column_selector = /^(.+):(name|visIdx|visible)$/;\n\t\n\t\n\t// r1 and r2 are redundant - but it means that the parameters match for the\n\t// iterator callback in columns().data()\n\tvar __columnData = function ( settings, column, r1, r2, rows ) {\n\t\tvar a = [];\n\t\tfor ( var row=0, ien=rows.length ; row<ien ; row++ ) {\n\t\t\ta.push( _fnGetCellData( settings, rows[row], column ) );\n\t\t}\n\t\treturn a;\n\t};\n\t\n\t\n\tvar __column_selector = function ( settings, selector, opts )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tnames = _pluck( columns, 'sName' ),\n\t\t\tnodes = _pluck( columns, 'nTh' );\n\t\n\t\treturn _selector_run( selector, function ( s ) {\n\t\t\tvar selInt = _intVal( s );\n\t\n\t\t\t// Selector - all\n\t\t\tif ( s === '' ) {\n\t\t\t\treturn _range( columns.length );\n\t\t\t}\n\t\t\t\n\t\t\t// Selector - index\n\t\t\tif ( selInt !== null ) {\n\t\t\t\treturn [ selInt >= 0 ?\n\t\t\t\t\tselInt : // Count from left\n\t\t\t\t\tcolumns.length + selInt // Count from right (+ because its a negative value)\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t// Selector = function\n\t\t\tif ( typeof s === 'function' ) {\n\t\t\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\n\t\t\t\treturn $.map( columns, function (col, idx) {\n\t\t\t\t\treturn s(\n\t\t\t\t\t\t\tidx,\n\t\t\t\t\t\t\t__columnData( settings, idx, 0, 0, rows ),\n\t\t\t\t\t\t\tnodes[ idx ]\n\t\t\t\t\t\t) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// jQuery or string selector\n\t\t\tvar match = typeof s === 'string' ?\n\t\t\t\ts.match( __re_column_selector ) :\n\t\t\t\t'';\n\t\n\t\t\tif ( match ) {\n\t\t\t\tswitch( match[2] ) {\n\t\t\t\t\tcase 'visIdx':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\t\tvar idx = parseInt( match[1], 10 );\n\t\t\t\t\t\t// Visible index given, convert to column index\n\t\t\t\t\t\tif ( idx < 0 ) {\n\t\t\t\t\t\t\t// Counting from the right\n\t\t\t\t\t\t\tvar visColumns = $.map( columns, function (col,i) {\n\t\t\t\t\t\t\t\treturn col.bVisible ? i : null;\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn [ visColumns[ visColumns.length + idx ] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Counting from the left\n\t\t\t\t\t\treturn [ _fnVisibleToColumnIndex( settings, idx ) ];\n\t\n\t\t\t\t\tcase 'name':\n\t\t\t\t\t\t// match by name. `names` is column index complete and in order\n\t\t\t\t\t\treturn $.map( names, function (name, i) {\n\t\t\t\t\t\t\treturn name === match[1] ? i : null;\n\t\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// jQuery selector on the TH elements for the columns\n\t\t\t\treturn $( nodes )\n\t\t\t\t\t.filter( s )\n\t\t\t\t\t.map( function () {\n\t\t\t\t\t\treturn $.inArray( this, nodes ); // `nodes` is column index complete and in order\n\t\t\t\t\t} )\n\t\t\t\t\t.toArray();\n\t\t\t}\n\t\t} );\n\t};\n\t\n\t\n\tvar __setColumnVis = function ( settings, column, vis, recalc ) {\n\t\tvar\n\t\t\tcols = settings.aoColumns,\n\t\t\tcol = cols[ column ],\n\t\t\tdata = settings.aoData,\n\t\t\trow, cells, i, ien, tr;\n\t\n\t\t// Get\n\t\tif ( vis === undefined ) {\n\t\t\treturn col.bVisible;\n\t\t}\n\t\n\t\t// Set\n\t\t// No change\n\t\tif ( col.bVisible === vis ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( vis ) {\n\t\t\t// Insert column\n\t\t\t// Need to decide if we should use appendChild or insertBefore\n\t\t\tvar insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );\n\t\n\t\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\ttr = data[i].nTr;\n\t\t\t\tcells = data[i].anCells;\n\t\n\t\t\t\tif ( tr ) {\n\t\t\t\t\t// insertBefore can act like appendChild if 2nd arg is null\n\t\t\t\t\ttr.insertBefore( cells[ column ], cells[ insertBefore ] || null );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Remove column\n\t\t\t$( _pluck( settings.aoData, 'anCells', column ) ).detach();\n\t\t}\n\t\n\t\t// Common actions\n\t\tcol.bVisible = vis;\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\tif ( recalc === undefined || recalc ) {\n\t\t\t// Automatically adjust column sizing\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\n\t\t\t// Realign columns for scrolling\n\t\t\tif ( settings.oScroll.sX || settings.oScroll.sY ) {\n\t\t\t\t_fnScrollDraw( settings );\n\t\t\t}\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] );\n\t\n\t\t_fnSaveState( settings );\n\t};\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'columns()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __column_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in _row_selector?\n\t\tinst.selector.cols = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTh;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTf;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_registerPlural( 'columns().data()', 'column().data()', function () {\n\t\treturn this.iterator( 'column-rows', __columnData, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].mData;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows,\n\t\t\t\ttype === 'search' ? '_aFilterData' : '_aSortData', column\n\t\t\t);\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, 'anCells', column ) ;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t\n\t_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\tif ( vis === undefined ) {\n\t\t\t\treturn settings.aoColumns[ column ].bVisible;\n\t\t\t} // else\n\t\t\t__setColumnVis( settings, column, vis, calc );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn type === 'visible' ?\n\t\t\t\t_fnColumnIndexToVisible( settings, column ) :\n\t\t\t\tcolumn;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t// _api_register( 'columns().show()', function () {\n\t// \tvar selector = this.selector;\n\t// \treturn this.columns( selector.cols, selector.opts ).visible( true );\n\t// } );\n\t\n\t\n\t// _api_register( 'columns().hide()', function () {\n\t// \tvar selector = this.selector;\n\t// \treturn this.columns( selector.cols, selector.opts ).visible( false );\n\t// } );\n\t\n\t\n\t\n\t_api_register( 'columns.adjust()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t// Convert from one column index type, to another type\n\t_api_register( 'column.index()', function ( type, idx ) {\n\t\tif ( this.context.length !== 0 ) {\n\t\t\tvar ctx = this.context[0];\n\t\n\t\t\tif ( type === 'fromVisible' || type === 'toData' ) {\n\t\t\t\treturn _fnVisibleToColumnIndex( ctx, idx );\n\t\t\t}\n\t\t\telse if ( type === 'fromData' || type === 'toVisible' ) {\n\t\t\t\treturn _fnColumnIndexToVisible( ctx, idx );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t\n\t_api_register( 'column()', function ( selector, opts ) {\n\t\treturn _selector_first( this.columns( selector, opts ) );\n\t} );\n\t\n\t\n\t\n\t\n\tvar __cell_selector = function ( settings, selector, opts )\n\t{\n\t\tvar data = settings.aoData;\n\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\tvar cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );\n\t\tvar allCells = $( [].concat.apply([], cells) );\n\t\tvar row;\n\t\tvar columns = settings.aoColumns.length;\n\t\tvar a, i, ien, j, o, host;\n\t\n\t\treturn _selector_run( selector, function ( s ) {\n\t\t\tvar fnSelector = typeof s === 'function';\n\t\n\t\t\tif ( s === null || s === undefined || fnSelector ) {\n\t\t\t\t// All cells and function selectors\n\t\t\t\ta = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tfor ( j=0 ; j<columns ; j++ ) {\n\t\t\t\t\t\to = {\n\t\t\t\t\t\t\trow: row,\n\t\t\t\t\t\t\tcolumn: j\n\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\tif ( fnSelector ) {\n\t\t\t\t\t\t\t// Selector - function\n\t\t\t\t\t\t\thost = settings.aoData[ row ];\n\t\n\t\t\t\t\t\t\tif ( s( o, _fnGetCellData(settings, row, j), host.anCells[j] ) ) {\n\t\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// Selector - all\n\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn a;\n\t\t\t}\n\t\t\t\n\t\t\t// Selector - index\n\t\t\tif ( $.isPlainObject( s ) ) {\n\t\t\t\treturn [s];\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery filtered cells\n\t\t\treturn allCells\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function (i, el) {\n\t\t\t\t\trow = el.parentNode._DT_RowIndex;\n\t\n\t\t\t\t\treturn {\n\t\t\t\t\t\trow: row,\n\t\t\t\t\t\tcolumn: $.inArray( el, data[ row ].anCells )\n\t\t\t\t\t};\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\t} );\n\t};\n\t\n\t\n\t\n\t\n\t_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {\n\t\t// Argument shifting\n\t\tif ( $.isPlainObject( rowSelector ) ) {\n\t\t\t// Indexes\n\t\t\tif ( typeof rowSelector.row !== undefined ) {\n\t\t\t\topts = columnSelector;\n\t\t\t\tcolumnSelector = null;\n\t\t\t}\n\t\t\telse {\n\t\t\t\topts = rowSelector;\n\t\t\t\trowSelector = null;\n\t\t\t}\n\t\t}\n\t\tif ( $.isPlainObject( columnSelector ) ) {\n\t\t\topts = columnSelector;\n\t\t\tcolumnSelector = null;\n\t\t}\n\t\n\t\t// Cell selector\n\t\tif ( columnSelector === null || columnSelector === undefined ) {\n\t\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t\treturn __cell_selector( settings, rowSelector, _selector_opts( opts ) );\n\t\t\t} );\n\t\t}\n\t\n\t\t// Row + column selector\n\t\tvar columns = this.columns( columnSelector, opts );\n\t\tvar rows = this.rows( rowSelector, opts );\n\t\tvar a, i, ien, j, jen;\n\t\n\t\tvar cells = this.iterator( 'table', function ( settings, idx ) {\n\t\t\ta = [];\n\t\n\t\t\tfor ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {\n\t\t\t\tfor ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {\n\t\t\t\t\ta.push( {\n\t\t\t\t\t\trow: rows[idx][i],\n\t\t\t\t\t\tcolumn: columns[idx][j]\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn a;\n\t\t}, 1 );\n\t\n\t\t$.extend( cells.selector, {\n\t\t\tcols: columnSelector,\n\t\t\trows: rowSelector,\n\t\t\topts: opts\n\t\t} );\n\t\n\t\treturn cells;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\tvar cells = settings.aoData[ row ].anCells;\n\t\t\treturn cells ?\n\t\t\t\tcells[ column ] :\n\t\t\t\tundefined;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_register( 'cells().data()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {\n\t\ttype = type === 'search' ? '_aFilterData' : '_aSortData';\n\t\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn settings.aoData[ row ][ type ][ column ];\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column, type );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn {\n\t\t\t\trow: row,\n\t\t\t\tcolumn: column,\n\t\t\t\tcolumnVisible: _fnColumnIndexToVisible( settings, column )\n\t\t\t};\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\t_fnInvalidate( settings, row, src, column );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {\n\t\treturn _selector_first( this.cells( rowSelector, columnSelector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'cell().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\tvar cell = this[0];\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && cell.length ?\n\t\t\t\t_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\t_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );\n\t\t_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get current ordering (sorting) that has been applied to the table.\n\t *\n\t * @returns {array} 2D array containing the sorting information for the first\n\t * table in the current context. Each element in the parent array represents\n\t * a column being sorted upon (i.e. multi-sorting with two columns would have\n\t * 2 inner arrays). The inner arrays may have 2 or 3 elements. The first is\n\t * the column index that the sorting condition applies to, the second is the\n\t * direction of the sort (`desc` or `asc`) and, optionally, the third is the\n\t * index of the sorting order from the `column.sorting` initialisation array.\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {integer} order Column index to sort upon.\n\t * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 1D array of sorting information to be applied.\n\t * @param {array} [...] Optional additional sorting conditions\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 2D array of sorting information to be applied.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order()', function ( order, dir ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( order === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].aaSorting :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\tif ( typeof order === 'number' ) {\n\t\t\t// Simple column / direction passed in\n\t\t\torder = [ [ order, dir ] ];\n\t\t}\n\t\telse if ( ! $.isArray( order[0] ) ) {\n\t\t\t// Arguments passed in (list of 1D arrays)\n\t\t\torder = Array.prototype.slice.call( arguments );\n\t\t}\n\t\t// otherwise a 2D array was passed in\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tsettings.aaSorting = order.slice();\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Attach a sort listener to an element for a given column\n\t *\n\t * @param {node|jQuery|string} node Identifier for the element(s) to attach the\n\t * listener to. This can take the form of a single DOM node, a jQuery\n\t * collection of nodes or a jQuery selector which will identify the node(s).\n\t * @param {integer} column the column that a click on this node will sort on\n\t * @param {function} [callback] callback function when sort is run\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order.listener()', function ( node, column, callback ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSortAttachListener( settings, node, column, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t// Order by the selected column(s)\n\t_api_register( [\n\t\t'columns().order()',\n\t\t'column().order()'\n\t], function ( dir ) {\n\t\tvar that = this;\n\t\n\t\treturn this.iterator( 'table', function ( settings, i ) {\n\t\t\tvar sort = [];\n\t\n\t\t\t$.each( that[i], function (j, col) {\n\t\t\t\tsort.push( [ col, dir ] );\n\t\t\t} );\n\t\n\t\t\tsettings.aaSorting = sort;\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'search()', function ( input, regex, smart, caseInsen ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( input === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].oPreviousSearch.sSearch :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {\n\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\"bRegex\": regex === null ? false : regex,\n\t\t\t\t\"bSmart\": smart === null ? true : smart,\n\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t} ), 1 );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural(\n\t\t'columns().search()',\n\t\t'column().search()',\n\t\tfunction ( input, regex, smart, caseInsen ) {\n\t\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\t\tvar preSearch = settings.aoPreSearchCols;\n\t\n\t\t\t\tif ( input === undefined ) {\n\t\t\t\t\t// get\n\t\t\t\t\treturn preSearch[ column ].sSearch;\n\t\t\t\t}\n\t\n\t\t\t\t// set\n\t\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t$.extend( preSearch[ column ], {\n\t\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\t\"bRegex\": regex === null ? false : regex,\n\t\t\t\t\t\"bSmart\": smart === null ? true : smart,\n\t\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t\t} );\n\t\n\t\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch, 1 );\n\t\t\t} );\n\t\t}\n\t);\n\t\n\t/*\n\t * State API methods\n\t */\n\t\n\t_api_register( 'state()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oSavedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t// Save an empty object\n\t\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, {} );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'state.loaded()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oLoadedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.save()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSaveState( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being\n\t * used, in order to ensure compatibility.\n\t *\n\t * @param {string} version Version string to check for, in the format \"X.Y.Z\".\n\t * Note that the formats \"X\" and \"X.Y\" are also acceptable.\n\t * @returns {boolean} true if this version of DataTables is greater or equal to\n\t * the required version, or false if this version of DataTales is not\n\t * suitable\n\t * @static\n\t * @dtopt API-Static\n\t *\n\t * @example\n\t * alert( $.fn.dataTable.versionCheck( '1.9.0' ) );\n\t */\n\tDataTable.versionCheck = DataTable.fnVersionCheck = function( version )\n\t{\n\t\tvar aThis = DataTable.version.split('.');\n\t\tvar aThat = version.split('.');\n\t\tvar iThis, iThat;\n\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {\n\t\t\tiThis = parseInt( aThis[i], 10 ) || 0;\n\t\t\tiThat = parseInt( aThat[i], 10 ) || 0;\n\t\n\t\t\t// Parts are the same, keep comparing\n\t\t\tif (iThis === iThat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\t// Parts are different, return immediately\n\t\t\treturn iThis > iThat;\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Check if a `<table>` node is a DataTable table already or not.\n\t *\n\t * @param {node|jquery|string} table Table node, jQuery object or jQuery\n\t * selector for the table to test. Note that if more than more than one\n\t * table is passed on, only the first will be checked\n\t * @returns {boolean} true the table given is a DataTable, or false otherwise\n\t * @static\n\t * @dtopt API-Static\n\t *\n\t * @example\n\t * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {\n\t * $('#example').dataTable();\n\t * }\n\t */\n\tDataTable.isDataTable = DataTable.fnIsDataTable = function ( table )\n\t{\n\t\tvar t = $(table).get(0);\n\t\tvar is = false;\n\t\n\t\t$.each( DataTable.settings, function (i, o) {\n\t\t\tif ( o.nTable === t || o.nScrollHead === t || o.nScrollFoot === t ) {\n\t\t\t\tis = true;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn is;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can\n\t * select to get only currently visible tables.\n\t *\n\t * @param {boolean} [visible=false] Flag to indicate if you want all (default)\n\t * or visible tables only.\n\t * @returns {array} Array of `table` nodes (not DataTable instances) which are\n\t * DataTables\n\t * @static\n\t * @dtopt API-Static\n\t *\n\t * @example\n\t * $.each( $.fn.dataTable.tables(true), function () {\n\t * $(table).DataTable().columns.adjust();\n\t * } );\n\t */\n\tDataTable.tables = DataTable.fnTables = function ( visible )\n\t{\n\t\treturn $.map( DataTable.settings, function (o) {\n\t\t\tif ( !visible || (visible && $(o.nTable).is(':visible')) ) {\n\t\t\t\treturn o.nTable;\n\t\t\t}\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t * DataTables utility methods\n\t * \n\t * This namespace provides helper methods that DataTables uses internally to\n\t * create a DataTable, but which are not exclusively used only for DataTables.\n\t * These methods can be used by extension authors to save the duplication of\n\t * code.\n\t *\n\t * @namespace\n\t */\n\tDataTable.util = {\n\t\t/**\n\t\t * Throttle the calls to a function. Arguments and context are maintained\n\t\t * for the throttled function.\n\t\t *\n\t\t * @param {function} fn Function to be called\n\t\t * @param {integer} freq Call frequency in mS\n\t\t * @return {function} Wrapped function\n\t\t */\n\t\tthrottle: _fnThrottle,\n\t\n\t\n\t\t/**\n\t\t * Escape a string such that it can be used in a regular expression\n\t\t *\n\t\t * @param {string} sVal string to escape\n\t\t * @returns {string} escaped string\n\t\t */\n\t\tescapeRegex: _fnEscapeRegex\n\t};\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian notation. This is made public\n\t * for the extensions to provide the same ability as DataTables core to accept\n\t * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase\n\t * parameters.\n\t *\n\t * @param {object} src The model object which holds all parameters that can be\n\t * mapped.\n\t * @param {object} user The object to convert from camel case to Hungarian.\n\t * @param {boolean} force When set to `true`, properties which already have a\n\t * Hungarian value in the `user` object will be overwritten. Otherwise they\n\t * won't be.\n\t */\n\tDataTable.camelToHungarian = _fnCamelToHungarian;\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( '$()', function ( selector, opts ) {\n\t\tvar\n\t\t\trows = this.rows( opts ).nodes(), // Get all rows\n\t\t\tjqRows = $(rows);\n\t\n\t\treturn $( [].concat(\n\t\t\tjqRows.filter( selector ).toArray(),\n\t\t\tjqRows.find( selector ).toArray()\n\t\t) );\n\t} );\n\t\n\t\n\t// jQuery functions to operate on the tables\n\t$.each( [ 'on', 'one', 'off' ], function (i, key) {\n\t\t_api_register( key+'()', function ( /* event, handler */ ) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\n\t\t\t// Add the `dt` namespace automatically if it isn't already present\n\t\t\tif ( ! args[0].match(/\\.dt\\b/) ) {\n\t\t\t\targs[0] += '.dt';\n\t\t\t}\n\t\n\t\t\tvar inst = $( this.tables().nodes() );\n\t\t\tinst[key].apply( inst, args );\n\t\t\treturn this;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnClearTable( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'settings()', function () {\n\t\treturn new _Api( this.context, this.context );\n\t} );\n\t\n\t\n\t_api_register( 'data()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\treturn _pluck( settings.aoData, '_aData' );\n\t\t} ).flatten();\n\t} );\n\t\n\t\n\t_api_register( 'destroy()', function ( remove ) {\n\t\tremove = remove || false;\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tvar orig = settings.nTableWrapper.parentNode;\n\t\t\tvar classes = settings.oClasses;\n\t\t\tvar table = settings.nTable;\n\t\t\tvar tbody = settings.nTBody;\n\t\t\tvar thead = settings.nTHead;\n\t\t\tvar tfoot = settings.nTFoot;\n\t\t\tvar jqTable = $(table);\n\t\t\tvar jqTbody = $(tbody);\n\t\t\tvar jqWrapper = $(settings.nTableWrapper);\n\t\t\tvar rows = $.map( settings.aoData, function (r) { return r.nTr; } );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Flag to note that the table is currently being destroyed - no action\n\t\t\t// should be taken\n\t\t\tsettings.bDestroying = true;\n\t\n\t\t\t// Fire off the destroy callbacks for plug-ins etc\n\t\t\t_fnCallbackFire( settings, \"aoDestroyCallback\", \"destroy\", [settings] );\n\t\n\t\t\t// If not being removed from the document, make all columns visible\n\t\t\tif ( ! remove ) {\n\t\t\t\tnew _Api( settings ).columns().visible( true );\n\t\t\t}\n\t\n\t\t\t// Blitz all `DT` namespaced events (these are internal events, the\n\t\t\t// lowercase, `dt` events are user subscribed and they are responsible\n\t\t\t// for removing them\n\t\t\tjqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT');\n\t\t\t$(window).unbind('.DT-'+settings.sInstance);\n\t\n\t\t\t// When scrolling we had to break the table up - restore it\n\t\t\tif ( table != thead.parentNode ) {\n\t\t\t\tjqTable.children('thead').detach();\n\t\t\t\tjqTable.append( thead );\n\t\t\t}\n\t\n\t\t\tif ( tfoot && table != tfoot.parentNode ) {\n\t\t\t\tjqTable.children('tfoot').detach();\n\t\t\t\tjqTable.append( tfoot );\n\t\t\t}\n\t\n\t\t\t// Remove the DataTables generated nodes, events and classes\n\t\t\tjqTable.detach();\n\t\t\tjqWrapper.detach();\n\t\n\t\t\tsettings.aaSorting = [];\n\t\t\tsettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( settings );\n\t\n\t\t\t$( rows ).removeClass( settings.asStripeClasses.join(' ') );\n\t\n\t\t\t$('th, td', thead).removeClass( classes.sSortable+' '+\n\t\t\t\tclasses.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone\n\t\t\t);\n\t\n\t\t\tif ( settings.bJUI ) {\n\t\t\t\t$('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach();\n\t\t\t\t$('th, td', thead).each( function () {\n\t\t\t\t\tvar wrapper = $('div.'+classes.sSortJUIWrapper, this);\n\t\t\t\t\t$(this).append( wrapper.contents() );\n\t\t\t\t\twrapper.detach();\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\tif ( ! remove && orig ) {\n\t\t\t\t// insertBefore acts like appendChild if !arg[1]\n\t\t\t\torig.insertBefore( table, settings.nTableReinsertBefore );\n\t\t\t}\n\t\n\t\t\t// Add the TR elements back into the table in their original order\n\t\t\tjqTbody.children().detach();\n\t\t\tjqTbody.append( rows );\n\t\n\t\t\t// Restore the width of the original table - was read from the style property,\n\t\t\t// so we can restore directly to that\n\t\t\tjqTable\n\t\t\t\t.css( 'width', settings.sDestroyWidth )\n\t\t\t\t.removeClass( classes.sTable );\n\t\n\t\t\t// If the were originally stripe classes - then we add them back here.\n\t\t\t// Note this is not fool proof (for example if not all rows had stripe\n\t\t\t// classes - but it's a good effort without getting carried away\n\t\t\tien = settings.asDestroyStripes.length;\n\t\n\t\t\tif ( ien ) {\n\t\t\t\tjqTbody.children().each( function (i) {\n\t\t\t\t\t$(this).addClass( settings.asDestroyStripes[i % ien] );\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tvar idx = $.inArray( settings, DataTable.settings );\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\tDataTable.settings.splice( idx, 1 );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used\n\t * only for non-release builds. See http://semver.org/ for more information.\n\t * @member\n\t * @type string\n\t * @default Version number\n\t */\n\tDataTable.version = \"1.10.4\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are\n\t * created for the tables on a given page.\n\t *\n\t * Note that the `DataTable.settings` object is aliased to\n\t * `jQuery.fn.dataTableExt` through which it may be accessed and\n\t * manipulated, or `jQuery.fn.dataTable.settings`.\n\t * @member\n\t * @type array\n\t * @default []\n\t * @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has\n\t * available to it. These models define the objects that are used to hold\n\t * the active state and configuration of the table.\n\t * @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t * @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings\n\t * aoData array.\n\t * @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Array of TD elements for each row. This is null until the row has been\n\t\t * created.\n\t\t * @type array nodes\n\t\t * @default []\n\t\t */\n\t\t\"anCells\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data\n\t\t * source.\n\t\t * @type array|object\n\t\t * @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is\n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_aSortData\": null,\n\t\n\t\t/**\n\t\t * Per cell filtering data cache. As per the sort data cache, used to\n\t\t * increase the performance of the filtering in DataTables\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_aFilterData\": null,\n\t\n\t\t/**\n\t\t * Filtering data cache. This is the same as the cell filtering cache, but\n\t\t * in this case a string rather than an array. This is easily computed with\n\t\t * a join on `_aFilterData`, but is provided as a cache so the join isn't\n\t\t * needed on every search (memory traded for performance)\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_sFilterRow\": null,\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t * @private\n\t\t */\n\t\t\"_sRowStripe\": \"\",\n\t\n\t\t/**\n\t\t * Denote if the original data source was from the DOM, or the data source\n\t\t * object. This is used for invalidating data, so DataTables can\n\t\t * automatically read data from the original source, unless uninstructed\n\t\t * otherwise.\n\t\t * @type string\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"src\": null\n\t};\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults.column}\n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t * @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * Column index. This could be worked out on-the-fly with $.inArray, but it\n\t\t * is faster to just hold it as a variable\n\t\t * @type integer\n\t\t * @default null\n\t\t */\n\t\t\"idx\": null,\n\t\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t * @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t * @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t * @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\n\t\t/**\n\t\t * Store for manual type assignment using the `column.type` option. This\n\t\t * is held in store so we can manipulate the column's `sType` property.\n\t\t * @type string\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_sManualType\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if HTML5 data attributes should be used as the data\n\t\t * source for filtering or sorting. True is either are.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @private\n\t\t */\n\t\t\"_bAttrSrc\": false,\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t * @type function\n\t\t * @param {element} nTd The TD node that has been created\n\t\t * @param {*} sData The Data for the cell\n\t\t * @param {array|object} oData The data for the whole row\n\t\t * @param {int} iRow The row index for the aoData data store\n\t\t * @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column\n\t\t * initialisation method\n\t\t * @type function\n\t\t * @param {array|object} oData The data array/object for the array\n\t\t * (i.e. aoData[]._aData)\n\t\t * @param {string} sSpecific The specific data type you want to get -\n\t\t * 'display', 'type' 'filter' 'sort'\n\t\t * @returns {*} The data for the cell from the given row's data\n\t\t * @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b>\n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t * @type function\n\t\t * @param {array|object} oData The data array/object for the array\n\t\t * (i.e. aoData[]._aData)\n\t\t * @param {*} sValue Value to set\n\t\t * @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data\n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t * @type function|int|string|null\n\t\t * @default null\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t * @type function|int|string|null\n\t\t * @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used\n\t\t * in DataTables as such, but can be used for plug-ins to reference the\n\t\t * footer for each column.\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t * @type string\n\t\t */\n\t\t\"sName\": null,\n\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t * @type string\n\t\t * @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t * @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\t/**\n\t\t * Width of the column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t/*\n\t * Developer note: The properties of the object below are given in Hungarian\n\t * notation, that was used as the interface for DataTables prior to v1.10, however\n\t * from v1.10 onwards the primary interface is camel case. In order to avoid\n\t * breaking backwards compatibility utterly with this change, the Hungarian\n\t * version is still, internally the primary interface, but is is not documented\n\t * - hence the @name tags in each doc comment. This allows a Javascript function\n\t * to create a map from Hungarian notation to camel case (going the other direction\n\t * would require each property to be listed, which would at around 3K to the size\n\t * of DataTables, while this method is about a 0.5K hit.\n\t *\n\t * Ultimately this does pave the way for Hungarian notation to be dropped\n\t * completely, but that is a massive amount of work and will break current\n\t * installs (therefore is on-hold until v2).\n\t */\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation\n\t * time.\n\t * @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which\n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t * @type array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.data\n\t\t *\n\t\t * @example\n\t\t * // Using a 2D array data source\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"data\": [\n\t\t * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t * ],\n\t\t * \"columns\": [\n\t\t * { \"title\": \"Engine\" },\n\t\t * { \"title\": \"Browser\" },\n\t\t * { \"title\": \"Platform\" },\n\t\t * { \"title\": \"Version\" },\n\t\t * { \"title\": \"Grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using an array of objects as a data source (`data`)\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"data\": [\n\t\t * {\n\t\t * \"engine\": \"Trident\",\n\t\t * \"browser\": \"Internet Explorer 4.0\",\n\t\t * \"platform\": \"Win 95+\",\n\t\t * \"version\": 4,\n\t\t * \"grade\": \"X\"\n\t\t * },\n\t\t * {\n\t\t * \"engine\": \"Trident\",\n\t\t * \"browser\": \"Internet Explorer 5.0\",\n\t\t * \"platform\": \"Win 95+\",\n\t\t * \"version\": 5,\n\t\t * \"grade\": \"C\"\n\t\t * }\n\t\t * ],\n\t\t * \"columns\": [\n\t\t * { \"title\": \"Engine\", \"data\": \"engine\" },\n\t\t * { \"title\": \"Browser\", \"data\": \"browser\" },\n\t\t * { \"title\": \"Platform\", \"data\": \"platform\" },\n\t\t * { \"title\": \"Version\", \"data\": \"version\" },\n\t\t * { \"title\": \"Grade\", \"data\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If ordering is enabled, then DataTables will perform a first pass sort on\n\t\t * initialisation. You can define which column(s) the sort is performed\n\t\t * upon, and the sorting direction, with this variable. The `sorting` array\n\t\t * should contain an array for each column to be sorted initially containing\n\t\t * the column's index and a direction string ('asc' or 'desc').\n\t\t * @type array\n\t\t * @default [[0,'asc']]\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.order\n\t\t *\n\t\t * @example\n\t\t * // Sort by 3rd column first, and then 4th column\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"order\": [[2,'asc'], [3,'desc']]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * // No initial sorting\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"order\": []\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the `sorting` parameter, but\n\t\t * cannot be overridden by user interaction with the table. What this means\n\t\t * is that you could have a column (visible or hidden) which the sorting\n\t\t * will always be forced on first - any sorting after that (from the user)\n\t\t * will then be performed as required. This can be useful for grouping rows\n\t\t * together.\n\t\t * @type array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.orderFixed\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderFixed\": [[0,'asc']]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\n\t\t/**\n\t\t * DataTables can be instructed to load data to display in the table from a\n\t\t * Ajax source. This option defines how that Ajax call is made and where to.\n\t\t *\n\t\t * The `ajax` property has three different modes of operation, depending on\n\t\t * how it is defined. These are:\n\t\t *\n\t\t * * `string` - Set the URL from where the data should be loaded from.\n\t\t * * `object` - Define properties for `jQuery.ajax`.\n\t\t * * `function` - Custom data get function\n\t\t *\n\t\t * `string`\n\t\t * --------\n\t\t *\n\t\t * As a string, the `ajax` property simply defines the URL from which\n\t\t * DataTables will load data.\n\t\t *\n\t\t * `object`\n\t\t * --------\n\t\t *\n\t\t * As an object, the parameters in the object are passed to\n\t\t * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control\n\t\t * of the Ajax request. DataTables has a number of default parameters which\n\t\t * you can override using this option. Please refer to the jQuery\n\t\t * documentation for a full description of the options available, although\n\t\t * the following parameters provide additional options in DataTables or\n\t\t * require special consideration:\n\t\t *\n\t\t * * `data` - As with jQuery, `data` can be provided as an object, but it\n\t\t * can also be used as a function to manipulate the data DataTables sends\n\t\t * to the server. The function takes a single parameter, an object of\n\t\t * parameters with the values that DataTables has readied for sending. An\n\t\t * object may be returned which will be merged into the DataTables\n\t\t * defaults, or you can add the items to the object that was passed in and\n\t\t * not return anything from the function. This supersedes `fnServerParams`\n\t\t * from DataTables 1.9-.\n\t\t *\n\t\t * * `dataSrc` - By default DataTables will look for the property `data` (or\n\t\t * `aaData` for compatibility with DataTables 1.9-) when obtaining data\n\t\t * from an Ajax source or for server-side processing - this parameter\n\t\t * allows that property to be changed. You can use Javascript dotted\n\t\t * object notation to get a data source for multiple levels of nesting, or\n\t\t * it my be used as a function. As a function it takes a single parameter,\n\t\t * the JSON returned from the server, which can be manipulated as\n\t\t * required, with the returned value being that used by DataTables as the\n\t\t * data source for the table. This supersedes `sAjaxDataProp` from\n\t\t * DataTables 1.9-.\n\t\t *\n\t\t * * `success` - Should not be overridden it is used internally in\n\t\t * DataTables. To manipulate / transform the data returned by the server\n\t\t * use `ajax.dataSrc`, or use `ajax` as a function (see below).\n\t\t *\n\t\t * `function`\n\t\t * ----------\n\t\t *\n\t\t * As a function, making the Ajax call is left up to yourself allowing\n\t\t * complete control of the Ajax request. Indeed, if desired, a method other\n\t\t * than Ajax could be used to obtain the required data, such as Web storage\n\t\t * or an AIR database.\n\t\t *\n\t\t * The function is given four parameters and no return is required. The\n\t\t * parameters are:\n\t\t *\n\t\t * 1. _object_ - Data to send to the server\n\t\t * 2. _function_ - Callback function that must be executed when the required\n\t\t * data has been obtained. That data should be passed into the callback\n\t\t * as the only parameter\n\t\t * 3. _object_ - DataTables settings object for the table\n\t\t *\n\t\t * Note that this supersedes `fnServerData` from DataTables 1.9-.\n\t\t *\n\t\t * @type string|object|function\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.ajax\n\t\t * @since 1.10.0\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax.\n\t\t * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": \"data.json\"\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax, using `dataSrc` to change\n\t\t * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": \"tableData\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax, using `dataSrc` to read data\n\t\t * // from a plain array rather than an array in an object\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": \"\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Manipulate the data returned from the server - add a link to data\n\t\t * // (note this can, should, be done using `render` for the column - this\n\t\t * // is just a simple example of how the data can be manipulated).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": function ( json ) {\n\t\t * for ( var i=0, ien=json.length ; i<ien ; i++ ) {\n\t\t * json[i][0] = '<a href=\"/message/'+json[i][0]+'>View message</a>';\n\t\t * }\n\t\t * return json;\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Add data to the request\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"data\": function ( d ) {\n\t\t * return {\n\t\t * \"extra_search\": $('#extra').val()\n\t\t * };\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Send request as POST\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"type\": \"POST\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get the data from localStorage (could interface with a form for\n\t\t * // adding, editing and removing rows).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": function (data, callback, settings) {\n\t\t * callback(\n\t\t * JSON.parse( localStorage.getItem('dataTablesData') )\n\t\t * );\n\t\t * }\n\t\t * } );\n\t\t */\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be\n\t\t * either a 1D array of options which will be used for both the displayed\n\t\t * option and the value, or a 2D array which will use the array in the first\n\t\t * position as the value, and the array in the second position as the\n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *\n\t\t * Note that the `pageLength` property will be automatically set to the\n\t\t * first value given in this array, unless `pageLength` is also provided.\n\t\t * @type array\n\t\t * @default [ 10, 25, 50, 100 ]\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.lengthMenu\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The `columns` option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see\n\t\t * {@link DataTable.defaults.column}. Note that if you use `columns` to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t * @member\n\t\t *\n\t\t * @name DataTable.defaults.column\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to `columns`, `columnDefs` allows you to target a specific\n\t\t * column, multiple columns, or all columns, using the `targets` property of\n\t\t * each object in the array. This allows great flexibility when creating\n\t\t * tables, as the `columnDefs` arrays can be of any length, targeting the\n\t\t * columns you specifically want. `columnDefs` may use any of the column\n\t\t * options available: {@link DataTable.defaults.column}, but it _must_\n\t\t * have `targets` defined in each object in the array. Values in the `targets`\n\t\t * array may be:\n\t\t * <ul>\n\t\t * <li>a string - class name will be matched on the TH for the column</li>\n\t\t * <li>0 or a positive integer - column index counting from the left</li>\n\t\t * <li>a negative integer - column index counting from the right</li>\n\t\t * <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t * </ul>\n\t\t * @member\n\t\t *\n\t\t * @name DataTable.defaults.columnDefs\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as `search`, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size\n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * `search` and `escapeRegex` (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t * @type array\n\t\t * @default []\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.searchCols\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"searchCols\": [\n\t\t * null,\n\t\t * { \"search\": \"My filter\" },\n\t\t * null,\n\t\t * { \"search\": \"^[0-9]\", \"escapeRegex\": false }\n\t\t * ]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This\n\t\t * array may be of any length, and DataTables will apply each class\n\t\t * sequentially, looping when required.\n\t\t * @type array\n\t\t * @default null <i>Will take the values determined by the `oClasses.stripe*`\n\t\t * options</i>\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.stripeClasses\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using `columns`.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.autoWidth\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"autoWidth\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.deferRender\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": \"sources/arrays.txt\",\n\t\t * \"deferRender\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with\n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.destroy\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"srollY\": \"200px\",\n\t\t * \"paginate\": false\n\t\t * } );\n\t\t *\n\t\t * // Some time later....\n\t\t * $('#example').dataTable( {\n\t\t * \"filter\": false,\n\t\t * \"destroy\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.dom}.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.searching\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"searching\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information\n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.info\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"info\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t\t * slightly different and additional mark-up from what DataTables has\n\t\t * traditionally used).\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.jQueryUI\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"jQueryUI\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bJQueryUI\": false,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.lengthChange\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"lengthChange\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.paging\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"paging\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.processing\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"processing\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). `destroy` can be used to reinitialise a table if\n\t\t * you need.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.retrieve\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * initTable();\n\t\t * tableActions();\n\t\t * } );\n\t\t *\n\t\t * function initTable ()\n\t\t * {\n\t\t * return $('#example').dataTable( {\n\t\t * \"scrollY\": \"200px\",\n\t\t * \"paginate\": false,\n\t\t * \"retrieve\": true\n\t\t * } );\n\t\t * }\n\t\t *\n\t\t * function tableActions ()\n\t\t * {\n\t\t * var table = initTable();\n\t\t * // perform API operations with oTable\n\t\t * }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.scrollCollapse\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollY\": \"200\",\n\t\t * \"scrollCollapse\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * `ajax` parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverSide\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"xhr.php\"\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the `sortable` option for each column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.ordering\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"ordering\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or display DataTables' ability to sort multiple columns at the\n\t\t * same time (activated by shift-click by the user).\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.orderMulti\n\t\t *\n\t\t * @example\n\t\t * // Disable multiple column sorting ability\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderMulti\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortMulti\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.orderCellsTop\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderCellsTop\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes `sorting\\_1`, `sorting\\_2` and\n\t\t * `sorting\\_3` to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.orderClasses\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderClasses\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled HTML5 `localStorage` will be\n\t\t * used to save table display information such as pagination information,\n\t\t * display length, filtering and sorting. As such when the end user reloads\n\t\t * the page the display display will match what thy had previously set up.\n\t\t *\n\t\t * Due to the use of `localStorage` the default state saving is not supported\n\t\t * in IE6 or 7. If state saving is required in those browsers, use\n\t\t * `stateSaveCallback` to provide a storage solution such as cookies.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.stateSave\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t * @type function\n\t\t * @param {node} row \"TR\" element for the current row\n\t\t * @param {array} data Raw data array for this row\n\t\t * @param {int} dataIndex The index of this row in the internal aoData array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.createdRow\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"createdRow\": function( row, data, dataIndex ) {\n\t\t * // Bold the grade for all 'A' grade browsers\n\t\t * if ( data[4] == \"A\" )\n\t\t * {\n\t\t * $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.drawCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"drawCallback\": function( settings ) {\n\t\t * alert( 'DataTables has redrawn the table' );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' event.\n\t\t * @type function\n\t\t * @param {node} foot \"TR\" element for the footer\n\t\t * @param {array} data Full table data (as derived from the original HTML)\n\t\t * @param {int} start Index for the current display starting point in the\n\t\t * display array\n\t\t * @param {int} end Index for the current display ending point in the\n\t\t * display array\n\t\t * @param {array int} display Index array to translate the visual position\n\t\t * to the full data array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.footerCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"footerCallback\": function( tfoot, data, start, end, display ) {\n\t\t * tfoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+start;\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {int} toFormat number to be formatted\n\t\t * @returns {string} formatted string for DataTables to show the number\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.formatNumber\n\t\t *\n\t\t * @example\n\t\t * // Format a number using a single quote for the separator (note that\n\t\t * // this can also be done with the language.thousands option)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"formatNumber\": function ( toFormat ) {\n\t\t * return toFormat.toString().replace(\n\t\t * /\\B(?=(\\d{3})+(?!\\d))/g, \"'\"\n\t\t * );\n\t\t * };\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( toFormat ) {\n\t\t\treturn toFormat.toString().replace(\n\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\t\t\tthis.oLanguage.sThousands\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t * @type function\n\t\t * @param {node} head \"TR\" element for the header\n\t\t * @param {array} data Full table data (as derived from the original HTML)\n\t\t * @param {int} start Index for the current display starting point in the\n\t\t * display array\n\t\t * @param {int} end Index for the current display ending point in the\n\t\t * display array\n\t\t * @param {array int} display Index array to translate the visual position\n\t\t * to the full data array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.headerCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"fheaderCallback\": function( head, data, start, end, display ) {\n\t\t * head.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(end-start)+\" records\";\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t * @type function\n\t\t * @param {object} oSettings DataTables settings object\n\t\t * @param {int} start Starting position in data for the draw\n\t\t * @param {int} end End position in data for the draw\n\t\t * @param {int} max Total number of rows in the table (regardless of\n\t\t * filtering)\n\t\t * @param {int} total Total number of rows in the data set, after filtering\n\t\t * @param {string} pre The string that DataTables has formatted using it's\n\t\t * own rules\n\t\t * @returns {string} The string to be displayed in the information element.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.infoCallback\n\t\t *\n\t\t * @example\n\t\t * $('#example').dataTable( {\n\t\t * \"infoCallback\": function( settings, start, end, max, total, pre ) {\n\t\t * return start +\" to \"+ end;\n\t\t * }\n\t\t * } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} json The JSON object request from the server - only\n\t\t * present if client-side Ajax sourced data is used\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.initComplete\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"initComplete\": function(settings, json) {\n\t\t * alert( 'DataTables has finished its initialisation.' );\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @returns {boolean} False will cancel the draw, anything else (including no\n\t\t * return) will allow it to complete.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.preDrawCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"preDrawCallback\": function( settings ) {\n\t\t * if ( $('#test').val() == 1 ) {\n\t\t * return false;\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t * @type function\n\t\t * @param {node} row \"TR\" element for the current row\n\t\t * @param {array} data Raw data array for this row\n\t\t * @param {int} displayIndex The display index for the current table draw\n\t\t * @param {int} displayIndexFull The index of the data in the full list of\n\t\t * rows (after filtering)\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.rowCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"rowCallback\": function( row, data, displayIndex, displayIndexFull ) {\n\t\t * // Bold the grade for all 'A' grade browsers\n\t\t * if ( data[4] == \"A\" ) {\n\t\t * $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server so something more suitable for your application.\n\t\t * For example you could use POST data, or pull information from a Gears or\n\t\t * AIR database.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {string} source HTTP source to obtain the data from (`ajax`)\n\t\t * @param {array} data A key/value pair object containing the data to send\n\t\t * to the server\n\t\t * @param {function} callback to be called on completion of the data get\n\t\t * process that will draw the data on the page.\n\t\t * @param {object} settings DataTables settings object\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverData\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t * @type function\n\t\t * @param {array} data Data array (array of objects which are name/value\n\t\t * pairs) that has been constructed by DataTables and will be sent to the\n\t\t * server. In the case of Ajax sourced data with server-side processing\n\t\t * this will be an empty array, for server-side processing there will be a\n\t\t * significant number of parameters!\n\t\t * @returns {undefined} Ensure that you modify the data array passed in,\n\t\t * as this is passed by reference.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverParams\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {object} settings DataTables settings object\n\t\t * @return {object} The DataTables state object to be loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoadCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadCallback\": function (settings) {\n\t\t * var o;\n\t\t *\n\t\t * // Send an Ajax request to the server to get the data. Note that\n\t\t * // this is a synchronous request.\n\t\t * $.ajax( {\n\t\t * \"url\": \"/state_load\",\n\t\t * \"async\": false,\n\t\t * \"dataType\": \"json\",\n\t\t * \"success\": function (json) {\n\t\t * o = json;\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * return o;\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoadCallback\": function ( settings ) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(\n\t\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(\n\t\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for\n\t\t * plug-in authors, you should use the `stateLoadParams` event to load parameters for\n\t\t * a plug-in.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object that is to be loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoadParams\n\t\t *\n\t\t * @example\n\t\t * // Remove a saved filter, so filtering is never loaded\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadParams\": function (settings, data) {\n\t\t * data.oSearch.sSearch = \"\";\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Disallow state loading by returning false\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadParams\": function (settings, data) {\n\t\t * return false;\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object that was loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoaded\n\t\t *\n\t\t * @example\n\t\t * // Show an alert with the filtering value that was saved\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoaded\": function (settings, data) {\n\t\t * alert( 'Saved filter was: '+data.oSearch.sSearch );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored By default DataTables will use `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object to be saved\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateSaveCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateSaveCallback\": function (settings, data) {\n\t\t * // Send an Ajax request to the server with the state object\n\t\t * $.ajax( {\n\t\t * \"url\": \"/state_save\",\n\t\t * \"data\": data,\n\t\t * \"dataType\": \"json\",\n\t\t * \"method\": \"POST\"\n\t\t * \"success\": function () {}\n\t\t * } );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateSaveCallback\": function ( settings, data ) {\n\t\t\ttry {\n\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(\n\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname,\n\t\t\t\t\tJSON.stringify( data )\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table\n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or\n\t\t * other state properties or modification. Note that for plug-in authors, you should\n\t\t * use the `stateSaveParams` event to save parameters for a plug-in.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object to be saved\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateSaveParams\n\t\t *\n\t\t * @example\n\t\t * // Remove a saved filter, so filtering is never saved\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateSaveParams\": function (settings, data) {\n\t\t * data.oSearch.sSearch = \"\";\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration for which the saved state information is considered valid. After this period\n\t\t * has elapsed the state will be returned to the default.\n\t\t * Value is given in seconds.\n\t\t * @type int\n\t\t * @default 7200 <i>(2 hours)</i>\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.stateDuration\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateDuration\": 60*60*24; // 1 day\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iStateDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. `deferLoading`\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t * @type int | array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.deferLoading\n\t\t *\n\t\t * @example\n\t\t * // 57 records available in the table, no filtering applied\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"scripts/server_processing.php\",\n\t\t * \"deferLoading\": 57\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"scripts/server_processing.php\",\n\t\t * \"deferLoading\": [ 57, 100 ],\n\t\t * \"search\": {\n\t\t * \"search\": \"my_filter\"\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (`lengthChange`) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t * @type int\n\t\t * @default 10\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.pageLength\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"pageLength\": 50\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t * @type int\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.displayStart\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"displayStart\": 20\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a `tabindex` attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t * @type int\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.tabIndex\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"tabIndex\": 1\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Classes that DataTables assigns to the various components and features\n\t\t * that it adds to the HTML table. This allows classes to be configured\n\t\t * during initialisation in addition to through the static\n\t\t * {@link DataTable.ext.oStdClasses} object).\n\t\t * @namespace\n\t\t * @name DataTable.defaults.classes\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t * @namespace\n\t\t * @name DataTable.defaults.language\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t * @namespace\n\t\t\t * @name DataTable.defaults.language.aria\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t * @type string\n\t\t\t\t * @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.aria.sortAscending\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"aria\": {\n\t\t\t\t * \"sortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t * @type string\n\t\t\t\t * @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.aria.sortDescending\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"aria\": {\n\t\t\t\t * \"sortDescending\": \" - click/return to sort descending\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the built-in pagination\n\t\t\t * control types.\n\t\t\t * @namespace\n\t\t\t * @name DataTable.defaults.language.paginate\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t * @type string\n\t\t\t\t * @default First\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.first\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"first\": \"First page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t * @type string\n\t\t\t\t * @default Last\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.last\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"last\": \"Last page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the\n\t\t\t\t * next page).\n\t\t\t\t * @type string\n\t\t\t\t * @default Next\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.next\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"next\": \"Next page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to\n\t\t\t\t * the previous page).\n\t\t\t\t * @type string\n\t\t\t\t * @default Previous\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.previous\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"previous\": \"Previous page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to `zeroRecords` when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of `zeroRecords` will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t * @type string\n\t\t\t * @default No data available in table\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.emptyTable\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"emptyTable\": \"No data available in table\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information\n\t\t\t * that is current on display on the page. The following tokens can be\n\t\t\t * used in the string and will be dynamically replaced as the table\n\t\t\t * display updates. This tokens can be placed anywhere in the string, or\n\t\t\t * removed as needed by the language requires:\n\t\t\t *\n\t\t\t * * `\\_START\\_` - Display index of the first record on the current page\n\t\t\t * * `\\_END\\_` - Display index of the last record on the current page\n\t\t\t * * `\\_TOTAL\\_` - Number of records in the table after filtering\n\t\t\t * * `\\_MAX\\_` - Number of records in the table without filtering\n\t\t\t * * `\\_PAGE\\_` - Current page number\n\t\t\t * * `\\_PAGES\\_` - Total number of pages of data in the table\n\t\t\t *\n\t\t\t * @type string\n\t\t\t * @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.info\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"info\": \"Showing page _PAGE_ of _PAGES_\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the\n\t\t\t * format of this string should match `info`.\n\t\t\t * @type string\n\t\t\t * @default Showing 0 to 0 of 0 entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoEmpty\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoEmpty\": \"No entries to show\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended\n\t\t\t * to the information (`info`) to give an idea of how strong the filtering\n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t * @type string\n\t\t\t * @default (filtered from _MAX_ total entries)\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoFiltered\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\n\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t * @type string\n\t\t\t * @default <i>Empty string</i>\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoPostFix\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This decimal place operator is a little different from the other\n\t\t\t * language options since DataTables doesn't output floating point\n\t\t\t * numbers, so it won't ever use this for display of a number. Rather,\n\t\t\t * what this parameter does is modify the sort methods of the table so\n\t\t\t * that numbers which are in a format which has a character other than\n\t\t\t * a period (`.`) as a decimal place will be sorted numerically.\n\t\t\t *\n\t\t\t * Note that numbers with different decimal places cannot be shown in\n\t\t\t * the same table and still be sortable, the table must be consistent.\n\t\t\t * However, multiple different tables on the page can use different\n\t\t\t * decimal place characters.\n\t\t\t * @type string\n\t\t\t * @default \n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.decimal\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"decimal\": \",\"\n\t\t\t * \"thousands\": \".\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sDecimal\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (`formatNumber`) which is\n\t\t\t * used to format large numbers that are used in the table information.\n\t\t\t * By default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t * @type string\n\t\t\t * @default ,\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.thousands\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"thousands\": \"'\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sThousands\": \",\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t * @type string\n\t\t\t * @default Show _MENU_ entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.lengthMenu\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Language change only\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"lengthMenu\": \"Display _MENU_ records\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Language and options change\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"lengthMenu\": 'Display <select>'+\n\t\t\t * '<option value=\"10\">10</option>'+\n\t\t\t * '<option value=\"20\">20</option>'+\n\t\t\t * '<option value=\"30\">30</option>'+\n\t\t\t * '<option value=\"40\">40</option>'+\n\t\t\t * '<option value=\"50\">50</option>'+\n\t\t\t * '<option value=\"-1\">All</option>'+\n\t\t\t * '</select> records'\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t * @type string\n\t\t\t * @default Loading...\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.loadingRecords\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"loadingRecords\": \"Please wait - loading...\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t * @type string\n\t\t\t * @default Processing...\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.processing\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"processing\": \"DataTables is currently busy\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t * @type string\n\t\t\t * @default Search:\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.search\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Input text box will be appended at the end automatically\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"search\": \"Filter records:\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Specify where the filter should appear\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"search\": \"Apply filter _INPUT_ to table\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Assign a `placeholder` attribute to the search `input` element\n\t\t\t * @type string\n\t\t\t * @default \n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.searchPlaceholder\n\t\t\t */\n\t\t\t\"sSearchPlaceholder\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t * @type string\n\t\t\t * @default <i>Empty string - i.e. disabled</i>\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.url\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"url\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. `emptyTable` is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t * @type string\n\t\t\t * @default No matching records found\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.zeroRecords\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"zeroRecords\": \"No records to display\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the `search` parameter must be\n\t\t * defined, but all other parameters are optional. When `regex` is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When `smart`\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t * @namespace\n\t\t * @extends DataTable.models.oSearch\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.search\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"search\": {\"search\": \"Initial search\"}\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * By default DataTables will look for the property `data` (or `aaData` for\n\t\t * compatibility with DataTables 1.9-) when obtaining data from an Ajax\n\t\t * source or for server-side processing - this parameter allows that\n\t\t * property to be changed. You can use Javascript dotted object notation to\n\t\t * get a data source for multiple levels of nesting.\n\t\t * @type string\n\t\t * @default data\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.ajaxDataProp\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxDataProp\": \"data\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * You can instruct DataTables to load data from an external\n\t\t * source using this parameter (use aData if you want to pass data in you\n\t\t * already have). Simply provide a url a JSON object can be obtained from.\n\t\t * @type string\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.ajaxSource\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t * <ul>\n\t\t * <li>The following options are allowed:\n\t\t * <ul>\n\t\t * <li>'l' - Length changing</li>\n\t\t * <li>'f' - Filtering input</li>\n\t\t * <li>'t' - The table!</li>\n\t\t * <li>'i' - Information</li>\n\t\t * <li>'p' - Pagination</li>\n\t\t * <li>'r' - pRocessing</li>\n\t\t * </ul>\n\t\t * </li>\n\t\t * <li>The following constants are allowed:\n\t\t * <ul>\n\t\t * <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t * <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t * </ul>\n\t\t * </li>\n\t\t * <li>The following syntax is expected:\n\t\t * <ul>\n\t\t * <li>'<' and '>' - div elements</li>\n\t\t * <li>'<\"class\" and '>' - div with a class</li>\n\t\t * <li>'<\"#id\" and '>' - div with an ID</li>\n\t\t * </ul>\n\t\t * </li>\n\t\t * <li>Examples:\n\t\t * <ul>\n\t\t * <li>'<\"wrapper\"flipt>'</li>\n\t\t * <li>'<lf<t>ip>'</li>\n\t\t * </ul>\n\t\t * </li>\n\t\t * </ul>\n\t\t * @type string\n\t\t * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>\n\t\t * <\"H\"lfr>t<\"F\"ip> <i>(when `jQueryUI` is true)</i>\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.dom\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"dom\": '<\"top\"i>rt<\"bottom\"flp><\"clear\">'\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * Search delay option. This will throttle full table searches that use the\n\t\t * DataTables provided search input element (it does not effect calls to\n\t\t * `dt-api search()`, providing a delay before the search is made.\n\t\t * @type integer\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.searchDelay\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"searchDelay\": 200\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\n\t\t/**\n\t\t * DataTables features four different built-in options for the buttons to\n\t\t * display for pagination control:\n\t\t *\n\t\t * * `simple` - 'Previous' and 'Next' buttons only\n\t\t * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers\n\t\t * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons\n\t\t * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus\n\t\t * page numbers\n\t\t * \n\t\t * Further methods can be added using {@link DataTable.ext.oPagination}.\n\t\t * @type string\n\t\t * @default simple_numbers\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.pagingType\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"pagingType\": \"full_numbers\"\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"sPaginationType\": \"simple_numbers\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a\n\t\t * certain layout, or you have a large number of columns in the table, you\n\t\t * can enable x-scrolling to show the table in a viewport, which can be\n\t\t * scrolled. This property can be `true` which will allow the table to\n\t\t * scroll horizontally when needed, or any CSS unit, or a number (in which\n\t\t * case it will be treated as a pixel measurement). Setting as simply `true`\n\t\t * is recommended.\n\t\t * @type boolean|string\n\t\t * @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.scrollX\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollX\": true,\n\t\t * \"scrollCollapse\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t * @type string\n\t\t * @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.scrollXInner\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollX\": \"100%\",\n\t\t * \"scrollXInner\": \"110%\"\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t * @type string\n\t\t * @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.scrollY\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollY\": \"200px\",\n\t\t * \"paginate\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t * @type string\n\t\t * @default GET\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverMethod\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sServerMethod\": \"GET\",\n\t\n\t\n\t\t/**\n\t\t * DataTables makes use of renderers when displaying HTML elements for\n\t\t * a table. These renderers can be added or modified by plug-ins to\n\t\t * generate suitable mark-up for a site. For example the Bootstrap\n\t\t * integration plug-in for DataTables uses a paging button renderer to\n\t\t * display pagination buttons in the mark-up required by Bootstrap.\n\t\t *\n\t\t * For further information about the renderers available see\n\t\t * DataTable.ext.renderer\n\t\t * @type string|object\n\t\t * @default null\n\t\t *\n\t\t * @name DataTable.defaults.renderer\n\t\t *\n\t\t */\n\t\t\"renderer\": null\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults );\n\t\n\t\n\t\n\t/*\n\t * Developer note - See note in model.defaults.js about the use of Hungarian\n\t * notation and camel case.\n\t */\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t * @namespace\n\t */\n\tDataTable.defaults.column = {\n\t\t/**\n\t\t * Define which column(s) an order will occur on for this column. This\n\t\t * allows a column's ordering to take multiple columns into account when\n\t\t * doing a sort or use the data from a different column. For example first\n\t\t * name / last name columns make sense to do a multi-column sort over the\n\t\t * two columns.\n\t\t * @type array|int\n\t\t * @default null <i>Takes the value of the column index automatically</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.orderData\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderData\": [ 0, 1 ], \"targets\": [ 0 ] },\n\t\t * { \"orderData\": [ 1, 0 ], \"targets\": [ 1 ] },\n\t\t * { \"orderData\": 2, \"targets\": [ 2 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"orderData\": [ 0, 1 ] },\n\t\t * { \"orderData\": [ 1, 0 ] },\n\t\t * { \"orderData\": 2 },\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * You can control the default ordering direction, and even alter the\n\t\t * behaviour of the sort handler (i.e. only allow ascending ordering etc)\n\t\t * using this parameter.\n\t\t * @type array\n\t\t * @default [ 'asc', 'desc' ]\n\t\t *\n\t\t * @name DataTable.defaults.column.orderSequence\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderSequence\": [ \"asc\" ], \"targets\": [ 1 ] },\n\t\t * { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ], \"targets\": [ 2 ] },\n\t\t * { \"orderSequence\": [ \"desc\" ], \"targets\": [ 3 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * { \"orderSequence\": [ \"asc\" ] },\n\t\t * { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t * { \"orderSequence\": [ \"desc\" ] },\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.searchable\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"searchable\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"searchable\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable ordering on this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.orderable\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderable\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"orderable\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.visible\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"visible\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"visible\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t * @type function\n\t\t * @param {element} td The TD node that has been created\n\t\t * @param {*} cellData The Data for the cell\n\t\t * @param {array|object} rowData The data for the whole row\n\t\t * @param {int} row The row index for the aoData data store\n\t\t * @param {int} col The column index for aoColumns\n\t\t *\n\t\t * @name DataTable.defaults.column.createdCell\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [3],\n\t\t * \"createdCell\": function (td, cellData, rowData, row, col) {\n\t\t * if ( cellData == \"1.7\" ) {\n\t\t * $(td).css('color', 'blue')\n\t\t * }\n\t\t * }\n\t\t * } ]\n\t\t * });\n\t\t * } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by `data` in DataTables to ensure naming\n\t\t * consistency. `dataProp` can still be used, as there is backwards\n\t\t * compatibility in DataTables for this option, but it is strongly\n\t\t * recommended that you use `data` in preference to `dataProp`.\n\t\t * @name DataTable.defaults.column.dataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any data source property,\n\t\t * including deeply nested objects / properties. `data` can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t * default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t * three 'special' options that can be used in the string to alter how\n\t\t * DataTables reads the data from the source object:\n\t\t * * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t * Javascript to read from nested objects, so to can the options\n\t\t * specified in `data`. For example: `browser.version` or\n\t\t * `browser.name`. If your object parameter name contains a period, use\n\t\t * `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t * * `[]` - Array notation. DataTables can automatically combine data\n\t\t * from and array source, joining the data with the characters provided\n\t\t * between the two brackets. For example: `name[, ]` would provide a\n\t\t * comma-space separated list from the source array. If no characters\n\t\t * are provided between the brackets, the original array source is\n\t\t * returned.\n\t\t * * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t * execute a function of the name given. For example: `browser()` for a\n\t\t * simple function on the data source, `browser.version()` for a\n\t\t * function in a nested property or even `browser().version` to get an\n\t\t * object property if the function called returns an object. Note that\n\t\t * function notation is recommended for use in `render` rather than\n\t\t * `data` as it is much simpler to use as a renderer.\n\t\t * * `null` - use the original data source for the row rather than plucking\n\t\t * data directly from it. This action has effects on two other\n\t\t * initialisation options:\n\t\t * * `defaultContent` - When null is given as the `data` option and\n\t\t * `defaultContent` is specified for the column, the value defined by\n\t\t * `defaultContent` will be used for the cell.\n\t\t * * `render` - When null is used for the `data` option and the `render`\n\t\t * option is specified for the column, the whole data source for the\n\t\t * row is used for the renderer.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t * needs to set or get the data for a cell in the column. The function\n\t\t * takes three parameters:\n\t\t * * Parameters:\n\t\t * * `{array|object}` The data source for the row\n\t\t * * `{string}` The type call data requested - this will be 'set' when\n\t\t * setting data or 'filter', 'display', 'type', 'sort' or undefined\n\t\t * when gathering data. Note that when `undefined` is given for the\n\t\t * type DataTables expects to get the raw data for the object back<\n\t\t * * `{*}` Data to set when the second parameter is 'set'.\n\t\t * * Return:\n\t\t * * The return value from the function is not required when 'set' is\n\t\t * the type of call, but otherwise the return is what will be used\n\t\t * for the data requested.\n\t\t *\n\t\t * Note that `data` is a getter and setter option. If you just require\n\t\t * formatting of data for output, you will likely want to use `render` which\n\t\t * is simply a getter and thus simpler to use.\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The\n\t\t * name change reflects the flexibility of this property and is consistent\n\t\t * with the naming of mRender. If 'mDataProp' is given, then it will still\n\t\t * be used by DataTables, as it automatically maps the old name to the new\n\t\t * if required.\n\t\t *\n\t\t * @type string|int|function|null\n\t\t * @default null <i>Use automatically calculated column index</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.data\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Read table data from objects\n\t\t * // JSON structure for each row:\n\t\t * // {\n\t\t * // \"engine\": {value},\n\t\t * // \"browser\": {value},\n\t\t * // \"platform\": {value},\n\t\t * // \"version\": {value},\n\t\t * // \"grade\": {value}\n\t\t * // }\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/objects.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * { \"data\": \"platform\" },\n\t\t * { \"data\": \"version\" },\n\t\t * { \"data\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Read information from deeply nested objects\n\t\t * // JSON structure for each row:\n\t\t * // {\n\t\t * // \"engine\": {value},\n\t\t * // \"browser\": {value},\n\t\t * // \"platform\": {\n\t\t * // \"inner\": {value}\n\t\t * // },\n\t\t * // \"details\": [\n\t\t * // {value}, {value}\n\t\t * // ]\n\t\t * // }\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/deep.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * { \"data\": \"platform.inner\" },\n\t\t * { \"data\": \"platform.details.0\" },\n\t\t * { \"data\": \"platform.details.1\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `data` as a function to provide different information for\n\t\t * // sorting, filtering and display. In this case, currency (price)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": function ( source, type, val ) {\n\t\t * if (type === 'set') {\n\t\t * source.price = val;\n\t\t * // Store the computed dislay and filter values for efficiency\n\t\t * source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t * source.price_filter = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t * return;\n\t\t * }\n\t\t * else if (type === 'display') {\n\t\t * return source.price_display;\n\t\t * }\n\t\t * else if (type === 'filter') {\n\t\t * return source.price_filter;\n\t\t * }\n\t\t * // 'sort', 'type' and undefined all just use the integer\n\t\t * return source.price;\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using default content\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Click to edit\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using array notation - outputting a list from an array\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": \"name[, ]\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to `data` and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering,\n\t\t * sorting etc) without altering the underlying data for the table, use this\n\t\t * property. `render` can be considered to be the the read only companion to\n\t\t * `data` which is read / write (then as such more complex). Like `data`\n\t\t * this option can be given in a number of different ways to effect its\n\t\t * behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t * default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t * three 'special' options that can be used in the string to alter how\n\t\t * DataTables reads the data from the source object:\n\t\t * * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t * Javascript to read from nested objects, so to can the options\n\t\t * specified in `data`. For example: `browser.version` or\n\t\t * `browser.name`. If your object parameter name contains a period, use\n\t\t * `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t * * `[]` - Array notation. DataTables can automatically combine data\n\t\t * from and array source, joining the data with the characters provided\n\t\t * between the two brackets. For example: `name[, ]` would provide a\n\t\t * comma-space separated list from the source array. If no characters\n\t\t * are provided between the brackets, the original array source is\n\t\t * returned.\n\t\t * * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t * execute a function of the name given. For example: `browser()` for a\n\t\t * simple function on the data source, `browser.version()` for a\n\t\t * function in a nested property or even `browser().version` to get an\n\t\t * object property if the function called returns an object.\n\t\t * * `object` - use different data for the different data types requested by\n\t\t * DataTables ('filter', 'display', 'type' or 'sort'). The property names\n\t\t * of the object is the data type the property refers to and the value can\n\t\t * defined using an integer, string or function using the same rules as\n\t\t * `render` normally does. Note that an `_` option _must_ be specified.\n\t\t * This is the default value to use if you haven't specified a value for\n\t\t * the data type requested by DataTables.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t * needs to set or get the data for a cell in the column. The function\n\t\t * takes three parameters:\n\t\t * * Parameters:\n\t\t * * {array|object} The data source for the row (based on `data`)\n\t\t * * {string} The type call data requested - this will be 'filter',\n\t\t * 'display', 'type' or 'sort'.\n\t\t * * {array|object} The full data source for the row (not based on\n\t\t * `data`)\n\t\t * * Return:\n\t\t * * The return value from the function is what will be used for the\n\t\t * data requested.\n\t\t *\n\t\t * @type string|int|function|object|null\n\t\t * @default null Use the data source value.\n\t\t *\n\t\t * @name DataTable.defaults.column.render\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Create a comma separated list from an array of objects\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/deep.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * {\n\t\t * \"data\": \"platform\",\n\t\t * \"render\": \"[, ].name\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Execute a function to obtain data\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null, // Use the full data source object for the renderer's source\n\t\t * \"render\": \"browserName()\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // As an object, extracting different data for the different types\n\t\t * // This would be used with a data source such as:\n\t\t * // { \"phone\": 5552368, \"phone_filter\": \"5552368 555-2368\", \"phone_display\": \"555-2368\" }\n\t\t * // Here the `phone` integer is used for sorting and type detection, while `phone_filter`\n\t\t * // (which has both forms) is used for filtering for if a user inputs either format, while\n\t\t * // the formatted phone number is the one that is shown in the table.\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null, // Use the full data source object for the renderer's source\n\t\t * \"render\": {\n\t\t * \"_\": \"phone\",\n\t\t * \"filter\": \"phone_filter\",\n\t\t * \"display\": \"phone_display\"\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Use as a function to create a link from the data source\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": \"download_link\",\n\t\t * \"render\": function ( data, type, full ) {\n\t\t * return '<a href=\"'+data+'\">Download</a>';\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t * @type string\n\t\t * @default td\n\t\t *\n\t\t * @name DataTable.defaults.column.cellType\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Make the first column use TH cells\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"cellType\": \"th\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.class\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"class\": \"my_class\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"class\": \"my_class\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this!\n\t\t * @type string\n\t\t * @default <i>Empty string<i>\n\t\t *\n\t\t * @name DataTable.defaults.column.contentPadding\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * {\n\t\t * \"contentPadding\": \"mmm\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because `data`\n\t\t * is set to null, or because the data source itself is null).\n\t\t * @type string\n\t\t * @default null\n\t\t *\n\t\t * @name DataTable.defaults.column.defaultContent\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * {\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Edit\",\n\t\t * \"targets\": [ -1 ]\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * {\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Edit\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.name\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"name\": \"engine\", \"targets\": [ 0 ] },\n\t\t * { \"name\": \"browser\", \"targets\": [ 1 ] },\n\t\t * { \"name\": \"platform\", \"targets\": [ 2 ] },\n\t\t * { \"name\": \"version\", \"targets\": [ 3 ] },\n\t\t * { \"name\": \"grade\", \"targets\": [ 4 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"name\": \"engine\" },\n\t\t * { \"name\": \"browser\" },\n\t\t * { \"name\": \"platform\" },\n\t\t * { \"name\": \"version\" },\n\t\t * { \"name\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the ordering which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to ordering. This allows ordering to occur on user\n\t\t * editable elements such as form inputs.\n\t\t * @type string\n\t\t * @default std\n\t\t *\n\t\t * @name DataTable.defaults.column.orderDataType\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderDataType\": \"dom-text\", \"targets\": [ 2, 3 ] },\n\t\t * { \"type\": \"numeric\", \"targets\": [ 3 ] },\n\t\t * { \"orderDataType\": \"dom-select\", \"targets\": [ 4 ] },\n\t\t * { \"orderDataType\": \"dom-checkbox\", \"targets\": [ 5 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * { \"orderDataType\": \"dom-text\" },\n\t\t * { \"orderDataType\": \"dom-text\", \"type\": \"numeric\" },\n\t\t * { \"orderDataType\": \"dom-select\" },\n\t\t * { \"orderDataType\": \"dom-checkbox\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t * @type string\n\t\t * @default null <i>Derived from the 'TH' value for this column in the\n\t\t * original HTML table.</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.title\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"title\": \"My column title\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"title\": \"My column title\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be\n\t\t * ordered. Four types (string, numeric, date and html (which will strip\n\t\t * HTML tags before ordering)) are currently available. Note that only date\n\t\t * formats understood by Javascript's Date() object will be accepted as type\n\t\t * date. For example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string',\n\t\t * 'numeric', 'date' or 'html' (by default). Further types can be adding\n\t\t * through plug-ins.\n\t\t * @type string\n\t\t * @default null <i>Auto-detected from raw data</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.type\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"type\": \"html\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"type\": \"html\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t * @type string\n\t\t * @default null <i>Automatic</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.width\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"width\": \"20%\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"width\": \"20%\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults.column );\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a\n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults} but this\n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t * @namespace\n\t * @todo Really should attach the settings object to individual instances so we\n\t * don't need to create new instances on each $().dataTable() call (if the\n\t * table already exists). It would also save passing oSettings around and\n\t * into every single function. However, this is a very significant\n\t * architecture change for DataTables and will almost certainly break\n\t * backwards compatibility with older installations. This is something that\n\t * will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t * @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\n\t\t\t/**\n\t\t\t * Multi-column sorting\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSortMulti\": null,\n\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t * @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t * @type int\n\t\t\t * @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is\n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t * @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t * @namespace\n\t\t * @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See\n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t * @type function\n\t\t\t * @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t * @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t * @type boolean\n\t\t\t * @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false,\n\t\n\t\t\t/**\n\t\t\t * Determine if the vertical scrollbar is on the right or left of the\n\t\t\t * scrolling container - needed for rtl language layout, although not\n\t\t\t * all browsers move the scrollbar (Safari).\n\t\t\t * @type boolean\n\t\t\t * @default false\n\t\t\t */\n\t\t\t\"bScrollbarLeft\": false\n\t\t},\n\t\n\t\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The\n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t * <ul>\n\t\t * <li>'l' - Length changing</li>\n\t\t * <li>'f' - Filtering input</li>\n\t\t * <li>'t' - The table!</li>\n\t\t * <li>'i' - Information</li>\n\t\t * <li>'p' - Pagination</li>\n\t\t * <li>'r' - pRocessing</li>\n\t\t * </ul>\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a\n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @namespace\n\t\t * @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\n\t\t/**\n\t\t * Store the applied search for each column - see\n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t * <li>Index 0 - column number</li>\n\t\t * <li>Index 1 - current sorting direction</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of\n\t\t * false will be used to cancel the draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data\n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\n\t\t/**\n\t\t * Search delay (in mS)\n\t\t * @type integer\n\t\t * @default null\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\t/**\n\t\t * The state duration (for `stateSave`) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"iStateDuration\": 0,\n\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an\n\t\t * object with the following parameters:\n\t\t * <ul>\n\t\t * <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t * and the JSON string to save that has been thus far created. Returns\n\t\t * a JSON string to be inserted into a json object\n\t\t * (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t * <li>string:sName - name of callback</li>\n\t\t * </ul>\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an\n\t\t * object with the following parameters:\n\t\t * <ul>\n\t\t * <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t * and the object stored. May return false to cancel state loading</li>\n\t\t * <li>string:sName - name of callback</li>\n\t\t * </ul>\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\n\t\t/**\n\t\t * State that was saved. Useful for back reference\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oSavedState\": null,\n\t\n\t\t/**\n\t\t * State that was loaded. Useful for back reference\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case\n\t\t * it is assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering.\n\t\t * This can be used for working with the XHR information in one of the\n\t\t * callbacks\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\n\t\t/**\n\t\t * JSON returned from the server in the last Ajax request\n\t\t * @type object\n\t\t * @default undefined\n\t\t */\n\t\t\"json\": undefined,\n\t\n\t\t/**\n\t\t * Data submitted as part of the last Ajax request\n\t\t * @type object\n\t\t * @default undefined\n\t\t */\n\t\t\"oAjaxData\": undefined,\n\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra\n\t\t * parameters can easily be sent to the server\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if\n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t * @type int\n\t\t * @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\n\t\t/**\n\t\t * Paging display length\n\t\t * @type int\n\t\t * @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t * @type int\n\t\t * @default 0\n\t\t * @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t * @type boolean\n\t\t * @default 0\n\t\t * @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\n\t\t/**\n\t\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type boolean\n\t\t */\n\t\t\"bJUI\": null,\n\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than\n\t\t * one unique cell per column, if the top one (true) or bottom one (false)\n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t * @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsTotal * 1 :\n\t\t\t\tthis.aiDisplayMaster.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t * @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsDisplay * 1 :\n\t\t\t\tthis.aiDisplay.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the display end point - aiDisplay index\n\t\t * @type function\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tvar\n\t\t\t\tlen = this._iDisplayLength,\n\t\t\t\tstart = this._iDisplayStart,\n\t\t\t\tcalc = start + len,\n\t\t\t\trecords = this.aiDisplay.length,\n\t\t\t\tfeatures = this.oFeatures,\n\t\t\t\tpaginate = features.bPaginate;\n\t\n\t\t\tif ( features.bServerSide ) {\n\t\t\t\treturn paginate === false || len === -1 ?\n\t\t\t\t\tstart + records :\n\t\t\t\t\tMath.min( start+len, this._iRecordsDisplay );\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn ! paginate || calc>records || len===-1 ?\n\t\t\t\t\trecords :\n\t\t\t\t\tcalc;\n\t\t\t}\n\t\t},\n\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null,\n\t\n\t\t/**\n\t\t * Last applied sort\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aLastSort\": [],\n\t\n\t\t/**\n\t\t * Stored plug-in instances\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\t\"oPlugins\": {}\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension\n\t * options.\n\t *\n\t * Note that the `DataTable.ext` object is available through\n\t * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is\n\t * also aliased to `jQuery.fn.dataTableExt` for historic reasons.\n\t * @namespace\n\t * @extends DataTable.models.ext\n\t */\n\t\n\t\n\t/**\n\t * DataTables extensions\n\t * \n\t * This namespace acts as a collection area for plug-ins that can be used to\n\t * extend DataTables capabilities. Indeed many of the build in methods\n\t * use this method to provide their own capabilities (sorting methods for\n\t * example).\n\t *\n\t * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy\n\t * reasons\n\t *\n\t * @namespace\n\t */\n\tDataTable.ext = _ext = {\n\t\t/**\n\t\t * Element class names\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\tclasses: {},\n\t\n\t\n\t\t/**\n\t\t * Error reporting.\n\t\t * \n\t\t * How should DataTables report an error. Can take the value 'alert' or\n\t\t * 'throw'\n\t\t *\n\t\t * @type string\n\t\t * @default alert\n\t\t */\n\t\terrMode: \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins.\n\t\t * \n\t\t * This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are then available for\n\t\t * use through the `dom` initialisation option.\n\t\t * \n\t\t * Each feature plug-in is described by an object which must have the\n\t\t * following properties:\n\t\t * \n\t\t * * `fnInit` - function that is used to initialise the plug-in,\n\t\t * * `cFeature` - a character so the feature can be enabled by the `dom`\n\t\t * instillation option. This is case sensitive.\n\t\t *\n\t\t * The `fnInit` function has the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t *\n\t\t * And the following return is expected:\n\t\t * \n\t\t * * {node|null} The element which contains your feature. Note that the\n\t\t * return may also be void if your plug-in does not require to inject any\n\t\t * DOM elements into DataTables control (`dom`) - for example this might\n\t\t * be useful when developing a plug-in which allows table control via\n\t\t * keyboard entry\n\t\t *\n\t\t * @type array\n\t\t *\n\t\t * @example\n\t\t * $.fn.dataTable.ext.features.push( {\n\t\t * \"fnInit\": function( oSettings ) {\n\t\t * return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t * },\n\t\t * \"cFeature\": \"T\"\n\t\t * } );\n\t\t */\n\t\tfeature: [],\n\t\n\t\n\t\t/**\n\t\t * Row searching.\n\t\t * \n\t\t * This method of searching is complimentary to the default type based\n\t\t * searching, and a lot more comprehensive as it allows you complete control\n\t\t * over the searching logic. Each element in this array is a function\n\t\t * (parameters described below) that is called for every row in the table,\n\t\t * and your logic decides if it should be included in the searching data set\n\t\t * or not.\n\t\t *\n\t\t * Searching functions have the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t * 2. `{array|object}` Data for the row to be processed (same as the\n\t\t * original format that was passed in as the data source, or an array\n\t\t * from a DOM data source\n\t\t * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which\n\t\t * can be useful to retrieve the `TR` element if you need DOM interaction.\n\t\t *\n\t\t * And the following return is expected:\n\t\t *\n\t\t * * {boolean} Include the row in the searched result set (true) or not\n\t\t * (false)\n\t\t *\n\t\t * Note that as with the main search ability in DataTables, technically this\n\t\t * is \"filtering\", since it is subtractive. However, for consistency in\n\t\t * naming we call it searching here.\n\t\t *\n\t\t * @type array\n\t\t * @default []\n\t\t *\n\t\t * @example\n\t\t * // The following example shows custom search being applied to the\n\t\t * // fourth column (i.e. the data[3] index) based on two input values\n\t\t * // from the end-user, matching the data in a certain range.\n\t\t * $.fn.dataTable.ext.search.push(\n\t\t * function( settings, data, dataIndex ) {\n\t\t * var min = document.getElementById('min').value * 1;\n\t\t * var max = document.getElementById('max').value * 1;\n\t\t * var version = data[3] == \"-\" ? 0 : data[3]*1;\n\t\t *\n\t\t * if ( min == \"\" && max == \"\" ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min == \"\" && version < max ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min < version && \"\" == max ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min < version && version < max ) {\n\t\t * return true;\n\t\t * }\n\t\t * return false;\n\t\t * }\n\t\t * );\n\t\t */\n\t\tsearch: [],\n\t\n\t\n\t\t/**\n\t\t * Internal functions, exposed for used in plug-ins.\n\t\t * \n\t\t * Please note that you should not need to use the internal methods for\n\t\t * anything other than a plug-in (and even then, try to avoid if possible).\n\t\t * The internal function may change between releases.\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\tinternal: {},\n\t\n\t\n\t\t/**\n\t\t * Legacy configuration options. Enable and disable legacy options that\n\t\t * are available in DataTables.\n\t\t *\n\t\t * @type object\n\t\t */\n\t\tlegacy: {\n\t\t\t/**\n\t\t\t * Enable / disable DataTables 1.9 compatible server-side processing\n\t\t\t * requests\n\t\t\t *\n\t\t\t * @type boolean\n\t\t\t * @default null\n\t\t\t */\n\t\t\tajax: null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods.\n\t\t * \n\t\t * Each entry in this object is a function and defines which buttons should\n\t\t * be shown by the pagination rendering method that is used for the table:\n\t\t * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the\n\t\t * buttons are displayed in the document, while the functions here tell it\n\t\t * what buttons to display. This is done by returning an array of button\n\t\t * descriptions (what each button will do).\n\t\t *\n\t\t * Pagination types (the four built in options and any additional plug-in\n\t\t * options defined here) can be used through the `paginationType`\n\t\t * initialisation parameter.\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{int} page` The current page index\n\t\t * 2. `{int} pages` The number of pages in the table\n\t\t *\n\t\t * Each function is expected to return an array where each element of the\n\t\t * array can be one of:\n\t\t *\n\t\t * * `first` - Jump to first page when activated\n\t\t * * `last` - Jump to last page when activated\n\t\t * * `previous` - Show previous page when activated\n\t\t * * `next` - Show next page when activated\n\t\t * * `{int}` - Show page of the index given\n\t\t * * `{array}` - A nested array containing the above elements to add a\n\t\t * containing 'DIV' element (might be useful for styling).\n\t\t *\n\t\t * Note that DataTables v1.9- used this object slightly differently whereby\n\t\t * an object with two functions would be defined for each plug-in. That\n\t\t * ability is still supported by DataTables 1.10+ to provide backwards\n\t\t * compatibility, but this option of use is now decremented and no longer\n\t\t * documented in DataTables 1.10+.\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t *\n\t\t * @example\n\t\t * // Show previous, next and current page buttons only\n\t\t * $.fn.dataTableExt.oPagination.current = function ( page, pages ) {\n\t\t * return [ 'previous', page, 'next' ];\n\t\t * };\n\t\t */\n\t\tpager: {},\n\t\n\t\n\t\trenderer: {\n\t\t\tpageButton: {},\n\t\t\theader: {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Ordering plug-ins - custom data source\n\t\t * \n\t\t * The extension options for ordering of data available here is complimentary\n\t\t * to the default type based ordering that DataTables typically uses. It\n\t\t * allows much greater control over the the data that is being used to\n\t\t * order a column, but is necessarily therefore more complex.\n\t\t * \n\t\t * This type of ordering is useful if you want to do ordering based on data\n\t\t * live from the DOM (for example the contents of an 'input' element) rather\n\t\t * than just the static string that DataTables knows of.\n\t\t * \n\t\t * The way these plug-ins work is that you create an array of the values you\n\t\t * wish to be ordering for the column in question and then return that\n\t\t * array. The data in the array much be in the index order of the rows in\n\t\t * the table (not the currently ordering order!). Which order data gathering\n\t\t * function is run here depends on the `dt-init columns.orderDataType`\n\t\t * parameter that is used for the column (if any).\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t * 2. `{int}` Target column index\n\t\t *\n\t\t * Each function is expected to return an array:\n\t\t *\n\t\t * * `{array}` Data for the column to be ordering upon\n\t\t *\n\t\t * @type array\n\t\t *\n\t\t * @example\n\t\t * // Ordering using `input` node values\n\t\t * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col )\n\t\t * {\n\t\t * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {\n\t\t * return $('input', td).val();\n\t\t * } );\n\t\t * }\n\t\t */\n\t\torder: {},\n\t\n\t\n\t\t/**\n\t\t * Type based plug-ins.\n\t\t *\n\t\t * Each column in DataTables has a type assigned to it, either by automatic\n\t\t * detection or by direct assignment using the `type` option for the column.\n\t\t * The type of a column will effect how it is ordering and search (plug-ins\n\t\t * can also make use of the column type if required).\n\t\t *\n\t\t * @namespace\n\t\t */\n\t\ttype: {\n\t\t\t/**\n\t\t\t * Type detection functions.\n\t\t\t *\n\t\t\t * The functions defined in this object are used to automatically detect\n\t\t\t * a column's type, making initialisation of DataTables super easy, even\n\t\t\t * when complex data is in the table.\n\t\t\t *\n\t\t\t * The functions defined take two parameters:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be analysed\n\t\t * 2. `{settings}` DataTables settings object. This can be used to\n\t\t * perform context specific type detection - for example detection\n\t\t * based on language settings such as using a comma for a decimal\n\t\t * place. Generally speaking the options from the settings will not\n\t\t * be required\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Data type detected, or null if unknown (and thus\n\t\t\t * pass it on to the other type detection functions.\n\t\t\t *\n\t\t\t * @type array\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Currency type detection plug-in:\n\t\t\t * $.fn.dataTable.ext.type.detect.push(\n\t\t\t * function ( data, settings ) {\n\t\t\t * // Check the numeric part\n\t\t\t * if ( ! $.isNumeric( data.substring(1) ) ) {\n\t\t\t * return null;\n\t\t\t * }\n\t\t\t *\n\t\t\t * // Check prefixed by currency\n\t\t\t * if ( data.charAt(0) == '$' || data.charAt(0) == '£' ) {\n\t\t\t * return 'currency';\n\t\t\t * }\n\t\t\t * return null;\n\t\t\t * }\n\t\t\t * );\n\t\t\t */\n\t\t\tdetect: [],\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based search formatting.\n\t\t\t *\n\t\t\t * The type based searching functions can be used to pre-format the\n\t\t\t * data to be search on. For example, it can be used to strip HTML\n\t\t\t * tags or to de-format telephone numbers for numeric only searching.\n\t\t\t *\n\t\t\t * Note that is a search is not defined for a column of a given type,\n\t\t\t * no search formatting will be performed.\n\t\t\t * \n\t\t\t * Pre-processing of searching data plug-ins - When you assign the sType\n\t\t\t * for a column (or have it automatically detected for you by DataTables\n\t\t\t * or a type detection plug-in), you will typically be using this for\n\t\t\t * custom sorting, but it can also be used to provide custom searching\n\t\t\t * by allowing you to pre-processing the data and returning the data in\n\t\t\t * the format that should be searched upon. This is done by adding\n\t\t\t * functions this object with a parameter name which matches the sType\n\t\t\t * for that target column. This is the corollary of <i>afnSortData</i>\n\t\t\t * for searching data.\n\t\t\t *\n\t\t\t * The functions defined take a single parameter:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be prepared for searching\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Formatted string that will be used for the searching.\n\t\t\t *\n\t\t\t * @type object\n\t\t\t * @default {}\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {\n\t\t\t * return d.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t * }\n\t\t\t */\n\t\t\tsearch: {},\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based ordering.\n\t\t\t *\n\t\t\t * The column type tells DataTables what ordering to apply to the table\n\t\t\t * when a column is sorted upon. The order for each type that is defined,\n\t\t\t * is defined by the functions available in this object.\n\t\t\t *\n\t\t\t * Each ordering option can be described by three properties added to\n\t\t\t * this object:\n\t\t\t *\n\t\t\t * * `{type}-pre` - Pre-formatting function\n\t\t\t * * `{type}-asc` - Ascending order function\n\t\t\t * * `{type}-desc` - Descending order function\n\t\t\t *\n\t\t\t * All three can be used together, only `{type}-pre` or only\n\t\t\t * `{type}-asc` and `{type}-desc` together. It is generally recommended\n\t\t\t * that only `{type}-pre` is used, as this provides the optimal\n\t\t\t * implementation in terms of speed, although the others are provided\n\t\t\t * for compatibility with existing Javascript sort functions.\n\t\t\t *\n\t\t\t * `{type}-pre`: Functions defined take a single parameter:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be prepared for ordering\n\t\t\t *\n\t\t\t * And return:\n\t\t\t *\n\t\t\t * * `{*}` Data to be sorted upon\n\t\t\t *\n\t\t\t * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort\n\t\t\t * functions, taking two parameters:\n\t\t\t *\n\t\t * 1. `{*}` Data to compare to the second parameter\n\t\t * 2. `{*}` Data to compare to the first parameter\n\t\t\t *\n\t\t\t * And returning:\n\t\t\t *\n\t\t\t * * `{*}` Ordering match: <0 if first parameter should be sorted lower\n\t\t\t * than the second parameter, ===0 if the two parameters are equal and\n\t\t\t * >0 if the first parameter should be sorted height than the second\n\t\t\t * parameter.\n\t\t\t * \n\t\t\t * @type object\n\t\t\t * @default {}\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Numeric ordering of formatted numbers with a pre-formatter\n\t\t\t * $.extend( $.fn.dataTable.ext.type.order, {\n\t\t\t * \"string-pre\": function(x) {\n\t\t\t * a = (a === \"-\" || a === \"\") ? 0 : a.replace( /[^\\d\\-\\.]/g, \"\" );\n\t\t\t * return parseFloat( a );\n\t\t\t * }\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Case-sensitive string ordering, with no pre-formatting method\n\t\t\t * $.extend( $.fn.dataTable.ext.order, {\n\t\t\t * \"string-case-asc\": function(x,y) {\n\t\t\t * return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t\t * },\n\t\t\t * \"string-case-desc\": function(x,y) {\n\t\t\t * return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t\t * }\n\t\t\t * } );\n\t\t\t */\n\t\t\torder: {}\n\t\t},\n\t\n\t\t/**\n\t\t * Unique DataTables instance counter\n\t\t *\n\t\t * @type int\n\t\t * @private\n\t\t */\n\t\t_unique: 0,\n\t\n\t\n\t\t//\n\t\t// Depreciated\n\t\t// The following properties are retained for backwards compatiblity only.\n\t\t// The should not be used in new projects and will be removed in a future\n\t\t// version\n\t\t//\n\t\n\t\t/**\n\t\t * Version check function.\n\t\t * @type function\n\t\t * @depreciated Since 1.10\n\t\t */\n\t\tfnVersionCheck: DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t * @type int\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\tiApiIndex: 0,\n\t\n\t\n\t\t/**\n\t\t * jQuery UI class container\n\t\t * @type object\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\toJUIClasses: {},\n\t\n\t\n\t\t/**\n\t\t * Software version\n\t\t * @type string\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\tsVersion: DataTable.version\n\t};\n\t\n\t\n\t//\n\t// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts\n\t//\n\t$.extend( _ext, {\n\t\tafnFiltering: _ext.search,\n\t\taTypes: _ext.type.detect,\n\t\tofnSearch: _ext.type.search,\n\t\toSort: _ext.type.order,\n\t\tafnSortData: _ext.order,\n\t\taoFeatures: _ext.feature,\n\t\toApi: _ext.internal,\n\t\toStdClasses: _ext.classes,\n\t\toPagination: _ext.pager\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.classes, {\n\t\t\"sTable\": \"dataTable\",\n\t\t\"sNoFooter\": \"no-footer\",\n\t\n\t\t/* Paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"current\",\n\t\t\"sPageButtonDisabled\": \"disabled\",\n\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\n\t\t/* Filtering */\n\t\t\"sFilterInput\": \"\",\n\t\n\t\t/* Page length */\n\t\t\"sLengthSelect\": \"\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\": \"\",\n\t\t\"sFooterTH\": \"\",\n\t\n\t\t// Deprecated\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\t(function() {\n\t\n\t// Reused strings for better compression. Closure compiler appears to have a\n\t// weird edge case where it is trying to expand strings rather than use the\n\t// variable version. This results in about 200 bytes being added, for very\n\t// little preference benefit since it this run on script load only.\n\tvar _empty = '';\n\t_empty = '';\n\t\n\tvar _stateDefault = _empty + 'ui-state-default';\n\tvar _sortIcon = _empty + 'css_right ui-icon ui-icon-';\n\tvar _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix';\n\t\n\t$.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, {\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"fg-button ui-button \"+_stateDefault,\n\t\t\"sPageButtonActive\": \"ui-state-disabled\",\n\t\t\"sPageButtonDisabled\": \"ui-state-disabled\",\n\t\n\t\t/* Features */\n\t\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": _stateDefault+\" sorting_asc\",\n\t\t\"sSortDesc\": _stateDefault+\" sorting_desc\",\n\t\t\"sSortable\": _stateDefault+\" sorting\",\n\t\t\"sSortableAsc\": _stateDefault+\" sorting_asc_disabled\",\n\t\t\"sSortableDesc\": _stateDefault+\" sorting_desc_disabled\",\n\t\t\"sSortableNone\": _stateDefault+\" sorting_disabled\",\n\t\t\"sSortJUIAsc\": _sortIcon+\"triangle-1-n\",\n\t\t\"sSortJUIDesc\": _sortIcon+\"triangle-1-s\",\n\t\t\"sSortJUI\": _sortIcon+\"carat-2-n-s\",\n\t\t\"sSortJUIAscAllowed\": _sortIcon+\"carat-1-n\",\n\t\t\"sSortJUIDescAllowed\": _sortIcon+\"carat-1-s\",\n\t\t\"sSortJUIWrapper\": \"DataTables_sort_wrapper\",\n\t\t\"sSortIcon\": \"DataTables_sort_icon\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollHead\": \"dataTables_scrollHead \"+_stateDefault,\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot \"+_stateDefault,\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\": _stateDefault,\n\t\t\"sFooterTH\": _stateDefault,\n\t\t\"sJUIHeader\": _headerFooter+\" ui-corner-tl ui-corner-tr\",\n\t\t\"sJUIFooter\": _headerFooter+\" ui-corner-bl ui-corner-br\"\n\t} );\n\t\n\t}());\n\t\n\t\n\t\n\tvar extPagination = DataTable.ext.pager;\n\t\n\tfunction _numbers ( page, pages ) {\n\t\tvar\n\t\t\tnumbers = [],\n\t\t\tbuttons = extPagination.numbers_length,\n\t\t\thalf = Math.floor( buttons / 2 ),\n\t\t\ti = 1;\n\t\n\t\tif ( pages <= buttons ) {\n\t\t\tnumbers = _range( 0, pages );\n\t\t}\n\t\telse if ( page <= half ) {\n\t\t\tnumbers = _range( 0, buttons-2 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t}\n\t\telse if ( page >= pages - 1 - half ) {\n\t\t\tnumbers = _range( pages-(buttons-2), pages );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\telse {\n\t\t\tnumbers = _range( page-1, page+2 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' );\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\n\t\tnumbers.DT_el = 'span';\n\t\treturn numbers;\n\t}\n\t\n\t\n\t$.extend( extPagination, {\n\t\tsimple: function ( page, pages ) {\n\t\t\treturn [ 'previous', 'next' ];\n\t\t},\n\t\n\t\tfull: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', 'next', 'last' ];\n\t\t},\n\t\n\t\tsimple_numbers: function ( page, pages ) {\n\t\t\treturn [ 'previous', _numbers(page, pages), 'next' ];\n\t\t},\n\t\n\t\tfull_numbers: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];\n\t\t},\n\t\n\t\t// For testing and plug-ins to use\n\t\t_numbers: _numbers,\n\t\tnumbers_length: 7\n\t} );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\tpageButton: {\n\t\t\t_: function ( settings, host, idx, buttons, page, pages ) {\n\t\t\t\tvar classes = settings.oClasses;\n\t\t\t\tvar lang = settings.oLanguage.oPaginate;\n\t\t\t\tvar btnDisplay, btnClass, counter=0;\n\t\n\t\t\t\tvar attach = function( container, buttons ) {\n\t\t\t\t\tvar i, ien, node, button;\n\t\t\t\t\tvar clickHandler = function ( e ) {\n\t\t\t\t\t\t_fnPageChange( settings, e.data.action, true );\n\t\t\t\t\t};\n\t\n\t\t\t\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tbutton = buttons[i];\n\t\n\t\t\t\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\t\t\t\tvar inner = $( '<'+(button.DT_el || 'div')+'/>' )\n\t\t\t\t\t\t\t\t.appendTo( container );\n\t\t\t\t\t\t\tattach( inner, button );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbtnDisplay = '';\n\t\t\t\t\t\t\tbtnClass = '';\n\t\n\t\t\t\t\t\t\tswitch ( button ) {\n\t\t\t\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\t\t\t\tcontainer.append('<span>…</span>');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'first':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'last':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t\t\t\tclasses.sPageButtonActive : '';\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\t\t\t\tnode = $('<a>', {\n\t\t\t\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t\t\t\t.appendTo( container );\n\t\n\t\t\t\t\t\t\t\t_fnBindAction(\n\t\t\t\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t\t\t\t);\n\t\n\t\t\t\t\t\t\t\tcounter++;\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\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame. Try / catch the error. Not good for\n\t\t\t\t// accessibility, but neither are frames.\n\t\t\t\ttry {\n\t\t\t\t\t// Because this approach is destroying and recreating the paging\n\t\t\t\t\t// elements, focus is lost on the select button which is bad for\n\t\t\t\t\t// accessibility. So we want to restore focus once the draw has\n\t\t\t\t\t// completed\n\t\t\t\t\tvar activeEl = $(document.activeElement).data('dt-idx');\n\t\n\t\t\t\t\tattach( $(host).empty(), buttons );\n\t\n\t\t\t\t\tif ( activeEl !== null ) {\n\t\t\t\t\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (e) {}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t\n\t\n\t// Built in type detection. See model.ext.aTypes for information about\n\t// what is required from this methods.\n\t$.extend( DataTable.ext.type.detect, [\n\t\t// Plain numbers - first since V8 detects some plain numbers as dates\n\t\t// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal ) ? 'num'+decimal : null;\n\t\t},\n\t\n\t\t// Dates (only those recognised by the browser's Date.parse)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\t// V8 will remove any unknown characters at the start and end of the\n\t\t\t// expression, leading to false matches such as `$245.12` or `10%` being\n\t\t\t// a valid date. See forum thread 18941 for detail.\n\t\t\tif ( d && !(d instanceof Date) && ( ! _re_date_start.test(d) || ! _re_date_end.test(d) ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar parsed = Date.parse(d);\n\t\t\treturn (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;\n\t\t},\n\t\n\t\t// Formatted numbers\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric, formatted\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML (this is strict checking - there must be html)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\treturn _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?\n\t\t\t\t'html' : null;\n\t\t}\n\t] );\n\t\n\t\n\t\n\t// Filter formatting functions. See model.ext.ofnSearch for information about\n\t// what is required from these methods.\n\t// \n\t// Note that additional search methods are added for the html numbers and\n\t// html formatted numbers by `_addNumericSort()` when we know what the decimal\n\t// place is\n\t\n\t\n\t$.extend( DataTable.ext.type.search, {\n\t\thtml: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata\n\t\t\t\t\t\t.replace( _re_new_lines, \" \" )\n\t\t\t\t\t\t.replace( _re_html, \"\" ) :\n\t\t\t\t\t'';\n\t\t},\n\t\n\t\tstring: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata.replace( _re_new_lines, \" \" ) :\n\t\t\t\t\tdata;\n\t\t}\n\t} );\n\t\n\t\n\t\n\tvar __numericReplace = function ( d, decimalPlace, re1, re2 ) {\n\t\tif ( d !== 0 && (!d || d === '-') ) {\n\t\t\treturn -Infinity;\n\t\t}\n\t\n\t\t// If a decimal place other than `.` is used, it needs to be given to the\n\t\t// function so we can detect it and replace with a `.` which is the only\n\t\t// decimal place Javascript recognises - it is not locale aware.\n\t\tif ( decimalPlace ) {\n\t\t\td = _numToDecimal( d, decimalPlace );\n\t\t}\n\t\n\t\tif ( d.replace ) {\n\t\t\tif ( re1 ) {\n\t\t\t\td = d.replace( re1, '' );\n\t\t\t}\n\t\n\t\t\tif ( re2 ) {\n\t\t\t\td = d.replace( re2, '' );\n\t\t\t}\n\t\t}\n\t\n\t\treturn d * 1;\n\t};\n\t\n\t\n\t// Add the numeric 'deformatting' functions for sorting and search. This is done\n\t// in a function to provide an easy ability for the language options to add\n\t// additional methods if a non-period decimal place is used.\n\tfunction _addNumericSort ( decimalPlace ) {\n\t\t$.each(\n\t\t\t{\n\t\t\t\t// Plain numbers\n\t\t\t\t\"num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace );\n\t\t\t\t},\n\t\n\t\t\t\t// Formatted numbers\n\t\t\t\t\"num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_formatted_numeric );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric\n\t\t\t\t\"html-num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric, formatted\n\t\t\t\t\"html-num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction ( key, fn ) {\n\t\t\t\t// Add the ordering method\n\t\t\t\t_ext.type.order[ key+decimalPlace+'-pre' ] = fn;\n\t\n\t\t\t\t// For HTML types add a search formatter that will strip the HTML\n\t\t\t\tif ( key.match(/^html\\-/) ) {\n\t\t\t\t\t_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\t\n\t\n\t// Default sort methods\n\t$.extend( _ext.type.order, {\n\t\t// Dates\n\t\t\"date-pre\": function ( d ) {\n\t\t\treturn Date.parse( d ) || 0;\n\t\t},\n\t\n\t\t// html\n\t\t\"html-pre\": function ( a ) {\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ta.replace ?\n\t\t\t\t\ta.replace( /<.*?>/g, \"\" ).toLowerCase() :\n\t\t\t\t\ta+'';\n\t\t},\n\t\n\t\t// string\n\t\t\"string-pre\": function ( a ) {\n\t\t\t// This is a little complex, but faster than always calling toString,\n\t\t\t// http://jsperf.com/tostring-v-check\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ttypeof a === 'string' ?\n\t\t\t\t\ta.toLowerCase() :\n\t\t\t\t\t! a.toString ?\n\t\t\t\t\t\t'' :\n\t\t\t\t\t\ta.toString();\n\t\t},\n\t\n\t\t// string-asc and -desc are retained only for compatibility with the old\n\t\t// sort methods\n\t\t\"string-asc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\n\t\t\"string-desc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t}\n\t} );\n\t\n\t\n\t// Numeric sorting types - order doesn't matter here\n\t_addNumericSort( '' );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\theader: {\n\t\t\t_: function ( settings, cell, column, classes ) {\n\t\t\t\t// No additional mark-up required\n\t\t\t\t// Attach a sort listener to update on sort - note that using the\n\t\t\t\t// `DT` namespace will allow the event to be removed automatically\n\t\t\t\t// on destroy, while the `dt` namespaced event is the one we are\n\t\t\t\t// listening for\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) { // need to check this this is the host\n\t\t\t\t\t\treturn; // table, not a nested one\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tcolumn.sSortingClass +' '+\n\t\t\t\t\t\t\tclasses.sSortAsc +' '+\n\t\t\t\t\t\t\tclasses.sSortDesc\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\tjqueryui: function ( settings, cell, column, classes ) {\n\t\t\t\t$('<div/>')\n\t\t\t\t\t.addClass( classes.sSortJUIWrapper )\n\t\t\t\t\t.append( cell.contents() )\n\t\t\t\t\t.append( $('<span/>')\n\t\t\t\t\t\t.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )\n\t\t\t\t\t)\n\t\t\t\t\t.appendTo( cell );\n\t\n\t\t\t\t// Attach a sort listener to update on sort\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass( classes.sSortAsc +\" \"+classes.sSortDesc )\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.find( 'span.'+classes.sSortIcon )\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tclasses.sSortJUIAsc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDesc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUI +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIAscAllowed +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDescAllowed\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortJUIAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortJUIDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClassJUI\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t/*\n\t * Public helper functions. These aren't used internally by DataTables, or\n\t * called by any of the options passed into DataTables, but they can be used\n\t * externally by developers working with DataTables. They are helper functions\n\t * to make working with DataTables a little bit easier.\n\t */\n\t\n\t/**\n\t * Helpers for `columns.render`.\n\t *\n\t * The options defined here can be used with the `columns.render` initialisation\n\t * option to provide a display renderer. The following functions are defined:\n\t *\n\t * * `number` - Will format numeric data (defined by `columns.data`) for\n\t * display, retaining the original unformatted data for sorting and filtering.\n\t * It takes 4 parameters:\n\t * * `string` - Thousands grouping separator\n\t * * `string` - Decimal point indicator\n\t * * `integer` - Number of decimal points to show\n\t * * `string` (optional) - Prefix.\n\t *\n\t * @example\n\t * // Column definition using the number renderer\n\t * {\n\t * data: \"salary\",\n\t * render: $.fn.dataTable.render.number( '\\'', '.', 0, '$' )\n\t * }\n\t *\n\t * @namespace\n\t */\n\tDataTable.render = {\n\t\tnumber: function ( thousands, decimal, precision, prefix ) {\n\t\t\treturn {\n\t\t\t\tdisplay: function ( d ) {\n\t\t\t\t\tvar negative = d < 0 ? '-' : '';\n\t\t\t\t\td = Math.abs( parseFloat( d ) );\n\t\n\t\t\t\t\tvar intPart = parseInt( d, 10 );\n\t\t\t\t\tvar floatPart = precision ?\n\t\t\t\t\t\tdecimal+(d - intPart).toFixed( precision ).substring( 2 ):\n\t\t\t\t\t\t'';\n\t\n\t\t\t\t\treturn negative + (prefix||'') +\n\t\t\t\t\t\tintPart.toString().replace(\n\t\t\t\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g, thousands\n\t\t\t\t\t\t) +\n\t\t\t\t\t\tfloatPart;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n\t\n\t\n\t/*\n\t * This is really a good bit rubbish this method of exposing the internal methods\n\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t */\n\t\n\t\n\t/**\n\t * Create a wrapper function for exporting an internal functions to an external API.\n\t * @param {string} fn API function name\n\t * @returns {function} wrapped function\n\t * @memberof DataTable#internal\n\t */\n\tfunction _fnExternApiFunc (fn)\n\t{\n\t\treturn function() {\n\t\t\tvar args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(\n\t\t\t\tArray.prototype.slice.call(arguments)\n\t\t\t);\n\t\t\treturn DataTable.ext.internal[fn].apply( this, args );\n\t\t};\n\t}\n\t\n\t\n\t/**\n\t * Reference to internal functions for use by plug-in developers. Note that\n\t * these methods are references to internal functions and are considered to be\n\t * private. If you use these methods, be aware that they are liable to change\n\t * between versions.\n\t * @namespace\n\t */\n\t$.extend( DataTable.ext.internal, {\n\t\t_fnExternApiFunc: _fnExternApiFunc,\n\t\t_fnBuildAjax: _fnBuildAjax,\n\t\t_fnAjaxUpdate: _fnAjaxUpdate,\n\t\t_fnAjaxParameters: _fnAjaxParameters,\n\t\t_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,\n\t\t_fnAjaxDataSrc: _fnAjaxDataSrc,\n\t\t_fnAddColumn: _fnAddColumn,\n\t\t_fnColumnOptions: _fnColumnOptions,\n\t\t_fnAdjustColumnSizing: _fnAdjustColumnSizing,\n\t\t_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,\n\t\t_fnColumnIndexToVisible: _fnColumnIndexToVisible,\n\t\t_fnVisbleColumns: _fnVisbleColumns,\n\t\t_fnGetColumns: _fnGetColumns,\n\t\t_fnColumnTypes: _fnColumnTypes,\n\t\t_fnApplyColumnDefs: _fnApplyColumnDefs,\n\t\t_fnHungarianMap: _fnHungarianMap,\n\t\t_fnCamelToHungarian: _fnCamelToHungarian,\n\t\t_fnLanguageCompat: _fnLanguageCompat,\n\t\t_fnBrowserDetect: _fnBrowserDetect,\n\t\t_fnAddData: _fnAddData,\n\t\t_fnAddTr: _fnAddTr,\n\t\t_fnNodeToDataIndex: _fnNodeToDataIndex,\n\t\t_fnNodeToColumnIndex: _fnNodeToColumnIndex,\n\t\t_fnGetCellData: _fnGetCellData,\n\t\t_fnSetCellData: _fnSetCellData,\n\t\t_fnSplitObjNotation: _fnSplitObjNotation,\n\t\t_fnGetObjectDataFn: _fnGetObjectDataFn,\n\t\t_fnSetObjectDataFn: _fnSetObjectDataFn,\n\t\t_fnGetDataMaster: _fnGetDataMaster,\n\t\t_fnClearTable: _fnClearTable,\n\t\t_fnDeleteIndex: _fnDeleteIndex,\n\t\t_fnInvalidate: _fnInvalidate,\n\t\t_fnGetRowElements: _fnGetRowElements,\n\t\t_fnCreateTr: _fnCreateTr,\n\t\t_fnBuildHead: _fnBuildHead,\n\t\t_fnDrawHead: _fnDrawHead,\n\t\t_fnDraw: _fnDraw,\n\t\t_fnReDraw: _fnReDraw,\n\t\t_fnAddOptionsHtml: _fnAddOptionsHtml,\n\t\t_fnDetectHeader: _fnDetectHeader,\n\t\t_fnGetUniqueThs: _fnGetUniqueThs,\n\t\t_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,\n\t\t_fnFilterComplete: _fnFilterComplete,\n\t\t_fnFilterCustom: _fnFilterCustom,\n\t\t_fnFilterColumn: _fnFilterColumn,\n\t\t_fnFilter: _fnFilter,\n\t\t_fnFilterCreateSearch: _fnFilterCreateSearch,\n\t\t_fnEscapeRegex: _fnEscapeRegex,\n\t\t_fnFilterData: _fnFilterData,\n\t\t_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,\n\t\t_fnUpdateInfo: _fnUpdateInfo,\n\t\t_fnInfoMacros: _fnInfoMacros,\n\t\t_fnInitialise: _fnInitialise,\n\t\t_fnInitComplete: _fnInitComplete,\n\t\t_fnLengthChange: _fnLengthChange,\n\t\t_fnFeatureHtmlLength: _fnFeatureHtmlLength,\n\t\t_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,\n\t\t_fnPageChange: _fnPageChange,\n\t\t_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,\n\t\t_fnProcessingDisplay: _fnProcessingDisplay,\n\t\t_fnFeatureHtmlTable: _fnFeatureHtmlTable,\n\t\t_fnScrollDraw: _fnScrollDraw,\n\t\t_fnApplyToChildren: _fnApplyToChildren,\n\t\t_fnCalculateColumnWidths: _fnCalculateColumnWidths,\n\t\t_fnThrottle: _fnThrottle,\n\t\t_fnConvertToWidth: _fnConvertToWidth,\n\t\t_fnScrollingWidthAdjust: _fnScrollingWidthAdjust,\n\t\t_fnGetWidestNode: _fnGetWidestNode,\n\t\t_fnGetMaxLenString: _fnGetMaxLenString,\n\t\t_fnStringToCss: _fnStringToCss,\n\t\t_fnScrollBarWidth: _fnScrollBarWidth,\n\t\t_fnSortFlatten: _fnSortFlatten,\n\t\t_fnSort: _fnSort,\n\t\t_fnSortAria: _fnSortAria,\n\t\t_fnSortListener: _fnSortListener,\n\t\t_fnSortAttachListener: _fnSortAttachListener,\n\t\t_fnSortingClasses: _fnSortingClasses,\n\t\t_fnSortData: _fnSortData,\n\t\t_fnSaveState: _fnSaveState,\n\t\t_fnLoadState: _fnLoadState,\n\t\t_fnSettingsFromNode: _fnSettingsFromNode,\n\t\t_fnLog: _fnLog,\n\t\t_fnMap: _fnMap,\n\t\t_fnBindAction: _fnBindAction,\n\t\t_fnCallbackReg: _fnCallbackReg,\n\t\t_fnCallbackFire: _fnCallbackFire,\n\t\t_fnLengthOverflow: _fnLengthOverflow,\n\t\t_fnRenderer: _fnRenderer,\n\t\t_fnDataSource: _fnDataSource,\n\t\t_fnRowAttributes: _fnRowAttributes,\n\t\t_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant\n\t\t // in 1.10, so this dead-end function is\n\t\t // added to prevent errors\n\t} );\n\t\n\n\t// jQuery access\n\t$.fn.dataTable = DataTable;\n\n\t// Legacy aliases\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\t// With a capital `D` we return a DataTables API instance rather than a\n\t// jQuery object\n\t$.fn.DataTable = function ( opts ) {\n\t\treturn $(this).dataTable( opts ).api();\n\t};\n\n\t// All properties that are available to $.fn.dataTable should also be\n\t// available on $.fn.DataTable\n\t$.each( DataTable, function ( prop, val ) {\n\t\t$.fn.DataTable[ prop ] = val;\n\t} );\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same\n\t * point as fnDrawCallback. This may be useful for binding events or\n\t * performing calculations when the table is altered at all.\n\t * @name DataTable#draw.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Search event, fired when the searching applied to the table (using the\n\t * built-in global search, or column filters) is altered.\n\t * @name DataTable#search.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t * @name DataTable#page.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Order event, fired when the ordering applied to the table is altered.\n\t * @name DataTable#order.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully\n\t * drawn, including Ajax data loaded, if Ajax data is required.\n\t * @name DataTable#init.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {object} json The JSON object request from the server - only\n\t * present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save\n\t * is required. This event allows modification of the state saving object\n\t * prior to actually doing the save, including addition or other state\n\t * properties (for plug-ins) or modification of a DataTables core property.\n\t * @name DataTable#stateSaveParams.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored\n\t * data, but prior to the settings object being modified by the saved state\n\t * - allowing modification of the saved state is required or loading of\n\t * state for a plug-in.\n\t * @name DataTable#stateLoadParams.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and\n\t * the settings object has been modified by the loaded data.\n\t * @name DataTable#stateLoaded.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing\n\t * (be it, order, searcg or anything else). It can be used to indicate to\n\t * the end user that there is something happening, or that something has\n\t * finished.\n\t * @name DataTable#processing.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a\n\t * request to made to the server for new data. This event is called before\n\t * DataTables processed the returned data, so it can also be used to pre-\n\t * process the data returned from the server, if needed.\n\t *\n\t * Note that this trigger is called in `fnServerData`, if you override\n\t * `fnServerData` and which to use this event, you need to trigger it in you\n\t * success function.\n\t * @name DataTable#xhr.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t * @param {object} json JSON returned from the server\n\t *\n\t * @example\n\t * // Use a custom property returned from the server in another DOM element\n\t * $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t * $('#status').html( json.status );\n\t * } );\n\t *\n\t * @example\n\t * // Pre-process the data returned from the server\n\t * $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t * for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {\n\t * json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;\n\t * }\n\t * // Note no return - manipulate the data directly in the JSON object.\n\t * } );\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy\n\t * or passing the bDestroy:true parameter in the initialisation object. This\n\t * can be used to remove bound events, added DOM nodes, etc.\n\t * @name DataTable#destroy.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page length change event, fired when number of records to show on each\n\t * page (the length) is changed.\n\t * @name DataTable#length.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t * @param {integer} len New length\n\t */\n\n\t/**\n\t * Column sizing has changed.\n\t * @name DataTable#column-sizing.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Column visibility has changed.\n\t * @name DataTable#column-visibility.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t * @param {int} column Column index\n\t * @param {bool} vis `false` if column now hidden, or `true` if visible\n\t */\n\n\treturn $.fn.dataTable;\n}));\n\n}(window, document));\n\n","(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery','datatables'], factory);\n }\n else {\n factory(jQuery);\n }\n}(function ($) {\n /* Set the defaults for DataTables initialisation */\n\t$.extend( true, $.fn.dataTable.defaults, {\n\t\t\"sDom\": \"<'row'<'col-sm-12'<'pull-right'f><'pull-left'l>r<'clearfix'>>>t<'row'<'col-sm-12'<'pull-left'i><'pull-right'p><'clearfix'>>>\",\n\t\t\"sPaginationType\": \"bs_normal\",\n\t\t/* At the moment, this is the easiest way I could find to sneak these into oSettings without them getting wiped by _fnMap. */\n\t\t\"oLanguage\": {\n\t\t\t\"sIconClassFirst\": \"glyphicon glyphicon-backward\",\n\t\t\t\"sIconClassLast\": \"glyphicon glyphicon-forward\",\n\t\t\t\"sIconClassPrevious\": \"glyphicon glyphicon-chevron-left\",\n\t\t\t\"sIconClassNext\": \"glyphicon glyphicon-chevron-right\"\n\t\t}\n\t} );\n\n\t/* Default class modification */\n\t$.extend( $.fn.dataTableExt.oStdClasses, {\n\t\t\"sWrapper\": \"dataTables_wrapper form-inline\"\n\t} );\n\n\t/* API method to get paging information */\n\t$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )\n\t{\n\t\treturn {\n\t\t\t\"iStart\": oSettings._iDisplayStart,\n\t\t\t\"iEnd\": oSettings.fnDisplayEnd(),\n\t\t\t\"iLength\": oSettings._iDisplayLength,\n\t\t\t\"iTotal\": oSettings.fnRecordsTotal(),\n\t\t\t\"iFilteredTotal\": oSettings.fnRecordsDisplay(),\n\t\t\t\"iPage\": oSettings._iDisplayLength === -1 ?\n\t\t\t\t0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),\n\t\t\t\"iTotalPages\": oSettings._iDisplayLength === -1 ?\n\t\t\t\t0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )\n\t\t};\n\t};\n\n\t/* Bootstrap style pagination control */\n\t$.extend( $.fn.dataTableExt.oPagination, {\n\t\t\"bs_normal\": {\n\t\t\t\"fnInit\": function( oSettings, nPaging, fnDraw ) {\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {\n\t\t\t\t\t\tfnDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t$(nPaging).append(\n\t\t\t\t\t'<ul class=\"pagination\">'+\n\t\t\t\t\t\t'<li class=\"prev disabled\"><a href=\"#\"><span class=\"'+oSettings.oLanguage.sIconClassPrevious+'\"></span> '+oLang.sPrevious+'</a></li>'+\n\t\t\t\t\t\t'<li class=\"next disabled\"><a href=\"#\">'+oLang.sNext+' <span class=\"'+oSettings.oLanguage.sIconClassNext+'\"></span></a></li>'+\n\t\t\t\t\t'</ul>'\n\t\t\t\t);\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\t$(els[0]).bind( 'click.DT', { action: \"previous\" }, fnClickHandler );\n\t\t\t\t$(els[1]).bind( 'click.DT', { action: \"next\" }, fnClickHandler );\n\t\t\t},\n\t\t\t\"fnUpdate\": function ( oSettings, fnDraw ) {\n\t\t\t\tvar iListLength = 5;\n\t\t\t\tvar oPaging = oSettings.oInstance.fnPagingInfo();\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar i, ien, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);\n\t\t\t\tif ( oPaging.iTotalPages < iListLength) {\n\t\t\t\t\tiStart = 1;\n\t\t\t\t\tiEnd = oPaging.iTotalPages;\n\t\t\t\t}\n\t\t\t\telse if ( oPaging.iPage <= iHalf ) {\n\t\t\t\t\tiStart = 1;\n\t\t\t\t\tiEnd = iListLength;\n\t\t\t\t} else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {\n\t\t\t\t\tiStart = oPaging.iTotalPages - iListLength + 1;\n\t\t\t\t\tiEnd = oPaging.iTotalPages;\n\t\t\t\t} else {\n\t\t\t\t\tiStart = oPaging.iPage - iHalf + 1;\n\t\t\t\t\tiEnd = iStart + iListLength - 1;\n\t\t\t\t}\n\t\t\t\tfor ( i=0, ien=an.length ; i<ien ; i++ ) {\n\t\t\t\t\t$('li:gt(0)', an[i]).filter(':not(:last)').remove();\n\t\t\t\t\tfor ( j=iStart ; j<=iEnd ; j++ ) {\n\t\t\t\t\t\tsClass = (j==oPaging.iPage+1) ? 'class=\"active\"' : '';\n\t\t\t\t\t\t$('<li '+sClass+'><a href=\"#\">'+j+'</a></li>')\n\t\t\t\t\t\t\t.insertBefore( $('li:last', an[i])[0] )\n\t\t\t\t\t\t\t.bind('click', function (e) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif ( oSettings.oApi._fnPageChange(oSettings, parseInt($('a', this).text(),10)-1) ) {\n\t\t\t\t\t\t\t\t\tfnDraw( oSettings );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\tif ( oPaging.iPage === 0 ) {\n\t\t\t\t\t\t$('li:first', an[i]).addClass('disabled');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('li:first', an[i]).removeClass('disabled');\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n\t\t\t\t\t\t$('li:last', an[i]).addClass('disabled');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('li:last', an[i]).removeClass('disabled');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\t\n\t\t\"bs_two_button\": {\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t{\n\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tvar sAppend = '<ul class=\"pagination\">'+\n\t\t\t\t\t'<li class=\"prev\"><a class=\"'+oSettings.oClasses.sPagePrevDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\"><span class=\"'+oSettings.oLanguage.sIconClassPrevious+'\"></span> '+oLang.sPrevious+'</a></li>'+\n\t\t\t\t\t'<li class=\"next\"><a class=\"'+oSettings.oClasses.sPageNextDisabled+'\" tabindex=\"'+oSettings.iTabIndex+'\" role=\"button\">'+oLang.sNext+' <span class=\"'+oSettings.oLanguage.sIconClassNext+'\"></span></a></li>'+\n\t\t\t\t\t'</ul>';\n\t\t\t\t$(nPaging).append( sAppend );\n\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\tvar nPrevious = els[0],\n\t\t\t\t\tnNext = els[1];\n\t\t\t\toSettings.oApi._fnBindAction( nPrevious, {action: \"previous\"}, fnClickHandler );\n\t\t\t\toSettings.oApi._fnBindAction( nNext, {action: \"next\"}, fnClickHandler );\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\tnPrevious.id = oSettings.sTableId+'_previous';\n\t\t\t\t\tnNext.id = oSettings.sTableId+'_next';\n\t\t\t\t\tnPrevious.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t\tnNext.setAttribute('aria-controls', oSettings.sTableId);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar oPaging = oSettings.oInstance.fnPagingInfo();\n\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\tvar nNode;\n\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tif ( oPaging.iPage === 0 ) {\n\t\t\t\t\t\t$('li:first', an[i]).addClass('disabled');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('li:first', an[i]).removeClass('disabled');\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n\t\t\t\t\t\t$('li:last', an[i]).addClass('disabled');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('li:last', an[i]).removeClass('disabled');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"bs_four_button\": {\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t\t{\n\t\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t$(nPaging).append(\n\t\t\t\t\t\t'<ul class=\"pagination\">'+\n\t\t\t\t\t\t'<li class=\"disabled\"><a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageFirst+'\"><span class=\"'+oSettings.oLanguage.sIconClassFirst+'\"></span> '+oLang.sFirst+'</a></li>'+\n\t\t\t\t\t\t'<li class=\"disabled\"><a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPagePrevious+'\"><span class=\"'+oSettings.oLanguage.sIconClassPrevious+'\"></span> '+oLang.sPrevious+'</a></li>'+\n\t\t\t\t\t\t'<li><a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageNext+'\">'+oLang.sNext+' <span class=\"'+oSettings.oLanguage.sIconClassNext+'\"></span></a></li>'+\n\t\t\t\t\t\t'<li><a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageLast+'\">'+oLang.sLast+' <span class=\"'+oSettings.oLanguage.sIconClassLast+'\"></span></a></li>'+\n\t\t\t\t\t\t'</ul>'\n\t\t\t\t\t);\n\t\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\t\tvar nFirst = els[0],\n\t\t\t\t\t\tnPrev = els[1],\n\t\t\t\t\t\tnNext = els[2],\n\t\t\t\t\t\tnLast = els[3];\n\t\t\t\t\toSettings.oApi._fnBindAction( nFirst, {action: \"first\"}, fnClickHandler );\n\t\t\t\t\toSettings.oApi._fnBindAction( nPrev, {action: \"previous\"}, fnClickHandler );\n\t\t\t\t\toSettings.oApi._fnBindAction( nNext, {action: \"next\"}, fnClickHandler );\n\t\t\t\t\toSettings.oApi._fnBindAction( nLast, {action: \"last\"}, fnClickHandler );\n\t\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t\t{\n\t\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\t\tnFirst.id =oSettings.sTableId+'_first';\n\t\t\t\t\t\tnPrev.id =oSettings.sTableId+'_previous';\n\t\t\t\t\t\tnNext.id =oSettings.sTableId+'_next';\n\t\t\t\t\t\tnLast.id =oSettings.sTableId+'_last';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t\t{\n\t\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar oPaging = oSettings.oInstance.fnPagingInfo();\n\t\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\t\tvar nNode;\n\t\t\t\t\tfor ( var i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( oPaging.iPage === 0 ) {\n\t\t\t\t\t\t\t$('li:eq(0)', an[i]).addClass('disabled');\n\t\t\t\t\t\t\t$('li:eq(1)', an[i]).addClass('disabled');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$('li:eq(0)', an[i]).removeClass('disabled');\n\t\t\t\t\t\t\t$('li:eq(1)', an[i]).removeClass('disabled');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n\t\t\t\t\t\t\t$('li:eq(2)', an[i]).addClass('disabled');\n\t\t\t\t\t\t\t$('li:eq(3)', an[i]).addClass('disabled');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$('li:eq(2)', an[i]).removeClass('disabled');\n\t\t\t\t\t\t\t$('li:eq(3)', an[i]).removeClass('disabled');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t},\n\t\t\"bs_full\": {\n\t\t\t\"fnInit\": function ( oSettings, nPaging, fnCallbackDraw )\n\t\t\t\t{\n\t\t\t\t\tvar oLang = oSettings.oLanguage.oPaginate;\n\t\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\t\tvar fnClickHandler = function ( e ) {\n\t\t\t\t\t\tif ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t$(nPaging).append(\n\t\t\t\t\t\t'<ul class=\"pagination\">'+\n\t\t\t\t\t\t'<li class=\"disabled\"><a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageFirst+'\">'+oLang.sFirst+'</a></li>'+\n\t\t\t\t\t\t'<li class=\"disabled\"><a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPagePrevious+'\">'+oLang.sPrevious+'</a></li>'+\n\t\t\t\t\t\t'<li><a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageNext+'\">'+oLang.sNext+'</a></li>'+\n\t\t\t\t\t\t'<li><a tabindex=\"'+oSettings.iTabIndex+'\" class=\"'+oClasses.sPageButton+\" \"+oClasses.sPageLast+'\">'+oLang.sLast+'</a></li>'+\n\t\t\t\t\t\t'</ul>'\n\t\t\t\t\t);\n\t\t\t\t\tvar els = $('a', nPaging);\n\t\t\t\t\tvar nFirst = els[0],\n\t\t\t\t\t\tnPrev = els[1],\n\t\t\t\t\t\tnNext = els[2],\n\t\t\t\t\t\tnLast = els[3];\n\t\t\t\t\toSettings.oApi._fnBindAction( nFirst, {action: \"first\"}, fnClickHandler );\n\t\t\t\t\toSettings.oApi._fnBindAction( nPrev, {action: \"previous\"}, fnClickHandler );\n\t\t\t\t\toSettings.oApi._fnBindAction( nNext, {action: \"next\"}, fnClickHandler );\n\t\t\t\t\toSettings.oApi._fnBindAction( nLast, {action: \"last\"}, fnClickHandler );\n\t\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t\t{\n\t\t\t\t\t\tnPaging.id = oSettings.sTableId+'_paginate';\n\t\t\t\t\t\tnFirst.id =oSettings.sTableId+'_first';\n\t\t\t\t\t\tnPrev.id =oSettings.sTableId+'_previous';\n\t\t\t\t\t\tnNext.id =oSettings.sTableId+'_next';\n\t\t\t\t\t\tnLast.id =oSettings.sTableId+'_last';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\"fnUpdate\": function ( oSettings, fnCallbackDraw )\n\t\t\t\t{\n\t\t\t\t\tif ( !oSettings.aanFeatures.p )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar oPaging = oSettings.oInstance.fnPagingInfo();\n\t\t\t\t\tvar iPageCount = $.fn.dataTableExt.oPagination.iFullNumbersShowPages;\n\t\t\t\t\tvar iPageCountHalf = Math.floor(iPageCount / 2);\n\t\t\t\t\tvar iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);\n\t\t\t\t\tvar iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;\n\t\t\t\t\tvar sList = \"\";\n\t\t\t\t\tvar iStartButton, iEndButton, i, iLen;\n\t\t\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\t\tvar anButtons, anStatic, nPaginateList, nNode;\n\t\t\t\t\tvar an = oSettings.aanFeatures.p;\n\t\t\t\t\tvar fnBind = function (j) {\n\t\t\t\t\t\toSettings.oApi._fnBindAction( this, {\"page\": j+iStartButton-1}, function(e) {\n\t\t\t\t\t\t\tif( oSettings.oApi._fnPageChange( oSettings, e.data.page ) ){\n\t\t\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t} );\n\t\t\t\t\t};\n\t\t\t\t\tif ( oSettings._iDisplayLength === -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\t\tiEndButton = 1;\n\t\t\t\t\t\tiCurrentPage = 1;\n\t\t\t\t\t}\n\t\t\t\t\telse if (iPages < iPageCount)\n\t\t\t\t\t{\n\t\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t\t}\n\t\t\t\t\telse if (iCurrentPage <= iPageCountHalf)\n\t\t\t\t\t{\n\t\t\t\t\t\tiStartButton = 1;\n\t\t\t\t\t\tiEndButton = iPageCount;\n\t\t\t\t\t}\n\t\t\t\t\telse if (iCurrentPage >= (iPages - iPageCountHalf))\n\t\t\t\t\t{\n\t\t\t\t\t\tiStartButton = iPages - iPageCount + 1;\n\t\t\t\t\t\tiEndButton = iPages;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tiStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;\n\t\t\t\t\t\tiEndButton = iStartButton + iPageCount - 1;\n\t\t\t\t\t}\n\t\t\t\t\tfor ( i=iStartButton ; i<=iEndButton ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tsList += (iCurrentPage !== i) ?\n\t\t\t\t\t\t\t'<li><a tabindex=\"'+oSettings.iTabIndex+'\">'+oSettings.fnFormatNumber(i)+'</a></li>' :\n\t\t\t\t\t\t\t'<li class=\"active\"><a tabindex=\"'+oSettings.iTabIndex+'\">'+oSettings.fnFormatNumber(i)+'</a></li>';\n\t\t\t\t\t}\n\t\t\t\t\tfor ( i=0, iLen=an.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tnNode = an[i];\n\t\t\t\t\t\tif ( !nNode.hasChildNodes() )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$('li:gt(1)', an[i]).filter(':not(li:eq(-2))').filter(':not(li:eq(-1))').remove();\n\t\t\t\t\t\tif ( oPaging.iPage === 0 ) {\n\t\t\t\t\t\t\t$('li:eq(0)', an[i]).addClass('disabled');\n\t\t\t\t\t\t\t$('li:eq(1)', an[i]).addClass('disabled');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$('li:eq(0)', an[i]).removeClass('disabled');\n\t\t\t\t\t\t\t$('li:eq(1)', an[i]).removeClass('disabled');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {\n\t\t\t\t\t\t\t$('li:eq(-1)', an[i]).addClass('disabled');\n\t\t\t\t\t\t\t$('li:eq(-2)', an[i]).addClass('disabled');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$('li:eq(-1)', an[i]).removeClass('disabled');\n\t\t\t\t\t\t\t$('li:eq(-2)', an[i]).removeClass('disabled');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(sList)\n\t\t\t\t\t\t\t.insertBefore($('li:eq(-2)', an[i]))\n\t\t\t\t\t\t\t.bind('click', function (e) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif ( oSettings.oApi._fnPageChange(oSettings, parseInt($('a', this).text(),10)-1) ) {\n\t\t\t\t\t\t\t\t\tfnCallbackDraw( oSettings );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\t\n\t} );\n\n\n\t/*\n\t * TableTools Bootstrap compatibility\n\t * Required TableTools 2.1+\n\t */\n\tif ( $.fn.DataTable.TableTools ) {\n\t\t// Set the classes that TableTools uses to something suitable for Bootstrap\n\t\t$.extend( true, $.fn.DataTable.TableTools.classes, {\n\t\t\t\"container\": \"DTTT btn-group\",\n\t\t\t\"buttons\": {\n\t\t\t\t\"normal\": \"btn\",\n\t\t\t\t\"disabled\": \"disabled\"\n\t\t\t},\n\t\t\t\"collection\": {\n\t\t\t\t\"container\": \"DTTT_dropdown dropdown-menu\",\n\t\t\t\t\"buttons\": {\n\t\t\t\t\t\"normal\": \"\",\n\t\t\t\t\t\"disabled\": \"disabled\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"print\": {\n\t\t\t\t\"info\": \"DTTT_print_info modal\"\n\t\t\t},\n\t\t\t\"select\": {\n\t\t\t\t\"row\": \"active\"\n\t\t\t}\n\t\t} );\n\n\t\t// Have the collection use a bootstrap compatible dropdown\n\t\t$.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {\n\t\t\t\"collection\": {\n\t\t\t\t\"container\": \"ul\",\n\t\t\t\t\"button\": \"li\",\n\t\t\t\t\"liner\": \"a\"\n\t\t\t}\n\t\t} );\n\t}\n}));\n\n\n\n\n","// Knockout JavaScript library v3.1.0\n// (c) Steven Sanderson - http://knockoutjs.com/\n// License: MIT (http://www.opensource.org/licenses/mit-license.php)\n\n(function() {(function(p){var A=this||(0,eval)(\"this\"),w=A.document,K=A.navigator,t=A.jQuery,C=A.JSON;(function(p){\"function\"===typeof require&&\"object\"===typeof exports&&\"object\"===typeof module?p(module.exports||exports):\"function\"===typeof define&&define.amd?define([\"exports\"],p):p(A.ko={})})(function(z){function G(a,c){return null===a||typeof a in M?a===c:!1}function N(a,c){var d;return function(){d||(d=setTimeout(function(){d=p;a()},c))}}function O(a,c){var d;return function(){clearTimeout(d);d=setTimeout(a,\nc)}}function H(b,c,d,e){a.d[b]={init:function(b,h,g,k,l){var n,r;a.ba(function(){var g=a.a.c(h()),k=!d!==!g,s=!r;if(s||c||k!==n)s&&a.ca.fa()&&(r=a.a.lb(a.e.childNodes(b),!0)),k?(s||a.e.U(b,a.a.lb(r)),a.gb(e?e(l,g):l,b)):a.e.da(b),n=k},null,{G:b});return{controlsDescendantBindings:!0}}};a.g.aa[b]=!1;a.e.Q[b]=!0}var a=\"undefined\"!==typeof z?z:{};a.b=function(b,c){for(var d=b.split(\".\"),e=a,f=0;f<d.length-1;f++)e=e[d[f]];e[d[d.length-1]]=c};a.s=function(a,c,d){a[c]=d};a.version=\"3.1.0\";a.b(\"version\",\na.version);a.a=function(){function b(a,b){for(var c in a)a.hasOwnProperty(c)&&b(c,a[c])}function c(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function d(a,b){a.__proto__=b;return a}var e={__proto__:[]}instanceof Array,f={},h={};f[K&&/Firefox\\/2/i.test(K.userAgent)?\"KeyboardEvent\":\"UIEvents\"]=[\"keyup\",\"keydown\",\"keypress\"];f.MouseEvents=\"click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave\".split(\" \");b(f,function(a,b){if(b.length)for(var c=0,\nd=b.length;c<d;c++)h[b[c]]=a});var g={propertychange:!0},k=w&&function(){for(var a=3,b=w.createElement(\"div\"),c=b.getElementsByTagName(\"i\");b.innerHTML=\"\\x3c!--[if gt IE \"+ ++a+\"]><i></i><![endif]--\\x3e\",c[0];);return 4<a?a:p}();return{mb:[\"authenticity_token\",/^__RequestVerificationToken(_.*)?$/],r:function(a,b){for(var c=0,d=a.length;c<d;c++)b(a[c],c)},l:function(a,b){if(\"function\"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,b);for(var c=0,d=a.length;c<d;c++)if(a[c]===\nb)return c;return-1},hb:function(a,b,c){for(var d=0,e=a.length;d<e;d++)if(b.call(c,a[d],d))return a[d];return null},ma:function(b,c){var d=a.a.l(b,c);0<d?b.splice(d,1):0===d&&b.shift()},ib:function(b){b=b||[];for(var c=[],d=0,e=b.length;d<e;d++)0>a.a.l(c,b[d])&&c.push(b[d]);return c},ya:function(a,b){a=a||[];for(var c=[],d=0,e=a.length;d<e;d++)c.push(b(a[d],d));return c},la:function(a,b){a=a||[];for(var c=[],d=0,e=a.length;d<e;d++)b(a[d],d)&&c.push(a[d]);return c},$:function(a,b){if(b instanceof Array)a.push.apply(a,\nb);else for(var c=0,d=b.length;c<d;c++)a.push(b[c]);return a},Y:function(b,c,d){var e=a.a.l(a.a.Sa(b),c);0>e?d&&b.push(c):d||b.splice(e,1)},na:e,extend:c,ra:d,sa:e?d:c,A:b,Oa:function(a,b){if(!a)return a;var c={},d;for(d in a)a.hasOwnProperty(d)&&(c[d]=b(a[d],d,a));return c},Fa:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},ec:function(b){b=a.a.R(b);for(var c=w.createElement(\"div\"),d=0,e=b.length;d<e;d++)c.appendChild(a.M(b[d]));return c},lb:function(b,c){for(var d=0,e=b.length,g=[];d<\ne;d++){var k=b[d].cloneNode(!0);g.push(c?a.M(k):k)}return g},U:function(b,c){a.a.Fa(b);if(c)for(var d=0,e=c.length;d<e;d++)b.appendChild(c[d])},Bb:function(b,c){var d=b.nodeType?[b]:b;if(0<d.length){for(var e=d[0],g=e.parentNode,k=0,h=c.length;k<h;k++)g.insertBefore(c[k],e);k=0;for(h=d.length;k<h;k++)a.removeNode(d[k])}},ea:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.shift();if(1<a.length){var c=a[0],d=a[a.length-1];for(a.length=0;c!==d;)if(a.push(c),\nc=c.nextSibling,!c)return;a.push(d)}}return a},Db:function(a,b){7>k?a.setAttribute(\"selected\",b):a.selected=b},ta:function(a){return null===a||a===p?\"\":a.trim?a.trim():a.toString().replace(/^[\\s\\xa0]+|[\\s\\xa0]+$/g,\"\")},oc:function(b,c){for(var d=[],e=(b||\"\").split(c),g=0,k=e.length;g<k;g++){var h=a.a.ta(e[g]);\"\"!==h&&d.push(h)}return d},kc:function(a,b){a=a||\"\";return b.length>a.length?!1:a.substring(0,b.length)===b},Sb:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===\na.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;return!!a},Ea:function(b){return a.a.Sb(b,b.ownerDocument.documentElement)},eb:function(b){return!!a.a.hb(b,a.a.Ea)},B:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},q:function(b,c,d){var e=k&&g[c];if(!e&&t)t(b).bind(c,d);else if(e||\"function\"!=typeof b.addEventListener)if(\"undefined\"!=typeof b.attachEvent){var h=function(a){d.call(b,a)},f=\"on\"+c;b.attachEvent(f,\nh);a.a.u.ja(b,function(){b.detachEvent(f,h)})}else throw Error(\"Browser doesn't support addEventListener or attachEvent\");else b.addEventListener(c,d,!1)},ha:function(b,c){if(!b||!b.nodeType)throw Error(\"element must be a DOM node when calling triggerEvent\");var d;\"input\"===a.a.B(b)&&b.type&&\"click\"==c.toLowerCase()?(d=b.type,d=\"checkbox\"==d||\"radio\"==d):d=!1;if(t&&!d)t(b).trigger(c);else if(\"function\"==typeof w.createEvent)if(\"function\"==typeof b.dispatchEvent)d=w.createEvent(h[c]||\"HTMLEvents\"),\nd.initEvent(c,!0,!0,A,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error(\"The supplied element doesn't support dispatchEvent\");else if(d&&b.click)b.click();else if(\"undefined\"!=typeof b.fireEvent)b.fireEvent(\"on\"+c);else throw Error(\"Browser doesn't support triggering events\");},c:function(b){return a.v(b)?b():b},Sa:function(b){return a.v(b)?b.o():b},ua:function(b,c,d){if(c){var e=/\\S+/g,g=b.className.match(e)||[];a.a.r(c.match(e),function(b){a.a.Y(g,b,d)});b.className=g.join(\" \")}},Xa:function(b,\nc){var d=a.a.c(c);if(null===d||d===p)d=\"\";var e=a.e.firstChild(b);!e||3!=e.nodeType||a.e.nextSibling(e)?a.e.U(b,[b.ownerDocument.createTextNode(d)]):e.data=d;a.a.Vb(b)},Cb:function(a,b){a.name=b;if(7>=k)try{a.mergeAttributes(w.createElement(\"<input name='\"+a.name+\"'/>\"),!1)}catch(c){}},Vb:function(a){9<=k&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},Tb:function(a){if(k){var b=a.style.width;a.style.width=0;a.style.width=b}},ic:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var d=\n[],e=b;e<=c;e++)d.push(e);return d},R:function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b},mc:6===k,nc:7===k,oa:k,ob:function(b,c){for(var d=a.a.R(b.getElementsByTagName(\"input\")).concat(a.a.R(b.getElementsByTagName(\"textarea\"))),e=\"string\"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},g=[],k=d.length-1;0<=k;k--)e(d[k])&&g.push(d[k]);return g},fc:function(b){return\"string\"==typeof b&&(b=a.a.ta(b))?C&&C.parse?C.parse(b):(new Function(\"return \"+b))():\nnull},Ya:function(b,c,d){if(!C||!C.stringify)throw Error(\"Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js\");return C.stringify(a.a.c(b),c,d)},gc:function(c,d,e){e=e||{};var g=e.params||{},k=e.includeFields||this.mb,h=c;if(\"object\"==typeof c&&\"form\"===a.a.B(c))for(var h=c.action,f=k.length-1;0<=f;f--)for(var u=a.a.ob(c,k[f]),D=u.length-1;0<=D;D--)g[u[D].name]=\nu[D].value;d=a.a.c(d);var y=w.createElement(\"form\");y.style.display=\"none\";y.action=h;y.method=\"post\";for(var p in d)c=w.createElement(\"input\"),c.name=p,c.value=a.a.Ya(a.a.c(d[p])),y.appendChild(c);b(g,function(a,b){var c=w.createElement(\"input\");c.name=a;c.value=b;y.appendChild(c)});w.body.appendChild(y);e.submitter?e.submitter(y):y.submit();setTimeout(function(){y.parentNode.removeChild(y)},0)}}}();a.b(\"utils\",a.a);a.b(\"utils.arrayForEach\",a.a.r);a.b(\"utils.arrayFirst\",a.a.hb);a.b(\"utils.arrayFilter\",\na.a.la);a.b(\"utils.arrayGetDistinctValues\",a.a.ib);a.b(\"utils.arrayIndexOf\",a.a.l);a.b(\"utils.arrayMap\",a.a.ya);a.b(\"utils.arrayPushAll\",a.a.$);a.b(\"utils.arrayRemoveItem\",a.a.ma);a.b(\"utils.extend\",a.a.extend);a.b(\"utils.fieldsIncludedWithJsonPost\",a.a.mb);a.b(\"utils.getFormFields\",a.a.ob);a.b(\"utils.peekObservable\",a.a.Sa);a.b(\"utils.postJson\",a.a.gc);a.b(\"utils.parseJson\",a.a.fc);a.b(\"utils.registerEventHandler\",a.a.q);a.b(\"utils.stringifyJson\",a.a.Ya);a.b(\"utils.range\",a.a.ic);a.b(\"utils.toggleDomNodeCssClass\",\na.a.ua);a.b(\"utils.triggerEvent\",a.a.ha);a.b(\"utils.unwrapObservable\",a.a.c);a.b(\"utils.objectForEach\",a.a.A);a.b(\"utils.addOrRemoveItem\",a.a.Y);a.b(\"unwrap\",a.a.c);Function.prototype.bind||(Function.prototype.bind=function(a){var c=this,d=Array.prototype.slice.call(arguments);a=d.shift();return function(){return c.apply(a,d.concat(Array.prototype.slice.call(arguments)))}});a.a.f=new function(){function a(b,h){var g=b[d];if(!g||\"null\"===g||!e[g]){if(!h)return p;g=b[d]=\"ko\"+c++;e[g]={}}return e[g]}\nvar c=0,d=\"__ko__\"+(new Date).getTime(),e={};return{get:function(c,d){var e=a(c,!1);return e===p?p:e[d]},set:function(c,d,e){if(e!==p||a(c,!1)!==p)a(c,!0)[d]=e},clear:function(a){var b=a[d];return b?(delete e[b],a[d]=null,!0):!1},L:function(){return c++ +d}}};a.b(\"utils.domData\",a.a.f);a.b(\"utils.domData.clear\",a.a.f.clear);a.a.u=new function(){function b(b,c){var e=a.a.f.get(b,d);e===p&&c&&(e=[],a.a.f.set(b,d,e));return e}function c(d){var e=b(d,!1);if(e)for(var e=e.slice(0),k=0;k<e.length;k++)e[k](d);\na.a.f.clear(d);a.a.u.cleanExternalData(d);if(f[d.nodeType])for(e=d.firstChild;d=e;)e=d.nextSibling,8===d.nodeType&&c(d)}var d=a.a.f.L(),e={1:!0,8:!0,9:!0},f={1:!0,9:!0};return{ja:function(a,c){if(\"function\"!=typeof c)throw Error(\"Callback must be a function\");b(a,!0).push(c)},Ab:function(c,e){var k=b(c,!1);k&&(a.a.ma(k,e),0==k.length&&a.a.f.set(c,d,p))},M:function(b){if(e[b.nodeType]&&(c(b),f[b.nodeType])){var d=[];a.a.$(d,b.getElementsByTagName(\"*\"));for(var k=0,l=d.length;k<l;k++)c(d[k])}return b},\nremoveNode:function(b){a.M(b);b.parentNode&&b.parentNode.removeChild(b)},cleanExternalData:function(a){t&&\"function\"==typeof t.cleanData&&t.cleanData([a])}}};a.M=a.a.u.M;a.removeNode=a.a.u.removeNode;a.b(\"cleanNode\",a.M);a.b(\"removeNode\",a.removeNode);a.b(\"utils.domNodeDisposal\",a.a.u);a.b(\"utils.domNodeDisposal.addDisposeCallback\",a.a.u.ja);a.b(\"utils.domNodeDisposal.removeDisposeCallback\",a.a.u.Ab);(function(){a.a.Qa=function(b){var c;if(t)if(t.parseHTML)c=t.parseHTML(b)||[];else{if((c=t.clean([b]))&&\nc[0]){for(b=c[0];b.parentNode&&11!==b.parentNode.nodeType;)b=b.parentNode;b.parentNode&&b.parentNode.removeChild(b)}}else{var d=a.a.ta(b).toLowerCase();c=w.createElement(\"div\");d=d.match(/^<(thead|tbody|tfoot)/)&&[1,\"<table>\",\"</table>\"]||!d.indexOf(\"<tr\")&&[2,\"<table><tbody>\",\"</tbody></table>\"]||(!d.indexOf(\"<td\")||!d.indexOf(\"<th\"))&&[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"]||[0,\"\",\"\"];b=\"ignored<div>\"+d[1]+b+d[2]+\"</div>\";for(\"function\"==typeof A.innerShiv?c.appendChild(A.innerShiv(b)):\nc.innerHTML=b;d[0]--;)c=c.lastChild;c=a.a.R(c.lastChild.childNodes)}return c};a.a.Va=function(b,c){a.a.Fa(b);c=a.a.c(c);if(null!==c&&c!==p)if(\"string\"!=typeof c&&(c=c.toString()),t)t(b).html(c);else for(var d=a.a.Qa(c),e=0;e<d.length;e++)b.appendChild(d[e])}})();a.b(\"utils.parseHtmlFragment\",a.a.Qa);a.b(\"utils.setHtml\",a.a.Va);a.w=function(){function b(c,e){if(c)if(8==c.nodeType){var f=a.w.xb(c.nodeValue);null!=f&&e.push({Rb:c,cc:f})}else if(1==c.nodeType)for(var f=0,h=c.childNodes,g=h.length;f<g;f++)b(h[f],\ne)}var c={};return{Na:function(a){if(\"function\"!=typeof a)throw Error(\"You can only pass a function to ko.memoization.memoize()\");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);c[b]=a;return\"\\x3c!--[ko_memo:\"+b+\"]--\\x3e\"},Hb:function(a,b){var f=c[a];if(f===p)throw Error(\"Couldn't find any memo with ID \"+a+\". Perhaps it's already been unmemoized.\");try{return f.apply(null,b||[]),!0}finally{delete c[a]}},Ib:function(c,e){var f=\n[];b(c,f);for(var h=0,g=f.length;h<g;h++){var k=f[h].Rb,l=[k];e&&a.a.$(l,e);a.w.Hb(f[h].cc,l);k.nodeValue=\"\";k.parentNode&&k.parentNode.removeChild(k)}},xb:function(a){return(a=a.match(/^\\[ko_memo\\:(.*?)\\]$/))?a[1]:null}}}();a.b(\"memoization\",a.w);a.b(\"memoization.memoize\",a.w.Na);a.b(\"memoization.unmemoize\",a.w.Hb);a.b(\"memoization.parseMemoText\",a.w.xb);a.b(\"memoization.unmemoizeDomNodeAndDescendants\",a.w.Ib);a.Ga={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.h({read:b,write:function(a){clearTimeout(d);\nd=setTimeout(function(){b(a)},c)}})},rateLimit:function(a,c){var d,e,f;\"number\"==typeof c?d=c:(d=c.timeout,e=c.method);f=\"notifyWhenChangesStop\"==e?O:N;a.Ma(function(a){return f(a,d)})},notify:function(a,c){a.equalityComparer=\"always\"==c?null:G}};var M={undefined:1,\"boolean\":1,number:1,string:1};a.b(\"extenders\",a.Ga);a.Fb=function(b,c,d){this.target=b;this.za=c;this.Qb=d;this.sb=!1;a.s(this,\"dispose\",this.F)};a.Fb.prototype.F=function(){this.sb=!0;this.Qb()};a.N=function(){a.a.sa(this,a.N.fn);this.H=\n{}};var F=\"change\";z={V:function(b,c,d){var e=this;d=d||F;var f=new a.Fb(e,c?b.bind(c):b,function(){a.a.ma(e.H[d],f)});e.o&&e.o();e.H[d]||(e.H[d]=[]);e.H[d].push(f);return f},notifySubscribers:function(b,c){c=c||F;if(this.qb(c))try{a.k.jb();for(var d=this.H[c].slice(0),e=0,f;f=d[e];++e)f.sb||f.za(b)}finally{a.k.end()}},Ma:function(b){var c=this,d=a.v(c),e,f,h;c.ia||(c.ia=c.notifySubscribers,c.notifySubscribers=function(a,b){b&&b!==F?\"beforeChange\"===b?c.bb(a):c.ia(a,b):c.cb(a)});var g=b(function(){d&&\nh===c&&(h=c());e=!1;c.Ka(f,h)&&c.ia(f=h)});c.cb=function(a){e=!0;h=a;g()};c.bb=function(a){e||(f=a,c.ia(a,\"beforeChange\"))}},qb:function(a){return this.H[a]&&this.H[a].length},Wb:function(){var b=0;a.a.A(this.H,function(a,d){b+=d.length});return b},Ka:function(a,c){return!this.equalityComparer||!this.equalityComparer(a,c)},extend:function(b){var c=this;b&&a.a.A(b,function(b,e){var f=a.Ga[b];\"function\"==typeof f&&(c=f(c,e)||c)});return c}};a.s(z,\"subscribe\",z.V);a.s(z,\"extend\",z.extend);a.s(z,\"getSubscriptionsCount\",\nz.Wb);a.a.na&&a.a.ra(z,Function.prototype);a.N.fn=z;a.tb=function(a){return null!=a&&\"function\"==typeof a.V&&\"function\"==typeof a.notifySubscribers};a.b(\"subscribable\",a.N);a.b(\"isSubscribable\",a.tb);a.ca=a.k=function(){function b(a){d.push(e);e=a}function c(){e=d.pop()}var d=[],e,f=0;return{jb:b,end:c,zb:function(b){if(e){if(!a.tb(b))throw Error(\"Only subscribable things can act as dependencies\");e.za(b,b.Kb||(b.Kb=++f))}},t:function(a,d,e){try{return b(),a.apply(d,e||[])}finally{c()}},fa:function(){if(e)return e.ba.fa()},\npa:function(){if(e)return e.pa}}}();a.b(\"computedContext\",a.ca);a.b(\"computedContext.getDependenciesCount\",a.ca.fa);a.b(\"computedContext.isInitial\",a.ca.pa);a.m=function(b){function c(){if(0<arguments.length)return c.Ka(d,arguments[0])&&(c.P(),d=arguments[0],c.O()),this;a.k.zb(c);return d}var d=b;a.N.call(c);a.a.sa(c,a.m.fn);c.o=function(){return d};c.O=function(){c.notifySubscribers(d)};c.P=function(){c.notifySubscribers(d,\"beforeChange\")};a.s(c,\"peek\",c.o);a.s(c,\"valueHasMutated\",c.O);a.s(c,\"valueWillMutate\",\nc.P);return c};a.m.fn={equalityComparer:G};var E=a.m.hc=\"__ko_proto__\";a.m.fn[E]=a.m;a.a.na&&a.a.ra(a.m.fn,a.N.fn);a.Ha=function(b,c){return null===b||b===p||b[E]===p?!1:b[E]===c?!0:a.Ha(b[E],c)};a.v=function(b){return a.Ha(b,a.m)};a.ub=function(b){return\"function\"==typeof b&&b[E]===a.m||\"function\"==typeof b&&b[E]===a.h&&b.Yb?!0:!1};a.b(\"observable\",a.m);a.b(\"isObservable\",a.v);a.b(\"isWriteableObservable\",a.ub);a.T=function(b){b=b||[];if(\"object\"!=typeof b||!(\"length\"in b))throw Error(\"The argument passed when initializing an observable array must be an array, or null, or undefined.\");\nb=a.m(b);a.a.sa(b,a.T.fn);return b.extend({trackArrayChanges:!0})};a.T.fn={remove:function(b){for(var c=this.o(),d=[],e=\"function\"!=typeof b||a.v(b)?function(a){return a===b}:b,f=0;f<c.length;f++){var h=c[f];e(h)&&(0===d.length&&this.P(),d.push(h),c.splice(f,1),f--)}d.length&&this.O();return d},removeAll:function(b){if(b===p){var c=this.o(),d=c.slice(0);this.P();c.splice(0,c.length);this.O();return d}return b?this.remove(function(c){return 0<=a.a.l(b,c)}):[]},destroy:function(b){var c=this.o(),d=\n\"function\"!=typeof b||a.v(b)?function(a){return a===b}:b;this.P();for(var e=c.length-1;0<=e;e--)d(c[e])&&(c[e]._destroy=!0);this.O()},destroyAll:function(b){return b===p?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.l(b,c)}):[]},indexOf:function(b){var c=this();return a.a.l(c,b)},replace:function(a,c){var d=this.indexOf(a);0<=d&&(this.P(),this.o()[d]=c,this.O())}};a.a.r(\"pop push reverse shift sort splice unshift\".split(\" \"),function(b){a.T.fn[b]=function(){var a=this.o();\nthis.P();this.kb(a,b,arguments);a=a[b].apply(a,arguments);this.O();return a}});a.a.r([\"slice\"],function(b){a.T.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.a.na&&a.a.ra(a.T.fn,a.m.fn);a.b(\"observableArray\",a.T);var I=\"arrayChange\";a.Ga.trackArrayChanges=function(b){function c(){if(!d){d=!0;var c=b.notifySubscribers;b.notifySubscribers=function(a,b){b&&b!==F||++f;return c.apply(this,arguments)};var k=[].concat(b.o()||[]);e=null;b.V(function(c){c=[].concat(c||[]);if(b.qb(I)){var d;\nif(!e||1<f)e=a.a.Aa(k,c,{sparse:!0});d=e;d.length&&b.notifySubscribers(d,I)}k=c;e=null;f=0})}}if(!b.kb){var d=!1,e=null,f=0,h=b.V;b.V=b.subscribe=function(a,b,d){d===I&&c();return h.apply(this,arguments)};b.kb=function(b,c,l){function h(a,b,c){return r[r.length]={status:a,value:b,index:c}}if(d&&!f){var r=[],m=b.length,q=l.length,s=0;switch(c){case \"push\":s=m;case \"unshift\":for(c=0;c<q;c++)h(\"added\",l[c],s+c);break;case \"pop\":s=m-1;case \"shift\":m&&h(\"deleted\",b[s],s);break;case \"splice\":c=Math.min(Math.max(0,\n0>l[0]?m+l[0]:l[0]),m);for(var m=1===q?m:Math.min(c+(l[1]||0),m),q=c+q-2,s=Math.max(m,q),B=[],u=[],D=2;c<s;++c,++D)c<m&&u.push(h(\"deleted\",b[c],c)),c<q&&B.push(h(\"added\",l[D],c));a.a.nb(u,B);break;default:return}e=r}}}};a.ba=a.h=function(b,c,d){function e(){q=!0;a.a.A(v,function(a,b){b.F()});v={};x=0;n=!1}function f(){var a=g.throttleEvaluation;a&&0<=a?(clearTimeout(t),t=setTimeout(h,a)):g.wa?g.wa():h()}function h(){if(!r&&!q){if(y&&y()){if(!m){p();return}}else m=!1;r=!0;try{var b=v,d=x;a.k.jb({za:function(a,\nc){q||(d&&b[c]?(v[c]=b[c],++x,delete b[c],--d):v[c]||(v[c]=a.V(f),++x))},ba:g,pa:!x});v={};x=0;try{var e=c?s.call(c):s()}finally{a.k.end(),d&&a.a.A(b,function(a,b){b.F()}),n=!1}g.Ka(l,e)&&(g.notifySubscribers(l,\"beforeChange\"),l=e,g.wa&&!g.throttleEvaluation||g.notifySubscribers(l))}finally{r=!1}x||p()}}function g(){if(0<arguments.length){if(\"function\"===typeof B)B.apply(c,arguments);else throw Error(\"Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.\");\nreturn this}n&&h();a.k.zb(g);return l}function k(){return n||0<x}var l,n=!0,r=!1,m=!1,q=!1,s=b;s&&\"object\"==typeof s?(d=s,s=d.read):(d=d||{},s||(s=d.read));if(\"function\"!=typeof s)throw Error(\"Pass a function that returns the value of the ko.computed\");var B=d.write,u=d.disposeWhenNodeIsRemoved||d.G||null,D=d.disposeWhen||d.Da,y=D,p=e,v={},x=0,t=null;c||(c=d.owner);a.N.call(g);a.a.sa(g,a.h.fn);g.o=function(){n&&!x&&h();return l};g.fa=function(){return x};g.Yb=\"function\"===typeof d.write;g.F=function(){p()};\ng.ga=k;var w=g.Ma;g.Ma=function(a){w.call(g,a);g.wa=function(){g.bb(l);n=!0;g.cb(g)}};a.s(g,\"peek\",g.o);a.s(g,\"dispose\",g.F);a.s(g,\"isActive\",g.ga);a.s(g,\"getDependenciesCount\",g.fa);u&&(m=!0,u.nodeType&&(y=function(){return!a.a.Ea(u)||D&&D()}));!0!==d.deferEvaluation&&h();u&&k()&&u.nodeType&&(p=function(){a.a.u.Ab(u,p);e()},a.a.u.ja(u,p));return g};a.$b=function(b){return a.Ha(b,a.h)};z=a.m.hc;a.h[z]=a.m;a.h.fn={equalityComparer:G};a.h.fn[z]=a.h;a.a.na&&a.a.ra(a.h.fn,a.N.fn);a.b(\"dependentObservable\",\na.h);a.b(\"computed\",a.h);a.b(\"isComputed\",a.$b);(function(){function b(a,f,h){h=h||new d;a=f(a);if(\"object\"!=typeof a||null===a||a===p||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var g=a instanceof Array?[]:{};h.save(a,g);c(a,function(c){var d=f(a[c]);switch(typeof d){case \"boolean\":case \"number\":case \"string\":case \"function\":g[c]=d;break;case \"object\":case \"undefined\":var n=h.get(d);g[c]=n!==p?n:b(d,f,h)}});return g}function c(a,b){if(a instanceof Array){for(var c=\n0;c<a.length;c++)b(c);\"function\"==typeof a.toJSON&&b(\"toJSON\")}else for(c in a)b(c)}function d(){this.keys=[];this.ab=[]}a.Gb=function(c){if(0==arguments.length)throw Error(\"When calling ko.toJS, pass the object you want to convert.\");return b(c,function(b){for(var c=0;a.v(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.Gb(b);return a.a.Ya(b,c,d)};d.prototype={save:function(b,c){var d=a.a.l(this.keys,b);0<=d?this.ab[d]=c:(this.keys.push(b),this.ab.push(c))},get:function(b){b=a.a.l(this.keys,\nb);return 0<=b?this.ab[b]:p}}})();a.b(\"toJS\",a.Gb);a.b(\"toJSON\",a.toJSON);(function(){a.i={p:function(b){switch(a.a.B(b)){case \"option\":return!0===b.__ko__hasDomDataOptionValue__?a.a.f.get(b,a.d.options.Pa):7>=a.a.oa?b.getAttributeNode(\"value\")&&b.getAttributeNode(\"value\").specified?b.value:b.text:b.value;case \"select\":return 0<=b.selectedIndex?a.i.p(b.options[b.selectedIndex]):p;default:return b.value}},X:function(b,c,d){switch(a.a.B(b)){case \"option\":switch(typeof c){case \"string\":a.a.f.set(b,a.d.options.Pa,\np);\"__ko__hasDomDataOptionValue__\"in b&&delete b.__ko__hasDomDataOptionValue__;b.value=c;break;default:a.a.f.set(b,a.d.options.Pa,c),b.__ko__hasDomDataOptionValue__=!0,b.value=\"number\"===typeof c?c:\"\"}break;case \"select\":if(\"\"===c||null===c)c=p;for(var e=-1,f=0,h=b.options.length,g;f<h;++f)if(g=a.i.p(b.options[f]),g==c||\"\"==g&&c===p){e=f;break}if(d||0<=e||c===p&&1<b.size)b.selectedIndex=e;break;default:if(null===c||c===p)c=\"\";b.value=c}}}})();a.b(\"selectExtensions\",a.i);a.b(\"selectExtensions.readValue\",\na.i.p);a.b(\"selectExtensions.writeValue\",a.i.X);a.g=function(){function b(b){b=a.a.ta(b);123===b.charCodeAt(0)&&(b=b.slice(1,-1));var c=[],d=b.match(e),g,m,q=0;if(d){d.push(\",\");for(var s=0,B;B=d[s];++s){var u=B.charCodeAt(0);if(44===u){if(0>=q){g&&c.push(m?{key:g,value:m.join(\"\")}:{unknown:g});g=m=q=0;continue}}else if(58===u){if(!m)continue}else if(47===u&&s&&1<B.length)(u=d[s-1].match(f))&&!h[u[0]]&&(b=b.substr(b.indexOf(B)+1),d=b.match(e),d.push(\",\"),s=-1,B=\"/\");else if(40===u||123===u||91===\nu)++q;else if(41===u||125===u||93===u)--q;else if(!g&&!m){g=34===u||39===u?B.slice(1,-1):B;continue}m?m.push(B):m=[B]}}return c}var c=[\"true\",\"false\",\"null\",\"undefined\"],d=/^(?:[$_a-z][$\\w]*|(.+)(\\.\\s*[$_a-z][$\\w]*|\\[.+\\]))$/i,e=RegExp(\"\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\\\"|'(?:[^'\\\\\\\\]|\\\\\\\\.)*'|/(?:[^/\\\\\\\\]|\\\\\\\\.)*/w*|[^\\\\s:,/][^,\\\"'{}()/:[\\\\]]*[^\\\\s,\\\"'{}()/:[\\\\]]|[^\\\\s]\",\"g\"),f=/[\\])\"'A-Za-z0-9_$]+$/,h={\"in\":1,\"return\":1,\"typeof\":1},g={};return{aa:[],W:g,Ra:b,qa:function(e,l){function f(b,e){var l,k=a.getBindingHandler(b);\nif(k&&k.preprocess?e=k.preprocess(e,b,f):1){if(k=g[b])l=e,0<=a.a.l(c,l)?l=!1:(k=l.match(d),l=null===k?!1:k[1]?\"Object(\"+k[1]+\")\"+k[2]:l),k=l;k&&m.push(\"'\"+b+\"':function(_z){\"+l+\"=_z}\");q&&(e=\"function(){return \"+e+\" }\");h.push(\"'\"+b+\"':\"+e)}}l=l||{};var h=[],m=[],q=l.valueAccessors,s=\"string\"===typeof e?b(e):e;a.a.r(s,function(a){f(a.key||a.unknown,a.value)});m.length&&f(\"_ko_property_writers\",\"{\"+m.join(\",\")+\" }\");return h.join(\",\")},bc:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;\nreturn!1},va:function(b,c,d,e,g){if(b&&a.v(b))!a.ub(b)||g&&b.o()===e||b(e);else if((b=c.get(\"_ko_property_writers\"))&&b[d])b[d](e)}}}();a.b(\"expressionRewriting\",a.g);a.b(\"expressionRewriting.bindingRewriteValidators\",a.g.aa);a.b(\"expressionRewriting.parseObjectLiteral\",a.g.Ra);a.b(\"expressionRewriting.preProcessBindings\",a.g.qa);a.b(\"expressionRewriting._twoWayBindings\",a.g.W);a.b(\"jsonExpressionRewriting\",a.g);a.b(\"jsonExpressionRewriting.insertPropertyAccessorsIntoJson\",a.g.qa);(function(){function b(a){return 8==\na.nodeType&&h.test(f?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&g.test(f?a.text:a.nodeValue)}function d(a,d){for(var e=a,g=1,k=[];e=e.nextSibling;){if(c(e)&&(g--,0===g))return k;k.push(e);b(e)&&g++}if(!d)throw Error(\"Cannot find closing comment tag to match: \"+a.nodeValue);return null}function e(a,b){var c=d(a,b);return c?0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var f=w&&\"\\x3c!--test--\\x3e\"===w.createComment(\"test\").text,h=f?/^\\x3c!--\\s*ko(?:\\s+([\\s\\S]+))?\\s*--\\x3e$/:/^\\s*ko(?:\\s+([\\s\\S]+))?\\s*$/,\ng=f?/^\\x3c!--\\s*\\/ko\\s*--\\x3e$/:/^\\s*\\/ko\\s*$/,k={ul:!0,ol:!0};a.e={Q:{},childNodes:function(a){return b(a)?d(a):a.childNodes},da:function(c){if(b(c)){c=a.e.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.Fa(c)},U:function(c,d){if(b(c)){a.e.da(c);for(var e=c.nextSibling,g=0,k=d.length;g<k;g++)e.parentNode.insertBefore(d[g],e)}else a.a.U(c,d)},yb:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},rb:function(c,\nd,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):c.appendChild(d):a.e.yb(c,d)},firstChild:function(a){return b(a)?!a.nextSibling||c(a.nextSibling)?null:a.nextSibling:a.firstChild},nextSibling:function(a){b(a)&&(a=e(a));return a.nextSibling&&c(a.nextSibling)?null:a.nextSibling},Xb:b,lc:function(a){return(a=(f?a.text:a.nodeValue).match(h))?a[1]:null},wb:function(d){if(k[a.a.B(d)]){var g=d.firstChild;if(g){do if(1===g.nodeType){var f;f=g.firstChild;\nvar h=null;if(f){do if(h)h.push(f);else if(b(f)){var q=e(f,!0);q?f=q:h=[f]}else c(f)&&(h=[f]);while(f=f.nextSibling)}if(f=h)for(h=g.nextSibling,q=0;q<f.length;q++)h?d.insertBefore(f[q],h):d.appendChild(f[q])}while(g=g.nextSibling)}}}}})();a.b(\"virtualElements\",a.e);a.b(\"virtualElements.allowedBindings\",a.e.Q);a.b(\"virtualElements.emptyNode\",a.e.da);a.b(\"virtualElements.insertAfter\",a.e.rb);a.b(\"virtualElements.prepend\",a.e.yb);a.b(\"virtualElements.setDomNodeChildren\",a.e.U);(function(){a.J=function(){this.Nb=\n{}};a.a.extend(a.J.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=b.getAttribute(\"data-bind\");case 8:return a.e.Xb(b);default:return!1}},getBindings:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a):null},getBindingAccessors:function(a,c){var d=this.getBindingsString(a,c);return d?this.parseBindingsString(d,c,a,{valueAccessors:!0}):null},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute(\"data-bind\");\ncase 8:return a.e.lc(b);default:return null}},parseBindingsString:function(b,c,d,e){try{var f=this.Nb,h=b+(e&&e.valueAccessors||\"\"),g;if(!(g=f[h])){var k,l=\"with($context){with($data||{}){return{\"+a.g.qa(b,e)+\"}}}\";k=new Function(\"$context\",\"$element\",l);g=f[h]=k}return g(c,d)}catch(n){throw n.message=\"Unable to parse bindings.\\nBindings value: \"+b+\"\\nMessage: \"+n.message,n;}}});a.J.instance=new a.J})();a.b(\"bindingProvider\",a.J);(function(){function b(a){return function(){return a}}function c(a){return a()}\nfunction d(b){return a.a.Oa(a.k.t(b),function(a,c){return function(){return b()[c]}})}function e(a,b){return d(this.getBindings.bind(this,a,b))}function f(b,c,d){var e,g=a.e.firstChild(c),k=a.J.instance,f=k.preprocessNode;if(f){for(;e=g;)g=a.e.nextSibling(e),f.call(k,e);g=a.e.firstChild(c)}for(;e=g;)g=a.e.nextSibling(e),h(b,e,d)}function h(b,c,d){var e=!0,g=1===c.nodeType;g&&a.e.wb(c);if(g&&d||a.J.instance.nodeHasBindings(c))e=k(c,null,b,d).shouldBindDescendants;e&&!n[a.a.B(c)]&&f(b,c,!g)}function g(b){var c=\n[],d={},e=[];a.a.A(b,function y(g){if(!d[g]){var k=a.getBindingHandler(g);k&&(k.after&&(e.push(g),a.a.r(k.after,function(c){if(b[c]){if(-1!==a.a.l(e,c))throw Error(\"Cannot combine the following bindings, because they have a cyclic dependency: \"+e.join(\", \"));y(c)}}),e.length--),c.push({key:g,pb:k}));d[g]=!0}});return c}function k(b,d,k,f){var h=a.a.f.get(b,r);if(!d){if(h)throw Error(\"You cannot apply bindings multiple times to the same element.\");a.a.f.set(b,r,!0)}!h&&f&&a.Eb(b,k);var l;if(d&&\"function\"!==\ntypeof d)l=d;else{var n=a.J.instance,m=n.getBindingAccessors||e,x=a.h(function(){(l=d?d(k,b):m.call(n,b,k))&&k.D&&k.D();return l},null,{G:b});l&&x.ga()||(x=null)}var t;if(l){var w=x?function(a){return function(){return c(x()[a])}}:function(a){return l[a]},z=function(){return a.a.Oa(x?x():l,c)};z.get=function(a){return l[a]&&c(w(a))};z.has=function(a){return a in l};f=g(l);a.a.r(f,function(c){var d=c.pb.init,e=c.pb.update,g=c.key;if(8===b.nodeType&&!a.e.Q[g])throw Error(\"The binding '\"+g+\"' cannot be used with virtual elements\");\ntry{\"function\"==typeof d&&a.k.t(function(){var a=d(b,w(g),z,k.$data,k);if(a&&a.controlsDescendantBindings){if(t!==p)throw Error(\"Multiple bindings (\"+t+\" and \"+g+\") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.\");t=g}}),\"function\"==typeof e&&a.h(function(){e(b,w(g),z,k.$data,k)},null,{G:b})}catch(f){throw f.message='Unable to process binding \"'+g+\": \"+l[g]+'\"\\nMessage: '+f.message,f;}})}return{shouldBindDescendants:t===p}}\nfunction l(b){return b&&b instanceof a.I?b:new a.I(b)}a.d={};var n={script:!0};a.getBindingHandler=function(b){return a.d[b]};a.I=function(b,c,d,e){var g=this,k=\"function\"==typeof b&&!a.v(b),f,h=a.h(function(){var f=k?b():b,l=a.a.c(f);c?(c.D&&c.D(),a.a.extend(g,c),h&&(g.D=h)):(g.$parents=[],g.$root=l,g.ko=a);g.$rawData=f;g.$data=l;d&&(g[d]=l);e&&e(g,c,l);return g.$data},null,{Da:function(){return f&&!a.a.eb(f)},G:!0});h.ga()&&(g.D=h,h.equalityComparer=null,f=[],h.Jb=function(b){f.push(b);a.a.u.ja(b,\nfunction(b){a.a.ma(f,b);f.length||(h.F(),g.D=h=p)})})};a.I.prototype.createChildContext=function(b,c,d){return new a.I(b,this,c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)})};a.I.prototype.extend=function(b){return new a.I(this.D||this.$data,this,null,function(c,d){c.$rawData=d.$rawData;a.a.extend(c,\"function\"==typeof b?b():b)})};var r=a.a.f.L(),m=a.a.f.L();a.Eb=function(b,c){if(2==arguments.length)a.a.f.set(b,m,c),\nc.D&&c.D.Jb(b);else return a.a.f.get(b,m)};a.xa=function(b,c,d){1===b.nodeType&&a.e.wb(b);return k(b,c,l(d),!0)};a.Lb=function(c,e,g){g=l(g);return a.xa(c,\"function\"===typeof e?d(e.bind(null,g,c)):a.a.Oa(e,b),g)};a.gb=function(a,b){1!==b.nodeType&&8!==b.nodeType||f(l(a),b,!0)};a.fb=function(a,b){!t&&A.jQuery&&(t=A.jQuery);if(b&&1!==b.nodeType&&8!==b.nodeType)throw Error(\"ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node\");b=b||A.document.body;h(l(a),\nb,!0)};a.Ca=function(b){switch(b.nodeType){case 1:case 8:var c=a.Eb(b);if(c)return c;if(b.parentNode)return a.Ca(b.parentNode)}return p};a.Pb=function(b){return(b=a.Ca(b))?b.$data:p};a.b(\"bindingHandlers\",a.d);a.b(\"applyBindings\",a.fb);a.b(\"applyBindingsToDescendants\",a.gb);a.b(\"applyBindingAccessorsToNode\",a.xa);a.b(\"applyBindingsToNode\",a.Lb);a.b(\"contextFor\",a.Ca);a.b(\"dataFor\",a.Pb)})();var L={\"class\":\"className\",\"for\":\"htmlFor\"};a.d.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.A(d,function(c,\nd){d=a.a.c(d);var h=!1===d||null===d||d===p;h&&b.removeAttribute(c);8>=a.a.oa&&c in L?(c=L[c],h?b.removeAttribute(c):b[c]=d):h||b.setAttribute(c,d.toString());\"name\"===c&&a.a.Cb(b,h?\"\":d.toString())})}};(function(){a.d.checked={after:[\"value\",\"attr\"],init:function(b,c,d){function e(){return d.has(\"checkedValue\")?a.a.c(d.get(\"checkedValue\")):b.value}function f(){var g=b.checked,f=r?e():g;if(!a.ca.pa()&&(!k||g)){var h=a.k.t(c);l?n!==f?(g&&(a.a.Y(h,f,!0),a.a.Y(h,n,!1)),n=f):a.a.Y(h,f,g):a.g.va(h,d,\"checked\",\nf,!0)}}function h(){var d=a.a.c(c());b.checked=l?0<=a.a.l(d,e()):g?d:e()===d}var g=\"checkbox\"==b.type,k=\"radio\"==b.type;if(g||k){var l=g&&a.a.c(c())instanceof Array,n=l?e():p,r=k||l;k&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.ba(f,null,{G:b});a.a.q(b,\"click\",f);a.ba(h,null,{G:b})}}};a.g.W.checked=!0;a.d.checkedValue={update:function(b,c){b.value=a.a.c(c())}}})();a.d.css={update:function(b,c){var d=a.a.c(c());\"object\"==typeof d?a.a.A(d,function(c,d){d=a.a.c(d);a.a.ua(b,c,d)}):(d=String(d||\n\"\"),a.a.ua(b,b.__ko__cssValue,!1),b.__ko__cssValue=d,a.a.ua(b,d,!0))}};a.d.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute(\"disabled\"):d||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,c){a.d.enable.update(b,function(){return!a.a.c(c())})}};a.d.event={init:function(b,c,d,e,f){var h=c()||{};a.a.A(h,function(g){\"string\"==typeof g&&a.a.q(b,g,function(b){var h,n=c()[g];if(n){try{var r=a.a.R(arguments);e=f.$data;r.unshift(e);h=n.apply(e,r)}finally{!0!==h&&(b.preventDefault?\nb.preventDefault():b.returnValue=!1)}!1===d.get(g+\"Bubble\")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={vb:function(b){return function(){var c=b(),d=a.a.Sa(c);if(!d||\"number\"==typeof d.length)return{foreach:c,templateEngine:a.K.Ja};a.a.c(c);return{foreach:d.data,as:d.as,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.K.Ja}}},init:function(b,\nc){return a.d.template.init(b,a.d.foreach.vb(c))},update:function(b,c,d,e,f){return a.d.template.update(b,a.d.foreach.vb(c),d,e,f)}};a.g.aa.foreach=!1;a.e.Q.foreach=!0;a.d.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var k=b.ownerDocument;if(\"activeElement\"in k){var f;try{f=k.activeElement}catch(h){f=k.body}e=f===b}k=c();a.g.va(k,d,\"hasfocus\",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),h=e.bind(null,!1);a.a.q(b,\"focus\",f);a.a.q(b,\"focusin\",\nf);a.a.q(b,\"blur\",h);a.a.q(b,\"focusout\",h)},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),a.k.t(a.a.ha,null,[b,d?\"focusin\":\"focusout\"]))}};a.g.W.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.g.W.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Va(b,c())}};H(\"if\");H(\"ifnot\",!1,!0);H(\"with\",!0,!1,function(a,c){return a.createChildContext(c)});var J={};a.d.options={init:function(b){if(\"select\"!==\na.a.B(b))throw Error(\"options binding applies only to SELECT elements\");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,c,d){function e(){return a.a.la(b.options,function(a){return a.selected})}function f(a,b,c){var d=typeof b;return\"function\"==d?b(a):\"string\"==d?a[b]:c}function h(c,d){if(r.length){var e=0<=a.a.l(r,a.i.p(d[0]));a.a.Db(d[0],e);m&&!e&&a.k.t(a.a.ha,null,[b,\"change\"])}}var g=0!=b.length&&b.multiple?b.scrollTop:null,k=a.a.c(c()),l=d.get(\"optionsIncludeDestroyed\");\nc={};var n,r;r=b.multiple?a.a.ya(e(),a.i.p):0<=b.selectedIndex?[a.i.p(b.options[b.selectedIndex])]:[];k&&(\"undefined\"==typeof k.length&&(k=[k]),n=a.a.la(k,function(b){return l||b===p||null===b||!a.a.c(b._destroy)}),d.has(\"optionsCaption\")&&(k=a.a.c(d.get(\"optionsCaption\")),null!==k&&k!==p&&n.unshift(J)));var m=!1;c.beforeRemove=function(a){b.removeChild(a)};k=h;d.has(\"optionsAfterRender\")&&(k=function(b,c){h(0,c);a.k.t(d.get(\"optionsAfterRender\"),null,[c[0],b!==J?b:p])});a.a.Ua(b,n,function(c,e,g){g.length&&\n(r=g[0].selected?[a.i.p(g[0])]:[],m=!0);e=b.ownerDocument.createElement(\"option\");c===J?(a.a.Xa(e,d.get(\"optionsCaption\")),a.i.X(e,p)):(g=f(c,d.get(\"optionsValue\"),c),a.i.X(e,a.a.c(g)),c=f(c,d.get(\"optionsText\"),g),a.a.Xa(e,c));return[e]},c,k);a.k.t(function(){d.get(\"valueAllowUnset\")&&d.has(\"value\")?a.i.X(b,a.a.c(d.get(\"value\")),!0):(b.multiple?r.length&&e().length<r.length:r.length&&0<=b.selectedIndex?a.i.p(b.options[b.selectedIndex])!==r[0]:r.length||0<=b.selectedIndex)&&a.a.ha(b,\"change\")});a.a.Tb(b);\ng&&20<Math.abs(g-b.scrollTop)&&(b.scrollTop=g)}};a.d.options.Pa=a.a.f.L();a.d.selectedOptions={after:[\"options\",\"foreach\"],init:function(b,c,d){a.a.q(b,\"change\",function(){var e=c(),f=[];a.a.r(b.getElementsByTagName(\"option\"),function(b){b.selected&&f.push(a.i.p(b))});a.g.va(e,d,\"selectedOptions\",f)})},update:function(b,c){if(\"select\"!=a.a.B(b))throw Error(\"values binding applies only to SELECT elements\");var d=a.a.c(c());d&&\"number\"==typeof d.length&&a.a.r(b.getElementsByTagName(\"option\"),function(b){var c=\n0<=a.a.l(d,a.i.p(b));a.a.Db(b,c)})}};a.g.W.selectedOptions=!0;a.d.style={update:function(b,c){var d=a.a.c(c()||{});a.a.A(d,function(c,d){d=a.a.c(d);b.style[c]=d||\"\"})}};a.d.submit={init:function(b,c,d,e,f){if(\"function\"!=typeof c())throw Error(\"The value for a submit binding must be a function\");a.a.q(b,\"submit\",function(a){var d,e=c();try{d=e.call(f.$data,b)}finally{!0!==d&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}};a.d.text={init:function(){return{controlsDescendantBindings:!0}},\nupdate:function(b,c){a.a.Xa(b,c())}};a.e.Q.text=!0;a.d.uniqueName={init:function(b,c){if(c()){var d=\"ko_unique_\"+ ++a.d.uniqueName.Ob;a.a.Cb(b,d)}}};a.d.uniqueName.Ob=0;a.d.value={after:[\"options\",\"foreach\"],init:function(b,c,d){function e(){g=!1;var e=c(),f=a.i.p(b);a.g.va(e,d,\"value\",f)}var f=[\"change\"],h=d.get(\"valueUpdate\"),g=!1;h&&(\"string\"==typeof h&&(h=[h]),a.a.$(f,h),f=a.a.ib(f));!a.a.oa||\"input\"!=b.tagName.toLowerCase()||\"text\"!=b.type||\"off\"==b.autocomplete||b.form&&\"off\"==b.form.autocomplete||\n-1!=a.a.l(f,\"propertychange\")||(a.a.q(b,\"propertychange\",function(){g=!0}),a.a.q(b,\"focus\",function(){g=!1}),a.a.q(b,\"blur\",function(){g&&e()}));a.a.r(f,function(c){var d=e;a.a.kc(c,\"after\")&&(d=function(){setTimeout(e,0)},c=c.substring(5));a.a.q(b,c,d)})},update:function(b,c,d){var e=a.a.c(c());c=a.i.p(b);if(e!==c)if(\"select\"===a.a.B(b)){var f=d.get(\"valueAllowUnset\");d=function(){a.i.X(b,e,f)};d();f||e===a.i.p(b)?setTimeout(d,0):a.k.t(a.a.ha,null,[b,\"change\"])}else a.i.X(b,e)}};a.g.W.value=!0;a.d.visible=\n{update:function(b,c){var d=a.a.c(c()),e=\"none\"!=b.style.display;d&&!e?b.style.display=\"\":!d&&e&&(b.style.display=\"none\")}};(function(b){a.d[b]={init:function(c,d,e,f,h){return a.d.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,f,h)}}})(\"click\");a.C=function(){};a.C.prototype.renderTemplateSource=function(){throw Error(\"Override renderTemplateSource\");};a.C.prototype.createJavaScriptEvaluatorBlock=function(){throw Error(\"Override createJavaScriptEvaluatorBlock\");};a.C.prototype.makeTemplateSource=\nfunction(b,c){if(\"string\"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error(\"Cannot find template with ID \"+b);return new a.n.j(d)}if(1==b.nodeType||8==b.nodeType)return new a.n.Z(b);throw Error(\"Unknown template type: \"+b);};a.C.prototype.renderTemplate=function(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,d)};a.C.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data(\"isRewritten\")};a.C.prototype.rewriteTemplate=\nfunction(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data(\"isRewritten\",!0)};a.b(\"templateEngine\",a.C);a.Za=function(){function b(b,c,d,g){b=a.g.Ra(b);for(var k=a.g.aa,l=0;l<b.length;l++){var n=b[l].key;if(k.hasOwnProperty(n)){var r=k[n];if(\"function\"===typeof r){if(n=r(b[l].value))throw Error(n);}else if(!r)throw Error(\"This template engine does not support the '\"+n+\"' binding within its templates\");}}d=\"ko.__tr_ambtns(function($context,$element){return(function(){return{ \"+a.g.qa(b,\n{valueAccessors:!0})+\" } })()},'\"+d.toLowerCase()+\"')\";return g.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\\d*)(?:\\s+(?!data-bind\\s*=\\s*)[a-z0-9\\-]+(?:=(?:\\\"[^\\\"]*\\\"|\\'[^\\']*\\'))?)*\\s+)data-bind\\s*=\\s*([\"'])([\\s\\S]*?)\\3/gi,d=/\\x3c!--\\s*ko\\b\\s*([\\s\\S]*?)\\s*--\\x3e/g;return{Ub:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.Za.dc(b,c)},d)},dc:function(a,f){return a.replace(c,function(a,c,d,e,n){return b(n,c,d,f)}).replace(d,function(a,c){return b(c,\"\\x3c!-- ko --\\x3e\",\n\"#comment\",f)})},Mb:function(b,c){return a.w.Na(function(d,g){var k=d.nextSibling;k&&k.nodeName.toLowerCase()===c&&a.xa(k,b,g)})}}}();a.b(\"__tr_ambtns\",a.Za.Mb);(function(){a.n={};a.n.j=function(a){this.j=a};a.n.j.prototype.text=function(){var b=a.a.B(this.j),b=\"script\"===b?\"text\":\"textarea\"===b?\"value\":\"innerHTML\";if(0==arguments.length)return this.j[b];var c=arguments[0];\"innerHTML\"===b?a.a.Va(this.j,c):this.j[b]=c};var b=a.a.f.L()+\"_\";a.n.j.prototype.data=function(c){if(1===arguments.length)return a.a.f.get(this.j,\nb+c);a.a.f.set(this.j,b+c,arguments[1])};var c=a.a.f.L();a.n.Z=function(a){this.j=a};a.n.Z.prototype=new a.n.j;a.n.Z.prototype.text=function(){if(0==arguments.length){var b=a.a.f.get(this.j,c)||{};b.$a===p&&b.Ba&&(b.$a=b.Ba.innerHTML);return b.$a}a.a.f.set(this.j,c,{$a:arguments[0]})};a.n.j.prototype.nodes=function(){if(0==arguments.length)return(a.a.f.get(this.j,c)||{}).Ba;a.a.f.set(this.j,c,{Ba:arguments[0]})};a.b(\"templateSources\",a.n);a.b(\"templateSources.domElement\",a.n.j);a.b(\"templateSources.anonymousTemplate\",\na.n.Z)})();(function(){function b(b,c,d){var e;for(c=a.e.nextSibling(c);b&&(e=b)!==c;)b=a.e.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var e=c[0],f=c[c.length-1],h=e.parentNode,m=a.J.instance,q=m.preprocessNode;if(q){b(e,f,function(a,b){var c=a.previousSibling,d=q.call(m,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):(c.push(e,f),a.a.ea(c,h))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.fb(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==\nb.nodeType||a.w.Ib(b,[d])});a.a.ea(c,h)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,h,n,r){r=r||{};var m=b&&d(b),m=m&&m.ownerDocument,q=r.templateEngine||f;a.Za.Ub(h,q,m);h=q.renderTemplate(h,n,r,m);if(\"number\"!=typeof h.length||0<h.length&&\"number\"!=typeof h[0].nodeType)throw Error(\"Template engine must return an array of DOM nodes\");m=!1;switch(e){case \"replaceChildren\":a.e.U(b,h);m=!0;break;case \"replaceNode\":a.a.Bb(b,h);m=!0;break;case \"ignoreTargetNode\":break;default:throw Error(\"Unknown renderMode: \"+\ne);}m&&(c(h,n),r.afterRender&&a.k.t(r.afterRender,null,[h,n.$data]));return h}var f;a.Wa=function(b){if(b!=p&&!(b instanceof a.C))throw Error(\"templateEngine must inherit from ko.templateEngine\");f=b};a.Ta=function(b,c,h,n,r){h=h||{};if((h.templateEngine||f)==p)throw Error(\"Set a template engine before calling renderTemplate\");r=r||\"replaceChildren\";if(n){var m=d(n);return a.h(function(){var f=c&&c instanceof a.I?c:new a.I(a.a.c(c)),p=a.v(b)?b():\"function\"==typeof b?b(f.$data,f):b,f=e(n,r,p,f,h);\n\"replaceNode\"==r&&(n=f,m=d(n))},null,{Da:function(){return!m||!a.a.Ea(m)},G:m&&\"replaceNode\"==r?m.parentNode:m})}return a.w.Na(function(d){a.Ta(b,c,h,d,\"replaceNode\")})};a.jc=function(b,d,f,h,r){function m(a,b){c(b,s);f.afterRender&&f.afterRender(b,a)}function q(a,c){s=r.createChildContext(a,f.as,function(a){a.$index=c});var d=\"function\"==typeof b?b(a,s):b;return e(null,\"ignoreTargetNode\",d,s,f)}var s;return a.h(function(){var b=a.a.c(d)||[];\"undefined\"==typeof b.length&&(b=[b]);b=a.a.la(b,function(b){return f.includeDestroyed||\nb===p||null===b||!a.a.c(b._destroy)});a.k.t(a.a.Ua,null,[h,b,q,f,m])},null,{G:h})};var h=a.a.f.L();a.d.template={init:function(b,c){var d=a.a.c(c());\"string\"==typeof d||d.name?a.e.da(b):(d=a.e.childNodes(b),d=a.a.ec(d),(new a.n.Z(b)).nodes(d));return{controlsDescendantBindings:!0}},update:function(b,c,d,e,f){var m=c(),q;c=a.a.c(m);d=!0;e=null;\"string\"==typeof c?c={}:(m=c.name,\"if\"in c&&(d=a.a.c(c[\"if\"])),d&&\"ifnot\"in c&&(d=!a.a.c(c.ifnot)),q=a.a.c(c.data));\"foreach\"in c?e=a.jc(m||b,d&&c.foreach||\n[],c,b,f):d?(f=\"data\"in c?f.createChildContext(q,c.as):f,e=a.Ta(m||b,f,c,b)):a.e.da(b);f=e;(q=a.a.f.get(b,h))&&\"function\"==typeof q.F&&q.F();a.a.f.set(b,h,f&&f.ga()?f:p)}};a.g.aa.template=function(b){b=a.g.Ra(b);return 1==b.length&&b[0].unknown||a.g.bc(b,\"name\")?null:\"This template engine does not support anonymous templates nested within its templates\"};a.e.Q.template=!0})();a.b(\"setTemplateEngine\",a.Wa);a.b(\"renderTemplate\",a.Ta);a.a.nb=function(a,c,d){if(a.length&&c.length){var e,f,h,g,k;for(e=\nf=0;(!d||e<d)&&(g=a[f]);++f){for(h=0;k=c[h];++h)if(g.value===k.value){g.moved=k.index;k.moved=g.index;c.splice(h,1);e=h=0;break}e+=h}}};a.a.Aa=function(){function b(b,d,e,f,h){var g=Math.min,k=Math.max,l=[],n,p=b.length,m,q=d.length,s=q-p||1,t=p+q+1,u,w,y;for(n=0;n<=p;n++)for(w=u,l.push(u=[]),y=g(q,n+s),m=k(0,n-1);m<=y;m++)u[m]=m?n?b[n-1]===d[m-1]?w[m-1]:g(w[m]||t,u[m-1]||t)+1:m+1:n+1;g=[];k=[];s=[];n=p;for(m=q;n||m;)q=l[n][m]-1,m&&q===l[n][m-1]?k.push(g[g.length]={status:e,value:d[--m],index:m}):\nn&&q===l[n-1][m]?s.push(g[g.length]={status:f,value:b[--n],index:n}):(--m,--n,h.sparse||g.push({status:\"retained\",value:d[m]}));a.a.nb(k,s,10*p);return g.reverse()}return function(a,d,e){e=\"boolean\"===typeof e?{dontLimitMoves:e}:e||{};a=a||[];d=d||[];return a.length<=d.length?b(a,d,\"added\",\"deleted\",e):b(d,a,\"deleted\",\"added\",e)}}();a.b(\"utils.compareArrays\",a.a.Aa);(function(){function b(b,c,f,h,g){var k=[],l=a.h(function(){var l=c(f,g,a.a.ea(k,b))||[];0<k.length&&(a.a.Bb(k,l),h&&a.k.t(h,null,[f,\nl,g]));k.length=0;a.a.$(k,l)},null,{G:b,Da:function(){return!a.a.eb(k)}});return{S:k,h:l.ga()?l:p}}var c=a.a.f.L();a.a.Ua=function(d,e,f,h,g){function k(b,c){v=r[c];u!==c&&(z[b]=v);v.Ia(u++);a.a.ea(v.S,d);s.push(v);y.push(v)}function l(b,c){if(b)for(var d=0,e=c.length;d<e;d++)c[d]&&a.a.r(c[d].S,function(a){b(a,d,c[d].ka)})}e=e||[];h=h||{};var n=a.a.f.get(d,c)===p,r=a.a.f.get(d,c)||[],m=a.a.ya(r,function(a){return a.ka}),q=a.a.Aa(m,e,h.dontLimitMoves),s=[],t=0,u=0,w=[],y=[];e=[];for(var z=[],m=[],\nv,x=0,A,C;A=q[x];x++)switch(C=A.moved,A.status){case \"deleted\":C===p&&(v=r[t],v.h&&v.h.F(),w.push.apply(w,a.a.ea(v.S,d)),h.beforeRemove&&(e[x]=v,y.push(v)));t++;break;case \"retained\":k(x,t++);break;case \"added\":C!==p?k(x,C):(v={ka:A.value,Ia:a.m(u++)},s.push(v),y.push(v),n||(m[x]=v))}l(h.beforeMove,z);a.a.r(w,h.beforeRemove?a.M:a.removeNode);for(var x=0,n=a.e.firstChild(d),E;v=y[x];x++){v.S||a.a.extend(v,b(d,f,v.ka,g,v.Ia));for(t=0;q=v.S[t];n=q.nextSibling,E=q,t++)q!==n&&a.e.rb(d,q,E);!v.Zb&&g&&(g(v.ka,\nv.S,v.Ia),v.Zb=!0)}l(h.beforeRemove,e);l(h.afterMove,z);l(h.afterAdd,m);a.a.f.set(d,c,s)}})();a.b(\"utils.setDomNodeChildrenFromArrayMapping\",a.a.Ua);a.K=function(){this.allowTemplateRewriting=!1};a.K.prototype=new a.C;a.K.prototype.renderTemplateSource=function(b){var c=(9>a.a.oa?0:b.nodes)?b.nodes():null;if(c)return a.a.R(c.cloneNode(!0).childNodes);b=b.text();return a.a.Qa(b)};a.K.Ja=new a.K;a.Wa(a.K.Ja);a.b(\"nativeTemplateEngine\",a.K);(function(){a.La=function(){var a=this.ac=function(){if(!t||\n!t.tmpl)return 0;try{if(0<=t.tmpl.tag.tmpl.open.toString().indexOf(\"__\"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,f){f=f||{};if(2>a)throw Error(\"Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.\");var h=b.data(\"precompiled\");h||(h=b.text()||\"\",h=t.template(null,\"{{ko_with $item.koBindingContext}}\"+h+\"{{/ko_with}}\"),b.data(\"precompiled\",h));b=[e.$data];e=t.extend({koBindingContext:e},f.templateOptions);e=t.tmpl(h,b,e);e.appendTo(w.createElement(\"div\"));\nt.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return\"{{ko_code ((function() { return \"+a+\" })()) }}\"};this.addTemplate=function(a,b){w.write(\"<script type='text/html' id='\"+a+\"'>\"+b+\"\\x3c/script>\")};0<a&&(t.tmpl.tag.ko_code={open:\"__.push($1 || '');\"},t.tmpl.tag.ko_with={open:\"with($1) {\",close:\"} \"})};a.La.prototype=new a.C;var b=new a.La;0<b.ac&&a.Wa(b);a.b(\"jqueryTmplTemplateEngine\",a.La)})()})})();})();","/// Knockout Mapping plugin v2.4.1\n/// (c) 2013 Steven Sanderson, Roy Jacobs - http://knockoutjs.com/\n/// License: MIT (http://www.opensource.org/licenses/mit-license.php)\n(function(e){\"function\"===typeof require&&\"object\"===typeof exports&&\"object\"===typeof module?e(require(\"knockout\"),exports):\"function\"===typeof define&&define.amd?define([\"knockout\",\"exports\"],e):e(ko,ko.mapping={})})(function(e,f){function y(b,c){var a,d;for(d in c)if(c.hasOwnProperty(d)&&c[d])if(a=f.getType(b[d]),d&&b[d]&&\"array\"!==a&&\"string\"!==a)y(b[d],c[d]);else if(\"array\"===f.getType(b[d])&&\"array\"===f.getType(c[d])){a=b;for(var e=d,l=b[d],n=c[d],t={},g=l.length-1;0<=g;--g)t[l[g]]=l[g];for(g=\nn.length-1;0<=g;--g)t[n[g]]=n[g];l=[];n=void 0;for(n in t)l.push(t[n]);a[e]=l}else b[d]=c[d]}function E(b,c){var a={};y(a,b);y(a,c);return a}function z(b,c){for(var a=E({},b),e=L.length-1;0<=e;e--){var f=L[e];a[f]&&(a[\"\"]instanceof Object||(a[\"\"]={}),a[\"\"][f]=a[f],delete a[f])}c&&(a.ignore=h(c.ignore,a.ignore),a.include=h(c.include,a.include),a.copy=h(c.copy,a.copy),a.observe=h(c.observe,a.observe));a.ignore=h(a.ignore,j.ignore);a.include=h(a.include,j.include);a.copy=h(a.copy,j.copy);a.observe=h(a.observe,\nj.observe);a.mappedProperties=a.mappedProperties||{};a.copiedProperties=a.copiedProperties||{};return a}function h(b,c){\"array\"!==f.getType(b)&&(b=\"undefined\"===f.getType(b)?[]:[b]);\"array\"!==f.getType(c)&&(c=\"undefined\"===f.getType(c)?[]:[c]);return e.utils.arrayGetDistinctValues(b.concat(c))}function F(b,c,a,d,k,l,n){var t=\"array\"===f.getType(e.utils.unwrapObservable(c));l=l||\"\";if(f.isMapped(b)){var g=e.utils.unwrapObservable(b)[p];a=E(g,a)}var j=n||k,h=function(){return a[d]&&a[d].create instanceof\nFunction},x=function(b){var f=G,g=e.dependentObservable;e.dependentObservable=function(a,b,c){c=c||{};a&&\"object\"==typeof a&&(c=a);var d=c.deferEvaluation,M=!1;c.deferEvaluation=!0;a=new H(a,b,c);if(!d){var g=a,d=e.dependentObservable;e.dependentObservable=H;a=e.isWriteableObservable(g);e.dependentObservable=d;d=H({read:function(){M||(e.utils.arrayRemoveItem(f,g),M=!0);return g.apply(g,arguments)},write:a&&function(a){return g(a)},deferEvaluation:!0});d.__DO=g;a=d;f.push(a)}return a};e.dependentObservable.fn=\nH.fn;e.computed=e.dependentObservable;b=e.utils.unwrapObservable(k)instanceof Array?a[d].create({data:b||c,parent:j,skip:N}):a[d].create({data:b||c,parent:j});e.dependentObservable=g;e.computed=e.dependentObservable;return b},u=function(){return a[d]&&a[d].update instanceof Function},v=function(b,f){var g={data:f||c,parent:j,target:e.utils.unwrapObservable(b)};e.isWriteableObservable(b)&&(g.observable=b);return a[d].update(g)};if(n=I.get(c))return n;d=d||\"\";if(t){var t=[],s=!1,m=function(a){return a};\na[d]&&a[d].key&&(m=a[d].key,s=!0);e.isObservable(b)||(b=e.observableArray([]),b.mappedRemove=function(a){var c=\"function\"==typeof a?a:function(b){return b===m(a)};return b.remove(function(a){return c(m(a))})},b.mappedRemoveAll=function(a){var c=C(a,m);return b.remove(function(a){return-1!=e.utils.arrayIndexOf(c,m(a))})},b.mappedDestroy=function(a){var c=\"function\"==typeof a?a:function(b){return b===m(a)};return b.destroy(function(a){return c(m(a))})},b.mappedDestroyAll=function(a){var c=C(a,m);return b.destroy(function(a){return-1!=\ne.utils.arrayIndexOf(c,m(a))})},b.mappedIndexOf=function(a){var c=C(b(),m);a=m(a);return e.utils.arrayIndexOf(c,a)},b.mappedGet=function(a){return b()[b.mappedIndexOf(a)]},b.mappedCreate=function(a){if(-1!==b.mappedIndexOf(a))throw Error(\"There already is an object with the key that you specified.\");var c=h()?x(a):a;u()&&(a=v(c,a),e.isWriteableObservable(c)?c(a):c=a);b.push(c);return c});n=C(e.utils.unwrapObservable(b),m).sort();g=C(c,m);s&&g.sort();s=e.utils.compareArrays(n,g);n={};var J,A=e.utils.unwrapObservable(c),\ny={},z=!0,g=0;for(J=A.length;g<J;g++){var r=m(A[g]);if(void 0===r||r instanceof Object){z=!1;break}y[r]=A[g]}var A=[],B=0,g=0;for(J=s.length;g<J;g++){var r=s[g],q,w=l+\"[\"+g+\"]\";switch(r.status){case \"added\":var D=z?y[r.value]:K(e.utils.unwrapObservable(c),r.value,m);q=F(void 0,D,a,d,b,w,k);h()||(q=e.utils.unwrapObservable(q));w=O(e.utils.unwrapObservable(c),D,n);q===N?B++:A[w-B]=q;n[w]=!0;break;case \"retained\":D=z?y[r.value]:K(e.utils.unwrapObservable(c),r.value,m);q=K(b,r.value,m);F(q,D,a,d,b,w,\nk);w=O(e.utils.unwrapObservable(c),D,n);A[w]=q;n[w]=!0;break;case \"deleted\":q=K(b,r.value,m)}t.push({event:r.status,item:q})}b(A);a[d]&&a[d].arrayChanged&&e.utils.arrayForEach(t,function(b){a[d].arrayChanged(b.event,b.item)})}else if(P(c)){b=e.utils.unwrapObservable(b);if(!b){if(h())return s=x(),u()&&(s=v(s)),s;if(u())return v(s);b={}}u()&&(b=v(b));I.save(c,b);if(u())return b;Q(c,function(d){var f=l.length?l+\".\"+d:d;if(-1==e.utils.arrayIndexOf(a.ignore,f))if(-1!=e.utils.arrayIndexOf(a.copy,f))b[d]=\nc[d];else if(\"object\"!=typeof c[d]&&\"array\"!=typeof c[d]&&0<a.observe.length&&-1==e.utils.arrayIndexOf(a.observe,f))b[d]=c[d],a.copiedProperties[f]=!0;else{var g=I.get(c[d]),k=F(b[d],c[d],a,d,b,f,b),g=g||k;if(0<a.observe.length&&-1==e.utils.arrayIndexOf(a.observe,f))b[d]=g(),a.copiedProperties[f]=!0;else{if(e.isWriteableObservable(b[d])){if(g=e.utils.unwrapObservable(g),b[d]()!==g)b[d](g)}else g=void 0===b[d]?g:e.utils.unwrapObservable(g),b[d]=g;a.mappedProperties[f]=!0}}})}else switch(f.getType(c)){case \"function\":u()?\ne.isWriteableObservable(c)?(c(v(c)),b=c):b=v(c):b=c;break;default:if(e.isWriteableObservable(b))return q=u()?v(b):e.utils.unwrapObservable(c),b(q),q;h()||u();b=h()?x():e.observable(e.utils.unwrapObservable(c));u()&&b(v(b))}return b}function O(b,c,a){for(var d=0,e=b.length;d<e;d++)if(!0!==a[d]&&b[d]===c)return d;return null}function R(b,c){var a;c&&(a=c(b));\"undefined\"===f.getType(a)&&(a=b);return e.utils.unwrapObservable(a)}function K(b,c,a){b=e.utils.unwrapObservable(b);for(var d=0,f=b.length;d<\nf;d++){var l=b[d];if(R(l,a)===c)return l}throw Error(\"When calling ko.update*, the key '\"+c+\"' was not found!\");}function C(b,c){return e.utils.arrayMap(e.utils.unwrapObservable(b),function(a){return c?R(a,c):a})}function Q(b,c){if(\"array\"===f.getType(b))for(var a=0;a<b.length;a++)c(a);else for(a in b)c(a)}function P(b){var c=f.getType(b);return(\"object\"===c||\"array\"===c)&&null!==b}function T(){var b=[],c=[];this.save=function(a,d){var f=e.utils.arrayIndexOf(b,a);0<=f?c[f]=d:(b.push(a),c.push(d))};\nthis.get=function(a){a=e.utils.arrayIndexOf(b,a);return 0<=a?c[a]:void 0}}function S(){var b={},c=function(a){var c;try{c=a}catch(e){c=\"$$$\"}a=b[c];void 0===a&&(a=new T,b[c]=a);return a};this.save=function(a,b){c(a).save(a,b)};this.get=function(a){return c(a).get(a)}}var p=\"__ko_mapping__\",H=e.dependentObservable,B=0,G,I,L=[\"create\",\"update\",\"key\",\"arrayChanged\"],N={},x={include:[\"_destroy\"],ignore:[],copy:[],observe:[]},j=x;f.isMapped=function(b){return(b=e.utils.unwrapObservable(b))&&b[p]};f.fromJS=\nfunction(b){if(0==arguments.length)throw Error(\"When calling ko.fromJS, pass the object you want to convert.\");try{B++||(G=[],I=new S);var c,a;2==arguments.length&&(arguments[1][p]?a=arguments[1]:c=arguments[1]);3==arguments.length&&(c=arguments[1],a=arguments[2]);a&&(c=E(c,a[p]));c=z(c);var d=F(a,b,c);a&&(d=a);if(!--B)for(;G.length;){var e=G.pop();e&&(e(),e.__DO.throttleEvaluation=e.throttleEvaluation)}d[p]=E(d[p],c);return d}catch(f){throw B=0,f;}};f.fromJSON=function(b){var c=e.utils.parseJson(b);\narguments[0]=c;return f.fromJS.apply(this,arguments)};f.updateFromJS=function(){throw Error(\"ko.mapping.updateFromJS, use ko.mapping.fromJS instead. Please note that the order of parameters is different!\");};f.updateFromJSON=function(){throw Error(\"ko.mapping.updateFromJSON, use ko.mapping.fromJSON instead. Please note that the order of parameters is different!\");};f.toJS=function(b,c){j||f.resetDefaultOptions();if(0==arguments.length)throw Error(\"When calling ko.mapping.toJS, pass the object you want to convert.\");\nif(\"array\"!==f.getType(j.ignore))throw Error(\"ko.mapping.defaultOptions().ignore should be an array.\");if(\"array\"!==f.getType(j.include))throw Error(\"ko.mapping.defaultOptions().include should be an array.\");if(\"array\"!==f.getType(j.copy))throw Error(\"ko.mapping.defaultOptions().copy should be an array.\");c=z(c,b[p]);return f.visitModel(b,function(a){return e.utils.unwrapObservable(a)},c)};f.toJSON=function(b,c){var a=f.toJS(b,c);return e.utils.stringifyJson(a)};f.defaultOptions=function(){if(0<arguments.length)j=\narguments[0];else return j};f.resetDefaultOptions=function(){j={include:x.include.slice(0),ignore:x.ignore.slice(0),copy:x.copy.slice(0)}};f.getType=function(b){if(b&&\"object\"===typeof b){if(b.constructor===Date)return\"date\";if(b.constructor===Array)return\"array\"}return typeof b};f.visitModel=function(b,c,a){a=a||{};a.visitedObjects=a.visitedObjects||new S;var d,k=e.utils.unwrapObservable(b);if(P(k))a=z(a,k[p]),c(b,a.parentName),d=\"array\"===f.getType(k)?[]:{};else return c(b,a.parentName);a.visitedObjects.save(b,\nd);var l=a.parentName;Q(k,function(b){if(!(a.ignore&&-1!=e.utils.arrayIndexOf(a.ignore,b))){var j=k[b],g=a,h=l||\"\";\"array\"===f.getType(k)?l&&(h+=\"[\"+b+\"]\"):(l&&(h+=\".\"),h+=b);g.parentName=h;if(!(-1===e.utils.arrayIndexOf(a.copy,b)&&-1===e.utils.arrayIndexOf(a.include,b)&&k[p]&&k[p].mappedProperties&&!k[p].mappedProperties[b]&&k[p].copiedProperties&&!k[p].copiedProperties[b]&&\"array\"!==f.getType(k)))switch(f.getType(e.utils.unwrapObservable(j))){case \"object\":case \"array\":case \"undefined\":g=a.visitedObjects.get(j);\nd[b]=\"undefined\"!==f.getType(g)?g:f.visitModel(j,c,a);break;default:d[b]=c(j,a.parentName)}}});return d}});\n","// knockout-sortable 0.9.3 | (c) 2014 Ryan Niemeyer | http://www.opensource.org/licenses/mit-license\n;(function(factory) {\n if (typeof define === \"function\" && define.amd) {\n // AMD anonymous module\n define([\"knockout\", \"jquery\", \"jquery.ui.sortable\"], factory);\n } else if (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\") {\n // CommonJS module\n var ko = require(\"knockout\"),\n jQuery = require(\"jquery\");\n require(\"jquery.ui.sortable\");\n factory(ko, jQuery);\n } else {\n // No module loader (plain <script> tag) - put directly in global namespace\n factory(window.ko, window.jQuery);\n }\n})(function(ko, $) {\n var ITEMKEY = \"ko_sortItem\",\n INDEXKEY = \"ko_sourceIndex\",\n LISTKEY = \"ko_sortList\",\n PARENTKEY = \"ko_parentList\",\n DRAGKEY = \"ko_dragItem\",\n unwrap = ko.utils.unwrapObservable,\n dataGet = ko.utils.domData.get,\n dataSet = ko.utils.domData.set,\n version = $.ui && $.ui.version,\n //1.8.24 included a fix for how events were triggered in nested sortables. indexOf checks will fail if version starts with that value (0 vs. -1)\n hasNestedSortableFix = version && version.indexOf(\"1.6.\") && version.indexOf(\"1.7.\") && (version.indexOf(\"1.8.\") || version === \"1.8.24\");\n\n //internal afterRender that adds meta-data to children\n var addMetaDataAfterRender = function(elements, data) {\n ko.utils.arrayForEach(elements, function(element) {\n if (element.nodeType === 1) {\n dataSet(element, ITEMKEY, data);\n dataSet(element, PARENTKEY, dataGet(element.parentNode, LISTKEY));\n }\n });\n };\n\n //prepare the proper options for the template binding\n var prepareTemplateOptions = function(valueAccessor, dataName) {\n var result = {},\n options = unwrap(valueAccessor()) || {},\n actualAfterRender;\n\n //build our options to pass to the template engine\n if (options.data) {\n result[dataName] = options.data;\n result.name = options.template;\n } else {\n result[dataName] = valueAccessor();\n }\n\n ko.utils.arrayForEach([\"afterAdd\", \"afterRender\", \"as\", \"beforeRemove\", \"includeDestroyed\", \"templateEngine\", \"templateOptions\"], function (option) {\n result[option] = options[option] || ko.bindingHandlers.sortable[option];\n });\n\n //use an afterRender function to add meta-data\n if (dataName === \"foreach\") {\n if (result.afterRender) {\n //wrap the existing function, if it was passed\n actualAfterRender = result.afterRender;\n result.afterRender = function(element, data) {\n addMetaDataAfterRender.call(data, element, data);\n actualAfterRender.call(data, element, data);\n };\n } else {\n result.afterRender = addMetaDataAfterRender;\n }\n }\n\n //return options to pass to the template binding\n return result;\n };\n\n var updateIndexFromDestroyedItems = function(index, items) {\n var unwrapped = unwrap(items);\n\n if (unwrapped) {\n for (var i = 0; i < index; i++) {\n //add one for every destroyed item we find before the targetIndex in the target array\n if (unwrapped[i] && unwrap(unwrapped[i]._destroy)) {\n index++;\n }\n }\n }\n\n return index;\n };\n\n //remove problematic leading/trailing whitespace from templates\n var stripTemplateWhitespace = function(element, name) {\n var templateSource,\n templateElement;\n\n //process named templates\n if (name) {\n templateElement = document.getElementById(name);\n if (templateElement) {\n templateSource = new ko.templateSources.domElement(templateElement);\n templateSource.text($.trim(templateSource.text()));\n }\n }\n else {\n //remove leading/trailing non-elements from anonymous templates\n $(element).contents().each(function() {\n if (this && this.nodeType !== 1) {\n element.removeChild(this);\n }\n });\n }\n };\n\n //connect items with observableArrays\n ko.bindingHandlers.sortable = {\n init: function(element, valueAccessor, allBindingsAccessor, data, context) {\n var $element = $(element),\n value = unwrap(valueAccessor()) || {},\n templateOptions = prepareTemplateOptions(valueAccessor, \"foreach\"),\n sortable = {},\n startActual, updateActual;\n\n stripTemplateWhitespace(element, templateOptions.name);\n\n //build a new object that has the global options with overrides from the binding\n $.extend(true, sortable, ko.bindingHandlers.sortable);\n if (value.options && sortable.options) {\n ko.utils.extend(sortable.options, value.options);\n delete value.options;\n }\n ko.utils.extend(sortable, value);\n\n //if allowDrop is an observable or a function, then execute it in a computed observable\n if (sortable.connectClass && (ko.isObservable(sortable.allowDrop) || typeof sortable.allowDrop == \"function\")) {\n ko.computed({\n read: function() {\n var value = unwrap(sortable.allowDrop),\n shouldAdd = typeof value == \"function\" ? value.call(this, templateOptions.foreach) : value;\n ko.utils.toggleDomNodeCssClass(element, sortable.connectClass, shouldAdd);\n },\n disposeWhenNodeIsRemoved: element\n }, this);\n } else {\n ko.utils.toggleDomNodeCssClass(element, sortable.connectClass, sortable.allowDrop);\n }\n\n //wrap the template binding\n ko.bindingHandlers.template.init(element, function() { return templateOptions; }, allBindingsAccessor, data, context);\n\n //keep a reference to start/update functions that might have been passed in\n startActual = sortable.options.start;\n updateActual = sortable.options.update;\n\n //initialize sortable binding after template binding has rendered in update function\n var createTimeout = setTimeout(function() {\n var dragItem;\n $element.sortable(ko.utils.extend(sortable.options, {\n start: function(event, ui) {\n //track original index\n var el = ui.item[0];\n dataSet(el, INDEXKEY, ko.utils.arrayIndexOf(ui.item.parent().children(), el));\n\n //make sure that fields have a chance to update model\n ui.item.find(\"input:focus\").change();\n if (startActual) {\n startActual.apply(this, arguments);\n }\n },\n receive: function(event, ui) {\n dragItem = dataGet(ui.item[0], DRAGKEY);\n if (dragItem) {\n //copy the model item, if a clone option is provided\n if (dragItem.clone) {\n dragItem = dragItem.clone();\n }\n\n //configure a handler to potentially manipulate item before drop\n if (sortable.dragged) {\n dragItem = sortable.dragged.call(this, dragItem, event, ui) || dragItem;\n }\n }\n },\n update: function(event, ui) {\n var sourceParent, targetParent, sourceIndex, targetIndex, arg,\n el = ui.item[0],\n parentEl = ui.item.parent()[0],\n item = dataGet(el, ITEMKEY) || dragItem;\n\n dragItem = null;\n\n //make sure that moves only run once, as update fires on multiple containers\n if (item && (this === parentEl) || (!hasNestedSortableFix && $.contains(this, parentEl))) {\n //identify parents\n sourceParent = dataGet(el, PARENTKEY);\n sourceIndex = dataGet(el, INDEXKEY);\n targetParent = dataGet(el.parentNode, LISTKEY);\n targetIndex = ko.utils.arrayIndexOf(ui.item.parent().children(), el);\n\n //take destroyed items into consideration\n if (!templateOptions.includeDestroyed) {\n sourceIndex = updateIndexFromDestroyedItems(sourceIndex, sourceParent);\n targetIndex = updateIndexFromDestroyedItems(targetIndex, targetParent);\n }\n\n //build up args for the callbacks\n if (sortable.beforeMove || sortable.afterMove) {\n arg = {\n item: item,\n sourceParent: sourceParent,\n sourceParentNode: sourceParent && ui.sender || el.parentNode,\n sourceIndex: sourceIndex,\n targetParent: targetParent,\n targetIndex: targetIndex,\n cancelDrop: false\n };\n\n //execute the configured callback prior to actually moving items\n if (sortable.beforeMove) {\n sortable.beforeMove.call(this, arg, event, ui);\n }\n }\n\n //call cancel on the correct list, so KO can take care of DOM manipulation\n if (sourceParent) {\n $(sourceParent === targetParent ? this : ui.sender || this).sortable(\"cancel\");\n }\n //for a draggable item just remove the element\n else {\n $(el).remove();\n }\n\n //if beforeMove told us to cancel, then we are done\n if (arg && arg.cancelDrop) {\n return;\n }\n\n //do the actual move\n if (targetIndex >= 0) {\n if (sourceParent) {\n sourceParent.splice(sourceIndex, 1);\n\n //if using deferred updates plugin, force updates\n if (ko.processAllDeferredBindingUpdates) {\n ko.processAllDeferredBindingUpdates();\n }\n }\n\n targetParent.splice(targetIndex, 0, item);\n }\n\n //rendering is handled by manipulating the observableArray; ignore dropped element\n dataSet(el, ITEMKEY, null);\n\n //if using deferred updates plugin, force updates\n if (ko.processAllDeferredBindingUpdates) {\n ko.processAllDeferredBindingUpdates();\n }\n\n //allow binding to accept a function to execute after moving the item\n if (sortable.afterMove) {\n sortable.afterMove.call(this, arg, event, ui);\n }\n }\n\n if (updateActual) {\n updateActual.apply(this, arguments);\n }\n },\n connectWith: sortable.connectClass ? \".\" + sortable.connectClass : false\n }));\n\n //handle enabling/disabling sorting\n if (sortable.isEnabled !== undefined) {\n ko.computed({\n read: function() {\n $element.sortable(unwrap(sortable.isEnabled) ? \"enable\" : \"disable\");\n },\n disposeWhenNodeIsRemoved: element\n });\n }\n }, 0);\n\n //handle disposal\n ko.utils.domNodeDisposal.addDisposeCallback(element, function() {\n //only call destroy if sortable has been created\n if ($element.data(\"ui-sortable\") || $element.data(\"sortable\")) {\n $element.sortable(\"destroy\");\n }\n\n //do not create the sortable if the element has been removed from DOM\n clearTimeout(createTimeout);\n });\n\n return { 'controlsDescendantBindings': true };\n },\n update: function(element, valueAccessor, allBindingsAccessor, data, context) {\n var templateOptions = prepareTemplateOptions(valueAccessor, \"foreach\");\n\n //attach meta-data\n dataSet(element, LISTKEY, templateOptions.foreach);\n\n //call template binding's update with correct options\n ko.bindingHandlers.template.update(element, function() { return templateOptions; }, allBindingsAccessor, data, context);\n },\n connectClass: 'ko_container',\n allowDrop: true,\n afterMove: null,\n beforeMove: null,\n options: {}\n };\n\n //create a draggable that is appropriate for dropping into a sortable\n ko.bindingHandlers.draggable = {\n init: function(element, valueAccessor, allBindingsAccessor, data, context) {\n var value = unwrap(valueAccessor()) || {},\n options = value.options || {},\n draggableOptions = ko.utils.extend({}, ko.bindingHandlers.draggable.options),\n templateOptions = prepareTemplateOptions(valueAccessor, \"data\"),\n connectClass = value.connectClass || ko.bindingHandlers.draggable.connectClass,\n isEnabled = value.isEnabled !== undefined ? value.isEnabled : ko.bindingHandlers.draggable.isEnabled;\n\n value = \"data\" in value ? value.data : value;\n\n //set meta-data\n dataSet(element, DRAGKEY, value);\n\n //override global options with override options passed in\n ko.utils.extend(draggableOptions, options);\n\n //setup connection to a sortable\n draggableOptions.connectToSortable = connectClass ? \".\" + connectClass : false;\n\n //initialize draggable\n $(element).draggable(draggableOptions);\n\n //handle enabling/disabling sorting\n if (isEnabled !== undefined) {\n ko.computed({\n read: function() {\n $(element).draggable(unwrap(isEnabled) ? \"enable\" : \"disable\");\n },\n disposeWhenNodeIsRemoved: element\n });\n }\n\n return ko.bindingHandlers.template.init(element, function() { return templateOptions; }, allBindingsAccessor, data, context);\n },\n update: function(element, valueAccessor, allBindingsAccessor, data, context) {\n var templateOptions = prepareTemplateOptions(valueAccessor, \"data\");\n\n return ko.bindingHandlers.template.update(element, function() { return templateOptions; }, allBindingsAccessor, data, context);\n },\n connectClass: ko.bindingHandlers.sortable.connectClass,\n options: {\n helper: \"clone\"\n }\n };\n\n});\n","// Underscore.js 1.7.0\n// http://underscorejs.org\n// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` in the browser, or `exports` on the server.\n var root = this;\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\n\n // Create quick reference variables for speed access to core prototypes.\n var\n push = ArrayProto.push,\n slice = ArrayProto.slice,\n concat = ArrayProto.concat,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var\n nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeBind = FuncProto.bind;\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for the old `require()` API. If we're in\n // the browser, add `_` as a global object.\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.7.0';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var createCallback = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n case 2: return function(value, other) {\n return func.call(context, value, other);\n };\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n // A mostly-internal function to generate callbacks that can be applied\n // to each element in a collection, returning the desired result — either\n // identity, an arbitrary callback, a property matcher, or a property accessor.\n _.iteratee = function(value, context, argCount) {\n if (value == null) return _.identity;\n if (_.isFunction(value)) return createCallback(value, context, argCount);\n if (_.isObject(value)) return _.matches(value);\n return _.property(value);\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n if (obj == null) return obj;\n iteratee = createCallback(iteratee, context);\n var i, length = obj.length;\n if (length === +length) {\n for (i = 0; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n if (obj == null) return [];\n iteratee = _.iteratee(iteratee, context);\n var keys = obj.length !== +obj.length && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length),\n currentKey;\n for (var index = 0; index < length; index++) {\n currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n var reduceError = 'Reduce of empty array with no initial value';\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = function(obj, iteratee, memo, context) {\n if (obj == null) obj = [];\n iteratee = createCallback(iteratee, context, 4);\n var keys = obj.length !== +obj.length && _.keys(obj),\n length = (keys || obj).length,\n index = 0, currentKey;\n if (arguments.length < 3) {\n if (!length) throw new TypeError(reduceError);\n memo = obj[keys ? keys[index++] : index++];\n }\n for (; index < length; index++) {\n currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = function(obj, iteratee, memo, context) {\n if (obj == null) obj = [];\n iteratee = createCallback(iteratee, context, 4);\n var keys = obj.length !== + obj.length && _.keys(obj),\n index = (keys || obj).length,\n currentKey;\n if (arguments.length < 3) {\n if (!index) throw new TypeError(reduceError);\n memo = obj[keys ? keys[--index] : --index];\n }\n while (index--) {\n currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var result;\n predicate = _.iteratee(predicate, context);\n _.some(obj, function(value, index, list) {\n if (predicate(value, index, list)) {\n result = value;\n return true;\n }\n });\n return result;\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n if (obj == null) return results;\n predicate = _.iteratee(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(_.iteratee(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n if (obj == null) return true;\n predicate = _.iteratee(predicate, context);\n var keys = obj.length !== +obj.length && _.keys(obj),\n length = (keys || obj).length,\n index, currentKey;\n for (index = 0; index < length; index++) {\n currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n if (obj == null) return false;\n predicate = _.iteratee(predicate, context);\n var keys = obj.length !== +obj.length && _.keys(obj),\n length = (keys || obj).length,\n index, currentKey;\n for (index = 0; index < length; index++) {\n currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given value (using `===`).\n // Aliased as `include`.\n _.contains = _.include = function(obj, target) {\n if (obj == null) return false;\n if (obj.length !== +obj.length) obj = _.values(obj);\n return _.indexOf(obj, target) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = function(obj, method) {\n var args = slice.call(arguments, 2);\n var isFunc = _.isFunction(method);\n return _.map(obj, function(value) {\n return (isFunc ? method : value[method]).apply(value, args);\n });\n };\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matches(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matches(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null && obj != null) {\n obj = obj.length === +obj.length ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value > result) {\n result = value;\n }\n }\n } else {\n iteratee = _.iteratee(iteratee, context);\n _.each(obj, function(value, index, list) {\n computed = iteratee(value, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = value;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null && obj != null) {\n obj = obj.length === +obj.length ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value < result) {\n result = value;\n }\n }\n } else {\n iteratee = _.iteratee(iteratee, context);\n _.each(obj, function(value, index, list) {\n computed = iteratee(value, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = value;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection, using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n _.shuffle = function(obj) {\n var set = obj && obj.length === +obj.length ? obj : _.values(obj);\n var length = set.length;\n var shuffled = Array(length);\n for (var index = 0, rand; index < length; index++) {\n rand = _.random(0, index);\n if (rand !== index) shuffled[index] = shuffled[rand];\n shuffled[rand] = set[index];\n }\n return shuffled;\n };\n\n // Sample **n** random values from a collection.\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (obj.length !== +obj.length) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n return _.shuffle(obj).slice(0, Math.max(0, n));\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n iteratee = _.iteratee(iteratee, context);\n return _.pluck(_.map(obj, function(value, index, list) {\n return {\n value: value,\n index: index,\n criteria: iteratee(value, index, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior) {\n return function(obj, iteratee, context) {\n var result = {};\n iteratee = _.iteratee(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key]++; else result[key] = 1;\n });\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = _.iteratee(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = array.length;\n while (low < high) {\n var mid = low + high >>> 1;\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (obj.length === +obj.length) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return obj.length === +obj.length ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = function(obj, predicate, context) {\n predicate = _.iteratee(predicate, context);\n var pass = [], fail = [];\n _.each(obj, function(value, key, obj) {\n (predicate(value, key, obj) ? pass : fail).push(value);\n });\n return [pass, fail];\n };\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null) return void 0;\n if (n == null || guard) return array[0];\n if (n < 0) return [];\n return slice.call(array, 0, n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N. The **guard** check allows it to work with\n // `_.map`.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array. The **guard** check allows it to work with `_.map`.\n _.last = function(array, n, guard) {\n if (array == null) return void 0;\n if (n == null || guard) return array[array.length - 1];\n return slice.call(array, Math.max(array.length - n, 0));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array. The **guard**\n // check allows it to work with `_.map`.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, _.identity);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n if (shallow && _.every(input, _.isArray)) {\n return concat.apply(output, input);\n }\n for (var i = 0, length = input.length; i < length; i++) {\n var value = input[i];\n if (!_.isArray(value) && !_.isArguments(value)) {\n if (!strict) output.push(value);\n } else if (shallow) {\n push.apply(output, value);\n } else {\n flatten(value, shallow, strict, output);\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false, []);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = function(array) {\n return _.difference(array, slice.call(arguments, 1));\n };\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (array == null) return [];\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = _.iteratee(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = array.length; i < length; i++) {\n var value = array[i];\n if (isSorted) {\n if (!i || seen !== value) result.push(value);\n seen = value;\n } else if (iteratee) {\n var computed = iteratee(value, i, array);\n if (_.indexOf(seen, computed) < 0) {\n seen.push(computed);\n result.push(value);\n }\n } else if (_.indexOf(result, value) < 0) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = function() {\n return _.uniq(flatten(arguments, true, true, []));\n };\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n if (array == null) return [];\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = array.length; i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n for (var j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = function(array) {\n var rest = flatten(slice.call(arguments, 1), true, true, []);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = function(array) {\n if (array == null) return [];\n var length = _.max(arguments, 'length').length;\n var results = Array(length);\n for (var i = 0; i < length; i++) {\n results[i] = _.pluck(arguments, i);\n }\n return results;\n };\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values.\n _.object = function(list, values) {\n if (list == null) return {};\n var result = {};\n for (var i = 0, length = list.length; i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = function(array, item, isSorted) {\n if (array == null) return -1;\n var i = 0, length = array.length;\n if (isSorted) {\n if (typeof isSorted == 'number') {\n i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;\n } else {\n i = _.sortedIndex(array, item);\n return array[i] === item ? i : -1;\n }\n }\n for (; i < length; i++) if (array[i] === item) return i;\n return -1;\n };\n\n _.lastIndexOf = function(array, item, from) {\n if (array == null) return -1;\n var idx = array.length;\n if (typeof from == 'number') {\n idx = from < 0 ? idx + from + 1 : Math.min(idx, from + 1);\n }\n while (--idx >= 0) if (array[idx] === item) return idx;\n return -1;\n };\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (arguments.length <= 1) {\n stop = start || 0;\n start = 0;\n }\n step = step || 1;\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Reusable constructor function for prototype setting.\n var Ctor = function(){};\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = function(func, context) {\n var args, bound;\n if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n args = slice.call(arguments, 2);\n bound = function() {\n if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));\n Ctor.prototype = func.prototype;\n var self = new Ctor;\n Ctor.prototype = null;\n var result = func.apply(self, args.concat(slice.call(arguments)));\n if (_.isObject(result)) return result;\n return self;\n };\n return bound;\n };\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder, allowing any combination of arguments to be pre-filled.\n _.partial = function(func) {\n var boundArgs = slice.call(arguments, 1);\n return function() {\n var position = 0;\n var args = boundArgs.slice();\n for (var i = 0, length = args.length; i < length; i++) {\n if (args[i] === _) args[i] = arguments[position++];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return func.apply(this, args);\n };\n };\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = function(obj) {\n var i, length = arguments.length, key;\n if (length <= 1) throw new Error('bindAll must be passed function names');\n for (i = 1; i < length; i++) {\n key = arguments[i];\n obj[key] = _.bind(obj[key], obj);\n }\n return obj;\n };\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = hasher ? hasher.apply(this, arguments) : key;\n if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = function(func, wait) {\n var args = slice.call(arguments, 2);\n return setTimeout(function(){\n return func.apply(null, args);\n }, wait);\n };\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = function(func) {\n return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));\n };\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n if (!options) options = {};\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, args, context, timestamp, result;\n\n var later = function() {\n var last = _.now() - timestamp;\n\n if (last < wait && last > 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n }\n }\n };\n\n return function() {\n context = this;\n args = arguments;\n timestamp = _.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed after being called N times.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed before being called N times.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n } else {\n func = null;\n }\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n // Object Functions\n // ----------------\n\n // Retrieve the names of an object's properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (_.has(obj, key)) keys.push(key);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = function(obj) {\n if (!_.isObject(obj)) return obj;\n var source, prop;\n for (var i = 1, length = arguments.length; i < length; i++) {\n source = arguments[i];\n for (prop in source) {\n if (hasOwnProperty.call(source, prop)) {\n obj[prop] = source[prop];\n }\n }\n }\n return obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = function(obj, iteratee, context) {\n var result = {}, key;\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n iteratee = createCallback(iteratee, context);\n for (key in obj) {\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n } else {\n var keys = concat.apply([], slice.call(arguments, 1));\n obj = new Object(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (key in obj) result[key] = obj[key];\n }\n }\n return result;\n };\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = function(obj, iteratee, context) {\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n } else {\n var keys = _.map(concat.apply([], slice.call(arguments, 1)), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n };\n\n // Fill in a given object with default properties.\n _.defaults = function(obj) {\n if (!_.isObject(obj)) return obj;\n for (var i = 1, length = arguments.length; i < length; i++) {\n var source = arguments[i];\n for (var prop in source) {\n if (obj[prop] === void 0) obj[prop] = source[prop];\n }\n }\n return obj;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Internal recursive comparison function for `isEqual`.\n var eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // A strict comparison is necessary because `null == undefined`.\n if (a == null || b == null) return a === b;\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n }\n if (typeof a != 'object' || typeof b != 'object') return false;\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n // Objects with different constructors are not equivalent, but `Object`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (\n aCtor !== bCtor &&\n // Handle Object.create(x) cases\n 'constructor' in a && 'constructor' in b &&\n !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n ) {\n return false;\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n var size, result;\n // Recursively compare objects and arrays.\n if (className === '[object Array]') {\n // Compare array lengths to determine if a deep comparison is necessary.\n size = a.length;\n result = size === b.length;\n if (result) {\n // Deep compare the contents, ignoring non-numeric properties.\n while (size--) {\n if (!(result = eq(a[size], b[size], aStack, bStack))) break;\n }\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n size = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n result = _.keys(b).length === size;\n if (result) {\n while (size--) {\n // Deep compare each member\n key = keys[size];\n if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return result;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b, [], []);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (_.isArray(obj) || _.isString(obj) || _.isArguments(obj)) return obj.length === 0;\n for (var key in obj) if (_.has(obj, key)) return false;\n return true;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return _.has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around an IE 11 bug.\n if (typeof /./ !== 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`? (NaN is the only number which does not equal itself).\n _.isNaN = function(obj) {\n return _.isNumber(obj) && obj !== +obj;\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n _.property = function(key) {\n return function(obj) {\n return obj[key];\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of `key:value` pairs.\n _.matches = function(attrs) {\n var pairs = _.pairs(attrs), length = pairs.length;\n return function(obj) {\n if (obj == null) return !length;\n obj = new Object(obj);\n for (var i = 0; i < length; i++) {\n var pair = pairs[i], key = pair[0];\n if (pair[1] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = createCallback(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // If the value of the named `property` is a function then invoke it with the\n // `object` as context; otherwise, return it.\n _.result = function(object, property) {\n if (object == null) return void 0;\n var value = object[property];\n return _.isFunction(value) ? object[property]() : value;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate : /<%([\\s\\S]+?)%>/g,\n interpolate : /<%=([\\s\\S]+?)%>/g,\n escape : /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escaper, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offest.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n try {\n var render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var result = function(obj) {\n return this._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return result.call(this, func.apply(_, args));\n };\n });\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return result.call(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return result.call(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define === 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}.call(this));\n","/*!\n * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n */(function($, undefined){\n\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method){\n\t\treturn function(){\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n\t\t\t\t\tif (this[i].valueOf() === val)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInline = false;\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;\n\t\tthis.hasInput = this.component && this.element.find('input').length;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\n\t\tthis.picker = $(DPGlobal.template);\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tthis.viewMode = this.o.startView;\n\n\t\tif (this.o.calendarWeeks)\n\t\t\tthis.picker.find('tfoot .today, tfoot .clear')\n\t\t\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\t\t\treturn parseInt(val) + 1;\n\t\t\t\t\t\t});\n\n\t\tthis._allow_update = false;\n\n\t\tthis.setStartDate(this._o.startDate);\n\t\tthis.setEndDate(this._o.endDate);\n\t\tthis.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);\n\t\tthis.setDatesDisabled(this.o.datesDisabled);\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis._allow_update = true;\n\n\t\tthis.update();\n\t\tthis.showMode();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\tswitch (o.startView){\n\t\t\t\tcase 2:\n\t\t\t\tcase 'decade':\n\t\t\t\t\to.startView = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 'year':\n\t\t\t\t\to.startView = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.startView = 0;\n\t\t\t}\n\n\t\t\tswitch (o.minViewMode){\n\t\t\t\tcase 1:\n\t\t\t\tcase 'months':\n\t\t\t\t\to.minViewMode = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\tcase 'years':\n\t\t\t\t\to.minViewMode = 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\to.minViewMode = 0;\n\t\t\t}\n\n\t\t\to.startView = Math.max(o.startView, o.minViewMode);\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = ((o.weekStart + 6) % 7);\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled||[];\n\t\t\tif (!$.isArray(o.daysOfWeekDisabled))\n\t\t\t\to.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\\s]*/);\n\t\t\to.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){\n\t\t\t\treturn parseInt(d, 10);\n\t\t\t});\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!$.isArray(o.datesDisabled)) {\n\t\t\t\tvar datesDisabled = [];\n\t\t\t\tdatesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language));\n\t\t\t\to.datesDisabled = datesDisabled;\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled,function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t\to.showOnFocus = o.showOnFocus !== undefined ? o.showOnFocus : true;\n\t\t},\n\t\t_events: [],\n\t\t_secondaryEvents: [],\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t}\n\t\t\t\telse if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n else if (this.component && this.hasInput) { // component: input + button\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.element.find('input'), events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse if (this.element.is('div')){ // inline datepicker\n\t\t\t\tthis.isInline = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.element.attr('readonly') && this.o.enableOnReadonly === false)\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tif (!this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.viewMode = this.o.startView;\n\t\t\tthis.showMode();\n\n\t\t\tif (\n\t\t\t\tthis.o.forceParse &&\n\t\t\t\t(\n\t\t\t\t\tthis.isInput && this.element.val() ||\n\t\t\t\t\tthis.hasInput && this.element.find('input').val()\n\t\t\t\t)\n\t\t\t)\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tremove: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\treturn utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (typeof selected_date !== 'undefined') {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tvar element;\n\t\t\tif (this.isInput) {\n\t\t\t\telement = this.element;\n\t\t\t} else if (this.component) {\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\n\t\t\tif (element) {\n\t\t\t\telement.val('').change();\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t\tthis._trigger('changeDate');\n\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, $.map(args, this._utc_to_local));\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tif (!this.isInput){\n\t\t\t\tif (this.component){\n\t\t\t\t\tthis.element.find('input').val(formatted).change();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.element.val(formatted).change();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\twindowWidth = $(this.o.container).width(),\n\t\t\t\twindowHeight = $(this.o.container).height(),\n\t\t\t\tscrollTop = $(this.o.container).scrollTop(),\n\t\t\t\tappendOffset = $(this.o.container).offset();\n\n\t\t\tvar parentsZindex = [];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && itemZIndex !== 0) parentsZindex.push(parseInt(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + 10;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left,\n\t\t\t\ttop = offset.top - appendOffset.top;\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft = offset.left + width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\t// Default to left\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow, bottom_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tbottom_overflow = scrollTop + windowHeight - (top + height + calendarHeight);\n\t\t\t\tif (Math.max(top_overflow, bottom_overflow) === bottom_overflow)\n\t\t\t\t\tyorient = 'top';\n\t\t\t\telse\n\t\t\t\t\tyorient = 'bottom';\n\t\t\t}\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop += height;\n\t\t\telse\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.element.find('input').val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\tdate < this.o.startDate ||\n\t\t\t\t\tdate > this.o.endDate ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.dates.length)\n\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t}\n\t\t\telse if (dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates))\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length)\n\t\t\t\tthis._trigger('clearDate');\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '<tr>';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\tthis.picker.find('.datepicker-days thead tr:first-child .datepicker-switch')\n\t\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\t\treturn parseInt(val) + 1;\n\t\t\t\t\t});\n\t\t\t\tvar cell = '<th class=\"cw\"> </th>';\n\t\t\t\thtml += cell;\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '<th class=\"dow\">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n\t\t},\n\n\t\tfillMonths: function(){\n\t\t\tvar html = '',\n\t\t\ti = 0;\n\t\t\twhile (i < 12){\n\t\t\t\thtml += '<span class=\"month\">'+dates[this.o.language].monthsShort[i++]+'</span>';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = new Date();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t}\n\t\t\telse if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with local today, not UTC today\n\t\t\tif (this.o.todayHighlight &&\n\t\t\t\tdate.getUTCFullYear() === today.getFullYear() &&\n\t\t\t\tdate.getUTCMonth() === today.getMonth() &&\n\t\t\t\tdate.getUTCDate() === today.getDate()){\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||\n\t\t\t\t$.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.o.datesDisabled.length > 0 &&\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d); }).length > 0) {\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n\t\t\t\ttooltip;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days thead .datepicker-switch')\n\t\t\t\t\t\t.text(dates[this.o.language].months[month]+' '+year);\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n\t\t\t\t\t\t.toggle(this.o.todayBtn !== false);\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.toggle(this.o.clearBtn !== false);\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month-1, 28),\n\t\t\t\tday = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\n\t\t\tprevMonth.setUTCDate(day);\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekStart){\n\t\t\t\t\thtml.push('<tr>');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push('<td class=\"cw\">'+ calWeek +'</td>');\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tvar before = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof(before) === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof(before) === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t}\n\n\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\thtml.push('<td class=\"'+clsName.join(' ')+'\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + '>'+prevMonth.getUTCDate() + '</td>');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (prevMonth.getUTCDay() === this.o.weekEnd){\n\t\t\t\t\thtml.push('</tr>');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate()+1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').empty().append(html.join(''));\n\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t.text(year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n\t\t\t\t\tif (!$(month).hasClass('disabled')) {\n\t\t\t\t\t\tvar moDate = new Date(year, i, 1);\n\t\t\t\t\t\tvar before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\t\tif (before === false)\n\t\t\t\t\t\t\t$(month).addClass('disabled');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thtml = '';\n\t\t\tyear = parseInt(year/10, 10) * 10;\n\t\t\tvar yearCont = this.picker.find('.datepicker-years')\n\t\t\t\t\t\t\t\t.find('th:eq(1)')\n\t\t\t\t\t\t\t\t\t.text(year + '-' + (year + 9))\n\t\t\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t\t\t.find('td');\n\t\t\tyear -= 1;\n\t\t\tvar years = $.map(this.dates, function(d){\n\t\t\t\t\treturn d.getUTCFullYear();\n\t\t\t\t}),\n\t\t\t\tclasses;\n\t\t\tfor (var i = -1; i < 11; i++){\n\t\t\t\tclasses = ['year'];\n\t\t\t\tif (i === -1)\n\t\t\t\t\tclasses.push('old');\n\t\t\t\telse if (i === 10)\n\t\t\t\t\tclasses.push('new');\n\t\t\t\tif ($.inArray(year, years) !== -1)\n\t\t\t\t\tclasses.push('active');\n\t\t\t\tif (year < startYear || year > endYear)\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\thtml += '<span class=\"' + classes.join(' ') + '\">' + year + '</span>';\n\t\t\t\tyear += 1;\n\t\t\t}\n\t\t\tyearCont.html(html);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth();\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\tcase 2:\n\t\t\t\t\tif (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.prev').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'hidden'});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.picker.find('.next').css({visibility: 'visible'});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\tvar target = $(e.target).closest('span, td, th'),\n\t\t\t\tyear, month, day;\n\t\t\tif (target.length === 1){\n\t\t\t\tswitch (target[0].nodeName.toLowerCase()){\n\t\t\t\t\tcase 'th':\n\t\t\t\t\t\tswitch (target[0].className){\n\t\t\t\t\t\t\tcase 'datepicker-switch':\n\t\t\t\t\t\t\t\tthis.showMode(1);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'prev':\n\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\tvar dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);\n\t\t\t\t\t\t\t\tswitch (this.viewMode){\n\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tthis.viewDate = this.moveYear(this.viewDate, dir);\n\t\t\t\t\t\t\t\t\t\tif (this.viewMode === 1)\n\t\t\t\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\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\tthis.fill();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'today':\n\t\t\t\t\t\t\t\tvar date = new Date();\n\t\t\t\t\t\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\n\t\t\t\t\t\t\t\tthis.showMode(-2);\n\t\t\t\t\t\t\t\tvar which = this.o.todayBtn === 'linked' ? null : 'view';\n\t\t\t\t\t\t\t\tthis._setDate(date, which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'clear':\n\t\t\t\t\t\t\t\tthis.clearDates();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'span':\n\t\t\t\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\t\t\t\t\t\t\tif (target.hasClass('month')){\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 1){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tday = 1;\n\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\tyear = parseInt(target.text(), 10)||0;\n\t\t\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t\t\t\tif (this.o.minViewMode === 2){\n\t\t\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.showMode(-1);\n\t\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'td':\n\t\t\t\t\t\tif (target.hasClass('day') && !target.hasClass('disabled')){\n\t\t\t\t\t\t\tday = parseInt(target.text(), 10)||1;\n\t\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\t\tmonth = this.viewDate.getUTCMonth();\n\t\t\t\t\t\t\tif (target.hasClass('old')){\n\t\t\t\t\t\t\t\tif (month === 0){\n\t\t\t\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t\t\t\t\tyear -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth -= 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (target.hasClass('new')){\n\t\t\t\t\t\t\t\tif (month === 11){\n\t\t\t\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\t\t\t\tyear += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tmonth += 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\t$(this._focused_from).focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif (!which || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tvar element;\n\t\t\tif (this.isInput){\n\t\t\t\telement = this.element;\n\t\t\t}\n\t\t\telse if (this.component){\n\t\t\t\telement = this.element.find('input');\n\t\t\t}\n\t\t\tif (element){\n\t\t\t\telement.change();\n\t\t\t}\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tif (new_month < 0 || new_month > 11)\n\t\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 27) // allow escape to hide and re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newDate, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 39: // right\n\t\t\t\t\tif (!this.o.keyboardNavigation)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewDate = new Date(this.dates.get(-1) || UTCToday());\n\t\t\t\t\t\tnewDate.setUTCDate(newDate.getUTCDate() + dir);\n\t\t\t\t\t\tnewViewDate = new Date(focusDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(focusDate.getUTCDate() + dir);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newViewDate)){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 38 ? -1 : 1;\n\t\t\t\t\tif (e.ctrlKey){\n\t\t\t\t\t\tnewDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveYear(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (e.shiftKey){\n\t\t\t\t\t\tnewDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);\n\t\t\t\t\t\tnewViewDate = this.moveMonth(focusDate, dir);\n\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewDate = new Date(this.dates.get(-1) || UTCToday());\n\t\t\t\t\t\tnewDate.setUTCDate(newDate.getUTCDate() + dir * 7);\n\t\t\t\t\t\tnewViewDate = new Date(focusDate);\n\t\t\t\t\t\tnewViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);\n\t\t\t\t\t}\n\t\t\t\t\tif (this.dateWithinRange(newViewDate)){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 32: // spacebar\n\t\t\t\t\t// Spacebar is used in manually typing dates in some formats.\n\t\t\t\t\t// As such, its behavior should not be hijacked.\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (typeof e.stopPropagation === 'function') {\n\t\t\t\t\t\t\te.stopPropagation(); // All modern browsers, IE9+\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\te.cancelBubble = true; // IE6,7,8 ignore \"stopPropagation\"\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tvar element;\n\t\t\t\tif (this.isInput){\n\t\t\t\t\telement = this.element;\n\t\t\t\t}\n\t\t\t\telse if (this.component){\n\t\t\t\t\telement = this.element.find('input');\n\t\t\t\t}\n\t\t\t\tif (element){\n\t\t\t\t\telement.change();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tshowMode: function(dir){\n\t\t\tif (dir){\n\t\t\t\tthis.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));\n\t\t\t}\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName)\n\t\t\t\t\t.css('display', 'block');\n\t\t\tthis.updateNavArrows();\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.bind('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $(i).data('datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $(e.target).data('datepicker'),\n\t\t\t\tnew_date = dp.getUTCDate(),\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate())\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j]){\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k]){\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tremove: function(){\n\t\t\t$.map(this.pickers, function(p){ p.remove(); });\n\t\t\tdelete this.element.data().datepicker;\n\t\t}\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\tvar ropts = {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t};\n\t\t\t\t\t$this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$this.data('datepicker', (data = new Datepicker(this, opts)));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t\tif (internal_return !== undefined)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif (internal_return !== undefined)\n\t\t\treturn internal_return;\n\t\telse\n\t\t\treturn this;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n enableOnReadonly: true,\n\t\tcontainer: 'body'\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tmodes: [\n\t\t\t{\n\t\t\t\tclsName: 'days',\n\t\t\t\tnavFnc: 'Month',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'months',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tclsName: 'years',\n\t\t\t\tnavFnc: 'FullYear',\n\t\t\t\tnavStep: 10\n\t\t}],\n\t\tisLeapYear: function(year){\n\t\t\treturn (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));\n\t\t},\n\t\tgetDaysInMonth: function(year, month){\n\t\t\treturn [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n\t\t},\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\[\\u3400-\\u9fff-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\t// IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar part_re = /([\\-+]\\d+)([dmwy])/,\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/g),\n\t\t\t\tpart, dir, i;\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/.test(date)){\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = part_re.exec(parts[i]);\n\t\t\t\t\tdir = parseInt(part[1]);\n\t\t\t\t\tswitch (part[2]){\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'w':\n\t\t\t\t\t\t\tdate.setUTCDate(date.getUTCDate() + dir * 7);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\tdate = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);\n\t\t\t}\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\t\t\tdate = new Date();\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(v);\n\t\t\t\t\t},\n\t\t\t\t\tyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(2000+v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\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\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tvar val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: '<thead>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\">«</th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"datepicker-switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\">»</th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"today\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"clear\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\" table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = \"1.4.0\";\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}(window.jQuery));\n","!function(a){a.fn.datepicker.dates.de={days:[\"Sonntag\",\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\",\"Sonntag\"],daysShort:[\"Son\",\"Mon\",\"Die\",\"Mit\",\"Don\",\"Fre\",\"Sam\",\"Son\"],daysMin:[\"So\",\"Mo\",\"Di\",\"Mi\",\"Do\",\"Fr\",\"Sa\",\"So\"],months:[\"Januar\",\"Februar\",\"März\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Dezember\"],monthsShort:[\"Jan\",\"Feb\",\"Mär\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dez\"],today:\"Heute\",clear:\"Löschen\",weekStart:1,format:\"dd.mm.yyyy\"}}(jQuery);","!function(a){a.fn.datepicker.dates.da={days:[\"Søndag\",\"Mandag\",\"Tirsdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lørdag\",\"Søndag\"],daysShort:[\"Søn\",\"Man\",\"Tir\",\"Ons\",\"Tor\",\"Fre\",\"Lør\",\"Søn\"],daysMin:[\"Sø\",\"Ma\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lø\",\"Sø\"],months:[\"Januar\",\"Februar\",\"Marts\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"December\"],monthsShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],today:\"I Dag\",clear:\"Nulstil\"}}(jQuery);","!function(a){a.fn.datepicker.dates[\"pt-BR\"]={days:[\"Domingo\",\"Segunda\",\"Terça\",\"Quarta\",\"Quinta\",\"Sexta\",\"Sábado\",\"Domingo\"],daysShort:[\"Dom\",\"Seg\",\"Ter\",\"Qua\",\"Qui\",\"Sex\",\"Sáb\",\"Dom\"],daysMin:[\"Do\",\"Se\",\"Te\",\"Qu\",\"Qu\",\"Se\",\"Sa\",\"Do\"],months:[\"Janeiro\",\"Fevereiro\",\"Março\",\"Abril\",\"Maio\",\"Junho\",\"Julho\",\"Agosto\",\"Setembro\",\"Outubro\",\"Novembro\",\"Dezembro\"],monthsShort:[\"Jan\",\"Fev\",\"Mar\",\"Abr\",\"Mai\",\"Jun\",\"Jul\",\"Ago\",\"Set\",\"Out\",\"Nov\",\"Dez\"],today:\"Hoje\",clear:\"Limpar\"}}(jQuery);","!function(a){a.fn.datepicker.dates.nl={days:[\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\",\"zondag\"],daysShort:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\",\"zo\"],daysMin:[\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\",\"zo\"],months:[\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"],monthsShort:[\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"],today:\"Vandaag\",clear:\"Wissen\",weekStart:1,format:\"dd-mm-yyyy\"}}(jQuery);","!function(a){a.fn.datepicker.dates.fr={days:[\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\",\"dimanche\"],daysShort:[\"dim.\",\"lun.\",\"mar.\",\"mer.\",\"jeu.\",\"ven.\",\"sam.\",\"dim.\"],daysMin:[\"d\",\"l\",\"ma\",\"me\",\"j\",\"v\",\"s\",\"d\"],months:[\"janvier\",\"février\",\"mars\",\"avril\",\"mai\",\"juin\",\"juillet\",\"août\",\"septembre\",\"octobre\",\"novembre\",\"décembre\"],monthsShort:[\"janv.\",\"févr.\",\"mars\",\"avril\",\"mai\",\"juin\",\"juil.\",\"août\",\"sept.\",\"oct.\",\"nov.\",\"déc.\"],today:\"Aujourd'hui\",clear:\"Effacer\",weekStart:1,format:\"dd/mm/yyyy\"}}(jQuery);","!function(a){a.fn.datepicker.dates.it={days:[\"Domenica\",\"Lunedì\",\"Martedì\",\"Mercoledì\",\"Giovedì\",\"Venerdì\",\"Sabato\",\"Domenica\"],daysShort:[\"Dom\",\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\",\"Dom\"],daysMin:[\"Do\",\"Lu\",\"Ma\",\"Me\",\"Gi\",\"Ve\",\"Sa\",\"Do\"],months:[\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Maggio\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\"],monthsShort:[\"Gen\",\"Feb\",\"Mar\",\"Apr\",\"Mag\",\"Giu\",\"Lug\",\"Ago\",\"Set\",\"Ott\",\"Nov\",\"Dic\"],today:\"Oggi\",clear:\"Cancella\",weekStart:1,format:\"dd/mm/yyyy\"}}(jQuery);","!function(a){a.fn.datepicker.dates.lt={days:[\"Sekmadienis\",\"Pirmadienis\",\"Antradienis\",\"Trečiadienis\",\"Ketvirtadienis\",\"Penktadienis\",\"Šeštadienis\",\"Sekmadienis\"],daysShort:[\"S\",\"Pr\",\"A\",\"T\",\"K\",\"Pn\",\"Š\",\"S\"],daysMin:[\"Sk\",\"Pr\",\"An\",\"Tr\",\"Ke\",\"Pn\",\"Št\",\"Sk\"],months:[\"Sausis\",\"Vasaris\",\"Kovas\",\"Balandis\",\"Gegužė\",\"Birželis\",\"Liepa\",\"Rugpjūtis\",\"Rugsėjis\",\"Spalis\",\"Lapkritis\",\"Gruodis\"],monthsShort:[\"Sau\",\"Vas\",\"Kov\",\"Bal\",\"Geg\",\"Bir\",\"Lie\",\"Rugp\",\"Rugs\",\"Spa\",\"Lap\",\"Gru\"],today:\"Šiandien\",weekStart:1}}(jQuery);","!function(a){a.fn.datepicker.dates.no={days:[\"Søndag\",\"Mandag\",\"Tirsdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lørdag\"],daysShort:[\"Søn\",\"Man\",\"Tir\",\"Ons\",\"Tor\",\"Fre\",\"Lør\"],daysMin:[\"Sø\",\"Ma\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lø\"],months:[\"Januar\",\"Februar\",\"Mars\",\"April\",\"Mai\",\"Juni\",\"Juli\",\"August\",\"September\",\"Oktober\",\"November\",\"Desember\"],monthsShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Mai\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Des\"],today:\"I dag\",clear:\"Nullstill\",weekStart:1,format:\"dd.mm.yyyy\"}}(jQuery);","!function(a){a.fn.datepicker.dates.es={days:[\"Domingo\",\"Lunes\",\"Martes\",\"Miércoles\",\"Jueves\",\"Viernes\",\"Sábado\",\"Domingo\"],daysShort:[\"Dom\",\"Lun\",\"Mar\",\"Mié\",\"Jue\",\"Vie\",\"Sáb\",\"Dom\"],daysMin:[\"Do\",\"Lu\",\"Ma\",\"Mi\",\"Ju\",\"Vi\",\"Sa\",\"Do\"],months:[\"Enero\",\"Febrero\",\"Marzo\",\"Abril\",\"Mayo\",\"Junio\",\"Julio\",\"Agosto\",\"Septiembre\",\"Octubre\",\"Noviembre\",\"Diciembre\"],monthsShort:[\"Ene\",\"Feb\",\"Mar\",\"Abr\",\"May\",\"Jun\",\"Jul\",\"Ago\",\"Sep\",\"Oct\",\"Nov\",\"Dic\"],today:\"Hoy\",clear:\"Borrar\",weekStart:1,format:\"dd/mm/yyyy\"}}(jQuery);","!function(a){a.fn.datepicker.dates.sv={days:[\"Söndag\",\"Måndag\",\"Tisdag\",\"Onsdag\",\"Torsdag\",\"Fredag\",\"Lördag\",\"Söndag\"],daysShort:[\"Sön\",\"Mån\",\"Tis\",\"Ons\",\"Tor\",\"Fre\",\"Lör\",\"Sön\"],daysMin:[\"Sö\",\"Må\",\"Ti\",\"On\",\"To\",\"Fr\",\"Lö\",\"Sö\"],months:[\"Januari\",\"Februari\",\"Mars\",\"April\",\"Maj\",\"Juni\",\"Juli\",\"Augusti\",\"September\",\"Oktober\",\"November\",\"December\"],monthsShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"Maj\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Okt\",\"Nov\",\"Dec\"],today:\"Idag\",format:\"yyyy-mm-dd\",weekStart:1,clear:\"Rensa\"}}(jQuery);","\n/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n(function() {\n var Dropzone, Emitter, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without,\n __slice = [].slice,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n noop = function() {};\n\n Emitter = (function() {\n function Emitter() {}\n\n Emitter.prototype.addEventListener = Emitter.prototype.on;\n\n Emitter.prototype.on = function(event, fn) {\n this._callbacks = this._callbacks || {};\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n this._callbacks[event].push(fn);\n return this;\n };\n\n Emitter.prototype.emit = function() {\n var args, callback, callbacks, event, _i, _len;\n event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n this._callbacks = this._callbacks || {};\n callbacks = this._callbacks[event];\n if (callbacks) {\n for (_i = 0, _len = callbacks.length; _i < _len; _i++) {\n callback = callbacks[_i];\n callback.apply(this, args);\n }\n }\n return this;\n };\n\n Emitter.prototype.removeListener = Emitter.prototype.off;\n\n Emitter.prototype.removeAllListeners = Emitter.prototype.off;\n\n Emitter.prototype.removeEventListener = Emitter.prototype.off;\n\n Emitter.prototype.off = function(event, fn) {\n var callback, callbacks, i, _i, _len;\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {};\n return this;\n }\n callbacks = this._callbacks[event];\n if (!callbacks) {\n return this;\n }\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n }\n for (i = _i = 0, _len = callbacks.length; _i < _len; i = ++_i) {\n callback = callbacks[i];\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n };\n\n return Emitter;\n\n })();\n\n Dropzone = (function(_super) {\n var extend, resolveOption;\n\n __extends(Dropzone, _super);\n\n Dropzone.prototype.Emitter = Emitter;\n\n\n /*\n This is a list of all available events you can register on a dropzone object.\n \n You can register an event handler like this:\n \n dropzone.on(\"dragEnter\", function() { });\n */\n\n Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n\n Dropzone.prototype.defaultOptions = {\n url: null,\n method: \"post\",\n withCredentials: false,\n parallelUploads: 2,\n uploadMultiple: false,\n maxFilesize: 256,\n paramName: \"file\",\n createImageThumbnails: true,\n maxThumbnailFilesize: 10,\n thumbnailWidth: 120,\n thumbnailHeight: 120,\n filesizeBase: 1000,\n maxFiles: null,\n params: {},\n clickable: true,\n ignoreHiddenFiles: true,\n acceptedFiles: null,\n acceptedMimeTypes: null,\n autoProcessQueue: true,\n autoQueue: true,\n addRemoveLinks: false,\n previewsContainer: null,\n hiddenInputContainer: \"body\",\n capture: null,\n renameFilename: null,\n dictDefaultMessage: \"Drop files here to upload\",\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n dictInvalidFileType: \"You can't upload files of this type.\",\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n dictCancelUpload: \"Cancel upload\",\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n dictRemoveFile: \"Remove file\",\n dictRemoveFileConfirmation: null,\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n accept: function(file, done) {\n return done();\n },\n init: function() {\n return noop;\n },\n forceFallback: false,\n fallback: function() {\n var child, messageElement, span, _i, _len, _ref;\n this.element.className = \"\" + this.element.className + \" dz-browser-not-supported\";\n _ref = this.element.getElementsByTagName(\"div\");\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n child = _ref[_i];\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\";\n continue;\n }\n }\n if (!messageElement) {\n messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n this.element.appendChild(messageElement);\n }\n span = messageElement.getElementsByTagName(\"span\")[0];\n if (span) {\n if (span.textContent != null) {\n span.textContent = this.options.dictFallbackMessage;\n } else if (span.innerText != null) {\n span.innerText = this.options.dictFallbackMessage;\n }\n }\n return this.element.appendChild(this.getFallbackForm());\n },\n resize: function(file) {\n var info, srcRatio, trgRatio;\n info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n srcRatio = file.width / file.height;\n info.optWidth = this.options.thumbnailWidth;\n info.optHeight = this.options.thumbnailHeight;\n if ((info.optWidth == null) && (info.optHeight == null)) {\n info.optWidth = info.srcWidth;\n info.optHeight = info.srcHeight;\n } else if (info.optWidth == null) {\n info.optWidth = srcRatio * info.optHeight;\n } else if (info.optHeight == null) {\n info.optHeight = (1 / srcRatio) * info.optWidth;\n }\n trgRatio = info.optWidth / info.optHeight;\n if (file.height < info.optHeight || file.width < info.optWidth) {\n info.trgHeight = info.srcHeight;\n info.trgWidth = info.srcWidth;\n } else {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n }\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n return info;\n },\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n drop: function(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart: noop,\n dragend: function(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter: function(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover: function(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave: function(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n paste: noop,\n reset: function() {\n return this.element.classList.remove(\"dz-started\");\n },\n addedfile: function(file) {\n var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results;\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n if (this.previewsContainer) {\n file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement;\n this.previewsContainer.appendChild(file.previewElement);\n _ref = file.previewElement.querySelectorAll(\"[data-dz-name]\");\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n node = _ref[_i];\n node.textContent = this._renameFilename(file.name);\n }\n _ref1 = file.previewElement.querySelectorAll(\"[data-dz-size]\");\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n node = _ref1[_j];\n node.innerHTML = this.filesize(file.size);\n }\n if (this.options.addRemoveLinks) {\n file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\" + this.options.dictRemoveFile + \"</a>\");\n file.previewElement.appendChild(file._removeLink);\n }\n removeFileEvent = (function(_this) {\n return function(e) {\n e.preventDefault();\n e.stopPropagation();\n if (file.status === Dropzone.UPLOADING) {\n return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {\n return _this.removeFile(file);\n });\n } else {\n if (_this.options.dictRemoveFileConfirmation) {\n return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {\n return _this.removeFile(file);\n });\n } else {\n return _this.removeFile(file);\n }\n }\n };\n })(this);\n _ref2 = file.previewElement.querySelectorAll(\"[data-dz-remove]\");\n _results = [];\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n removeLink = _ref2[_k];\n _results.push(removeLink.addEventListener(\"click\", removeFileEvent));\n }\n return _results;\n }\n },\n removedfile: function(file) {\n var _ref;\n if (file.previewElement) {\n if ((_ref = file.previewElement) != null) {\n _ref.parentNode.removeChild(file.previewElement);\n }\n }\n return this._updateMaxFilesReachedClass();\n },\n thumbnail: function(file, dataUrl) {\n var thumbnailElement, _i, _len, _ref;\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n _ref = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\");\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n thumbnailElement = _ref[_i];\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n return setTimeout(((function(_this) {\n return function() {\n return file.previewElement.classList.add(\"dz-image-preview\");\n };\n })(this)), 1);\n }\n },\n error: function(file, message) {\n var node, _i, _len, _ref, _results;\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n if (typeof message !== \"String\" && message.error) {\n message = message.error;\n }\n _ref = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\");\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n node = _ref[_i];\n _results.push(node.textContent = message);\n }\n return _results;\n }\n },\n errormultiple: noop,\n processing: function(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n if (file._removeLink) {\n return file._removeLink.textContent = this.options.dictCancelUpload;\n }\n }\n },\n processingmultiple: noop,\n uploadprogress: function(file, progress, bytesSent) {\n var node, _i, _len, _ref, _results;\n if (file.previewElement) {\n _ref = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n node = _ref[_i];\n if (node.nodeName === 'PROGRESS') {\n _results.push(node.value = progress);\n } else {\n _results.push(node.style.width = \"\" + progress + \"%\");\n }\n }\n return _results;\n }\n },\n totaluploadprogress: noop,\n sending: noop,\n sendingmultiple: noop,\n success: function(file) {\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-success\");\n }\n },\n successmultiple: noop,\n canceled: function(file) {\n return this.emit(\"error\", file, \"Upload canceled.\");\n },\n canceledmultiple: noop,\n complete: function(file) {\n if (file._removeLink) {\n file._removeLink.textContent = this.options.dictRemoveFile;\n }\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n completemultiple: noop,\n maxfilesexceeded: noop,\n maxfilesreached: noop,\n queuecomplete: noop,\n addedfiles: noop,\n previewTemplate: \"<div class=\\\"dz-preview dz-file-preview\\\">\\n <div class=\\\"dz-image\\\"><img data-dz-thumbnail /></div>\\n <div class=\\\"dz-details\\\">\\n <div class=\\\"dz-size\\\"><span data-dz-size></span></div>\\n <div class=\\\"dz-filename\\\"><span data-dz-name></span></div>\\n </div>\\n <div class=\\\"dz-progress\\\"><span class=\\\"dz-upload\\\" data-dz-uploadprogress></span></div>\\n <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div>\\n <div class=\\\"dz-success-mark\\\">\\n <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n <title>Check</title>\\n <defs></defs>\\n <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n </g>\\n </svg>\\n </div>\\n <div class=\\\"dz-error-mark\\\">\\n <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" xmlns:sketch=\\\"http://www.bohemiancoding.com/sketch/ns\\\">\\n <title>Error</title>\\n <defs></defs>\\n <g id=\\\"Page-1\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" sketch:type=\\\"MSPage\\\">\\n <g id=\\\"Check-+-Oval-2\\\" sketch:type=\\\"MSLayerGroup\\\" stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\">\\n <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" id=\\\"Oval-2\\\" sketch:type=\\\"MSShapeGroup\\\"></path>\\n </g>\\n </g>\\n </svg>\\n </div>\\n</div>\"\n };\n\n extend = function() {\n var key, object, objects, target, val, _i, _len;\n target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n for (_i = 0, _len = objects.length; _i < _len; _i++) {\n object = objects[_i];\n for (key in object) {\n val = object[key];\n target[key] = val;\n }\n }\n return target;\n };\n\n function Dropzone(element, options) {\n var elementOptions, fallback, _ref;\n this.element = element;\n this.version = Dropzone.version;\n this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n this.clickableElements = [];\n this.listeners = [];\n this.files = [];\n if (typeof this.element === \"string\") {\n this.element = document.querySelector(this.element);\n }\n if (!(this.element && (this.element.nodeType != null))) {\n throw new Error(\"Invalid dropzone element.\");\n }\n if (this.element.dropzone) {\n throw new Error(\"Dropzone already attached.\");\n }\n Dropzone.instances.push(this);\n this.element.dropzone = this;\n elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};\n this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n return this.options.fallback.call(this);\n }\n if (this.options.url == null) {\n this.options.url = this.element.getAttribute(\"action\");\n }\n if (!this.options.url) {\n throw new Error(\"No URL provided.\");\n }\n if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n }\n if (this.options.acceptedMimeTypes) {\n this.options.acceptedFiles = this.options.acceptedMimeTypes;\n delete this.options.acceptedMimeTypes;\n }\n this.options.method = this.options.method.toUpperCase();\n if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n fallback.parentNode.removeChild(fallback);\n }\n if (this.options.previewsContainer !== false) {\n if (this.options.previewsContainer) {\n this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\n } else {\n this.previewsContainer = this.element;\n }\n }\n if (this.options.clickable) {\n if (this.options.clickable === true) {\n this.clickableElements = [this.element];\n } else {\n this.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\n }\n }\n this.init();\n }\n\n Dropzone.prototype.getAcceptedFiles = function() {\n var file, _i, _len, _ref, _results;\n _ref = this.files;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n file = _ref[_i];\n if (file.accepted) {\n _results.push(file);\n }\n }\n return _results;\n };\n\n Dropzone.prototype.getRejectedFiles = function() {\n var file, _i, _len, _ref, _results;\n _ref = this.files;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n file = _ref[_i];\n if (!file.accepted) {\n _results.push(file);\n }\n }\n return _results;\n };\n\n Dropzone.prototype.getFilesWithStatus = function(status) {\n var file, _i, _len, _ref, _results;\n _ref = this.files;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n file = _ref[_i];\n if (file.status === status) {\n _results.push(file);\n }\n }\n return _results;\n };\n\n Dropzone.prototype.getQueuedFiles = function() {\n return this.getFilesWithStatus(Dropzone.QUEUED);\n };\n\n Dropzone.prototype.getUploadingFiles = function() {\n return this.getFilesWithStatus(Dropzone.UPLOADING);\n };\n\n Dropzone.prototype.getAddedFiles = function() {\n return this.getFilesWithStatus(Dropzone.ADDED);\n };\n\n Dropzone.prototype.getActiveFiles = function() {\n var file, _i, _len, _ref, _results;\n _ref = this.files;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n file = _ref[_i];\n if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {\n _results.push(file);\n }\n }\n return _results;\n };\n\n Dropzone.prototype.init = function() {\n var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1;\n if (this.element.tagName === \"form\") {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n }\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><span>\" + this.options.dictDefaultMessage + \"</span></div>\"));\n }\n if (this.clickableElements.length) {\n setupHiddenFileInput = (function(_this) {\n return function() {\n if (_this.hiddenFileInput) {\n _this.hiddenFileInput.parentNode.removeChild(_this.hiddenFileInput);\n }\n _this.hiddenFileInput = document.createElement(\"input\");\n _this.hiddenFileInput.setAttribute(\"type\", \"file\");\n if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {\n _this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n }\n _this.hiddenFileInput.className = \"dz-hidden-input\";\n if (_this.options.acceptedFiles != null) {\n _this.hiddenFileInput.setAttribute(\"accept\", _this.options.acceptedFiles);\n }\n if (_this.options.capture != null) {\n _this.hiddenFileInput.setAttribute(\"capture\", _this.options.capture);\n }\n _this.hiddenFileInput.style.visibility = \"hidden\";\n _this.hiddenFileInput.style.position = \"absolute\";\n _this.hiddenFileInput.style.top = \"0\";\n _this.hiddenFileInput.style.left = \"0\";\n _this.hiddenFileInput.style.height = \"0\";\n _this.hiddenFileInput.style.width = \"0\";\n document.querySelector(_this.options.hiddenInputContainer).appendChild(_this.hiddenFileInput);\n return _this.hiddenFileInput.addEventListener(\"change\", function() {\n var file, files, _i, _len;\n files = _this.hiddenFileInput.files;\n if (files.length) {\n for (_i = 0, _len = files.length; _i < _len; _i++) {\n file = files[_i];\n _this.addFile(file);\n }\n }\n _this.emit(\"addedfiles\", files);\n return setupHiddenFileInput();\n });\n };\n })(this);\n setupHiddenFileInput();\n }\n this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;\n _ref1 = this.events;\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n eventName = _ref1[_i];\n this.on(eventName, this.options[eventName]);\n }\n this.on(\"uploadprogress\", (function(_this) {\n return function() {\n return _this.updateTotalUploadProgress();\n };\n })(this));\n this.on(\"removedfile\", (function(_this) {\n return function() {\n return _this.updateTotalUploadProgress();\n };\n })(this));\n this.on(\"canceled\", (function(_this) {\n return function(file) {\n return _this.emit(\"complete\", file);\n };\n })(this));\n this.on(\"complete\", (function(_this) {\n return function(file) {\n if (_this.getAddedFiles().length === 0 && _this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {\n return setTimeout((function() {\n return _this.emit(\"queuecomplete\");\n }), 0);\n }\n };\n })(this));\n noPropagation = function(e) {\n e.stopPropagation();\n if (e.preventDefault) {\n return e.preventDefault();\n } else {\n return e.returnValue = false;\n }\n };\n this.listeners = [\n {\n element: this.element,\n events: {\n \"dragstart\": (function(_this) {\n return function(e) {\n return _this.emit(\"dragstart\", e);\n };\n })(this),\n \"dragenter\": (function(_this) {\n return function(e) {\n noPropagation(e);\n return _this.emit(\"dragenter\", e);\n };\n })(this),\n \"dragover\": (function(_this) {\n return function(e) {\n var efct;\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (_error) {}\n e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\n noPropagation(e);\n return _this.emit(\"dragover\", e);\n };\n })(this),\n \"dragleave\": (function(_this) {\n return function(e) {\n return _this.emit(\"dragleave\", e);\n };\n })(this),\n \"drop\": (function(_this) {\n return function(e) {\n noPropagation(e);\n return _this.drop(e);\n };\n })(this),\n \"dragend\": (function(_this) {\n return function(e) {\n return _this.emit(\"dragend\", e);\n };\n })(this)\n }\n }\n ];\n this.clickableElements.forEach((function(_this) {\n return function(clickableElement) {\n return _this.listeners.push({\n element: clickableElement,\n events: {\n \"click\": function(evt) {\n if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(\".dz-message\")))) {\n _this.hiddenFileInput.click();\n }\n return true;\n }\n }\n });\n };\n })(this));\n this.enable();\n return this.options.init.call(this);\n };\n\n Dropzone.prototype.destroy = function() {\n var _ref;\n this.disable();\n this.removeAllFiles(true);\n if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n delete this.element.dropzone;\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n };\n\n Dropzone.prototype.updateTotalUploadProgress = function() {\n var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref;\n totalBytesSent = 0;\n totalBytes = 0;\n activeFiles = this.getActiveFiles();\n if (activeFiles.length) {\n _ref = this.getActiveFiles();\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n file = _ref[_i];\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\n } else {\n totalUploadProgress = 100;\n }\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n };\n\n Dropzone.prototype._getParamName = function(n) {\n if (typeof this.options.paramName === \"function\") {\n return this.options.paramName(n);\n } else {\n return \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\n }\n };\n\n Dropzone.prototype._renameFilename = function(name) {\n if (typeof this.options.renameFilename !== \"function\") {\n return name;\n }\n return this.options.renameFilename(name);\n };\n\n Dropzone.prototype.getFallbackForm = function() {\n var existingFallback, fields, fieldsString, form;\n if (existingFallback = this.getExistingFallback()) {\n return existingFallback;\n }\n fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n if (this.options.dictFallbackText) {\n fieldsString += \"<p>\" + this.options.dictFallbackText + \"</p>\";\n }\n fieldsString += \"<input type=\\\"file\\\" name=\\\"\" + (this._getParamName(0)) + \"\\\" \" + (this.options.uploadMultiple ? 'multiple=\"multiple\"' : void 0) + \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\";\n fields = Dropzone.createElement(fieldsString);\n if (this.element.tagName !== \"FORM\") {\n form = Dropzone.createElement(\"<form action=\\\"\" + this.options.url + \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\" + this.options.method + \"\\\"></form>\");\n form.appendChild(fields);\n } else {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n return form != null ? form : fields;\n };\n\n Dropzone.prototype.getExistingFallback = function() {\n var fallback, getFallback, tagName, _i, _len, _ref;\n getFallback = function(elements) {\n var el, _i, _len;\n for (_i = 0, _len = elements.length; _i < _len; _i++) {\n el = elements[_i];\n if (/(^| )fallback($| )/.test(el.className)) {\n return el;\n }\n }\n };\n _ref = [\"div\", \"form\"];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n tagName = _ref[_i];\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n return fallback;\n }\n }\n };\n\n Dropzone.prototype.setupEventListeners = function() {\n var elementListeners, event, listener, _i, _len, _ref, _results;\n _ref = this.listeners;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n elementListeners = _ref[_i];\n _results.push((function() {\n var _ref1, _results1;\n _ref1 = elementListeners.events;\n _results1 = [];\n for (event in _ref1) {\n listener = _ref1[event];\n _results1.push(elementListeners.element.addEventListener(event, listener, false));\n }\n return _results1;\n })());\n }\n return _results;\n };\n\n Dropzone.prototype.removeEventListeners = function() {\n var elementListeners, event, listener, _i, _len, _ref, _results;\n _ref = this.listeners;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n elementListeners = _ref[_i];\n _results.push((function() {\n var _ref1, _results1;\n _ref1 = elementListeners.events;\n _results1 = [];\n for (event in _ref1) {\n listener = _ref1[event];\n _results1.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n return _results1;\n })());\n }\n return _results;\n };\n\n Dropzone.prototype.disable = function() {\n var file, _i, _len, _ref, _results;\n this.clickableElements.forEach(function(element) {\n return element.classList.remove(\"dz-clickable\");\n });\n this.removeEventListeners();\n _ref = this.files;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n file = _ref[_i];\n _results.push(this.cancelUpload(file));\n }\n return _results;\n };\n\n Dropzone.prototype.enable = function() {\n this.clickableElements.forEach(function(element) {\n return element.classList.add(\"dz-clickable\");\n });\n return this.setupEventListeners();\n };\n\n Dropzone.prototype.filesize = function(size) {\n var cutoff, i, selectedSize, selectedUnit, unit, units, _i, _len;\n selectedSize = 0;\n selectedUnit = \"b\";\n if (size > 0) {\n units = ['TB', 'GB', 'MB', 'KB', 'b'];\n for (i = _i = 0, _len = units.length; _i < _len; i = ++_i) {\n unit = units[i];\n cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n selectedSize = Math.round(10 * selectedSize) / 10;\n }\n return \"<strong>\" + selectedSize + \"</strong> \" + selectedUnit;\n };\n\n Dropzone.prototype._updateMaxFilesReachedClass = function() {\n if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\n this.emit('maxfilesreached', this.files);\n }\n return this.element.classList.add(\"dz-max-files-reached\");\n } else {\n return this.element.classList.remove(\"dz-max-files-reached\");\n }\n };\n\n Dropzone.prototype.drop = function(e) {\n var files, items;\n if (!e.dataTransfer) {\n return;\n }\n this.emit(\"drop\", e);\n files = e.dataTransfer.files;\n this.emit(\"addedfiles\", files);\n if (files.length) {\n items = e.dataTransfer.items;\n if (items && items.length && (items[0].webkitGetAsEntry != null)) {\n this._addFilesFromItems(items);\n } else {\n this.handleFiles(files);\n }\n }\n };\n\n Dropzone.prototype.paste = function(e) {\n var items, _ref;\n if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) {\n return;\n }\n this.emit(\"paste\", e);\n items = e.clipboardData.items;\n if (items.length) {\n return this._addFilesFromItems(items);\n }\n };\n\n Dropzone.prototype.handleFiles = function(files) {\n var file, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = files.length; _i < _len; _i++) {\n file = files[_i];\n _results.push(this.addFile(file));\n }\n return _results;\n };\n\n Dropzone.prototype._addFilesFromItems = function(items) {\n var entry, item, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = items.length; _i < _len; _i++) {\n item = items[_i];\n if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) {\n _results.push(this.addFile(item.getAsFile()));\n } else if (entry.isDirectory) {\n _results.push(this._addFilesFromDirectory(entry, entry.name));\n } else {\n _results.push(void 0);\n }\n } else if (item.getAsFile != null) {\n if ((item.kind == null) || item.kind === \"file\") {\n _results.push(this.addFile(item.getAsFile()));\n } else {\n _results.push(void 0);\n }\n } else {\n _results.push(void 0);\n }\n }\n return _results;\n };\n\n Dropzone.prototype._addFilesFromDirectory = function(directory, path) {\n var dirReader, errorHandler, readEntries;\n dirReader = directory.createReader();\n errorHandler = function(error) {\n return typeof console !== \"undefined\" && console !== null ? typeof console.log === \"function\" ? console.log(error) : void 0 : void 0;\n };\n readEntries = (function(_this) {\n return function() {\n return dirReader.readEntries(function(entries) {\n var entry, _i, _len;\n if (entries.length > 0) {\n for (_i = 0, _len = entries.length; _i < _len; _i++) {\n entry = entries[_i];\n if (entry.isFile) {\n entry.file(function(file) {\n if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\n return;\n }\n file.fullPath = \"\" + path + \"/\" + file.name;\n return _this.addFile(file);\n });\n } else if (entry.isDirectory) {\n _this._addFilesFromDirectory(entry, \"\" + path + \"/\" + entry.name);\n }\n }\n readEntries();\n }\n return null;\n }, errorHandler);\n };\n })(this);\n return readEntries();\n };\n\n Dropzone.prototype.accept = function(file, done) {\n if (file.size > this.options.maxFilesize * 1024 * 1024) {\n return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n return done(this.options.dictInvalidFileType);\n } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n return this.emit(\"maxfilesexceeded\", file);\n } else {\n return this.options.accept.call(this, file, done);\n }\n };\n\n Dropzone.prototype.addFile = function(file) {\n file.upload = {\n progress: 0,\n total: file.size,\n bytesSent: 0\n };\n this.files.push(file);\n file.status = Dropzone.ADDED;\n this.emit(\"addedfile\", file);\n this._enqueueThumbnail(file);\n return this.accept(file, (function(_this) {\n return function(error) {\n if (error) {\n file.accepted = false;\n _this._errorProcessing([file], error);\n } else {\n file.accepted = true;\n if (_this.options.autoQueue) {\n _this.enqueueFile(file);\n }\n }\n return _this._updateMaxFilesReachedClass();\n };\n })(this));\n };\n\n Dropzone.prototype.enqueueFiles = function(files) {\n var file, _i, _len;\n for (_i = 0, _len = files.length; _i < _len; _i++) {\n file = files[_i];\n this.enqueueFile(file);\n }\n return null;\n };\n\n Dropzone.prototype.enqueueFile = function(file) {\n if (file.status === Dropzone.ADDED && file.accepted === true) {\n file.status = Dropzone.QUEUED;\n if (this.options.autoProcessQueue) {\n return setTimeout(((function(_this) {\n return function() {\n return _this.processQueue();\n };\n })(this)), 0);\n }\n } else {\n throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n };\n\n Dropzone.prototype._thumbnailQueue = [];\n\n Dropzone.prototype._processingThumbnail = false;\n\n Dropzone.prototype._enqueueThumbnail = function(file) {\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n this._thumbnailQueue.push(file);\n return setTimeout(((function(_this) {\n return function() {\n return _this._processThumbnailQueue();\n };\n })(this)), 0);\n }\n };\n\n Dropzone.prototype._processThumbnailQueue = function() {\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n return;\n }\n this._processingThumbnail = true;\n return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) {\n return function() {\n _this._processingThumbnail = false;\n return _this._processThumbnailQueue();\n };\n })(this));\n };\n\n Dropzone.prototype.removeFile = function(file) {\n if (file.status === Dropzone.UPLOADING) {\n this.cancelUpload(file);\n }\n this.files = without(this.files, file);\n this.emit(\"removedfile\", file);\n if (this.files.length === 0) {\n return this.emit(\"reset\");\n }\n };\n\n Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {\n var file, _i, _len, _ref;\n if (cancelIfNecessary == null) {\n cancelIfNecessary = false;\n }\n _ref = this.files.slice();\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n file = _ref[_i];\n if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n this.removeFile(file);\n }\n }\n return null;\n };\n\n Dropzone.prototype.createThumbnail = function(file, callback) {\n var fileReader;\n fileReader = new FileReader;\n fileReader.onload = (function(_this) {\n return function() {\n if (file.type === \"image/svg+xml\") {\n _this.emit(\"thumbnail\", file, fileReader.result);\n if (callback != null) {\n callback();\n }\n return;\n }\n return _this.createThumbnailFromUrl(file, fileReader.result, callback);\n };\n })(this);\n return fileReader.readAsDataURL(file);\n };\n\n Dropzone.prototype.createThumbnailFromUrl = function(file, imageUrl, callback, crossOrigin) {\n var img;\n img = document.createElement(\"img\");\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n img.onload = (function(_this) {\n return function() {\n var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;\n file.width = img.width;\n file.height = img.height;\n resizeInfo = _this.options.resize.call(_this, file);\n if (resizeInfo.trgWidth == null) {\n resizeInfo.trgWidth = resizeInfo.optWidth;\n }\n if (resizeInfo.trgHeight == null) {\n resizeInfo.trgHeight = resizeInfo.optHeight;\n }\n canvas = document.createElement(\"canvas\");\n ctx = canvas.getContext(\"2d\");\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n thumbnail = canvas.toDataURL(\"image/png\");\n _this.emit(\"thumbnail\", file, thumbnail);\n if (callback != null) {\n return callback();\n }\n };\n })(this);\n if (callback != null) {\n img.onerror = callback;\n }\n return img.src = imageUrl;\n };\n\n Dropzone.prototype.processQueue = function() {\n var i, parallelUploads, processingLength, queuedFiles;\n parallelUploads = this.options.parallelUploads;\n processingLength = this.getUploadingFiles().length;\n i = processingLength;\n if (processingLength >= parallelUploads) {\n return;\n }\n queuedFiles = this.getQueuedFiles();\n if (!(queuedFiles.length > 0)) {\n return;\n }\n if (this.options.uploadMultiple) {\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n } else {\n while (i < parallelUploads) {\n if (!queuedFiles.length) {\n return;\n }\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n };\n\n Dropzone.prototype.processFile = function(file) {\n return this.processFiles([file]);\n };\n\n Dropzone.prototype.processFiles = function(files) {\n var file, _i, _len;\n for (_i = 0, _len = files.length; _i < _len; _i++) {\n file = files[_i];\n file.processing = true;\n file.status = Dropzone.UPLOADING;\n this.emit(\"processing\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"processingmultiple\", files);\n }\n return this.uploadFiles(files);\n };\n\n Dropzone.prototype._getFilesWithXhr = function(xhr) {\n var file, files;\n return files = (function() {\n var _i, _len, _ref, _results;\n _ref = this.files;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n file = _ref[_i];\n if (file.xhr === xhr) {\n _results.push(file);\n }\n }\n return _results;\n }).call(this);\n };\n\n Dropzone.prototype.cancelUpload = function(file) {\n var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref;\n if (file.status === Dropzone.UPLOADING) {\n groupedFiles = this._getFilesWithXhr(file.xhr);\n for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) {\n groupedFile = groupedFiles[_i];\n groupedFile.status = Dropzone.CANCELED;\n }\n file.xhr.abort();\n for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) {\n groupedFile = groupedFiles[_j];\n this.emit(\"canceled\", groupedFile);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", groupedFiles);\n }\n } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) {\n file.status = Dropzone.CANCELED;\n this.emit(\"canceled\", file);\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", [file]);\n }\n }\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n };\n\n resolveOption = function() {\n var args, option;\n option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\n if (typeof option === 'function') {\n return option.apply(this, args);\n }\n return option;\n };\n\n Dropzone.prototype.uploadFile = function(file) {\n return this.uploadFiles([file]);\n };\n\n Dropzone.prototype.uploadFiles = function(files) {\n var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\n xhr = new XMLHttpRequest();\n for (_i = 0, _len = files.length; _i < _len; _i++) {\n file = files[_i];\n file.xhr = xhr;\n }\n method = resolveOption(this.options.method, files);\n url = resolveOption(this.options.url, files);\n xhr.open(method, url, true);\n xhr.withCredentials = !!this.options.withCredentials;\n response = null;\n handleError = (function(_this) {\n return function() {\n var _j, _len1, _results;\n _results = [];\n for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n file = files[_j];\n _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr));\n }\n return _results;\n };\n })(this);\n updateProgress = (function(_this) {\n return function(e) {\n var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;\n if (e != null) {\n progress = 100 * e.loaded / e.total;\n for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n file = files[_j];\n file.upload = {\n progress: progress,\n total: e.total,\n bytesSent: e.loaded\n };\n }\n } else {\n allFilesFinished = true;\n progress = 100;\n for (_k = 0, _len2 = files.length; _k < _len2; _k++) {\n file = files[_k];\n if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {\n allFilesFinished = false;\n }\n file.upload.progress = progress;\n file.upload.bytesSent = file.upload.total;\n }\n if (allFilesFinished) {\n return;\n }\n }\n _results = [];\n for (_l = 0, _len3 = files.length; _l < _len3; _l++) {\n file = files[_l];\n _results.push(_this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent));\n }\n return _results;\n };\n })(this);\n xhr.onload = (function(_this) {\n return function(e) {\n var _ref;\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n response = xhr.responseText;\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n try {\n response = JSON.parse(response);\n } catch (_error) {\n e = _error;\n response = \"Invalid JSON response from server.\";\n }\n }\n updateProgress();\n if (!((200 <= (_ref = xhr.status) && _ref < 300))) {\n return handleError();\n } else {\n return _this._finished(files, response, e);\n }\n };\n })(this);\n xhr.onerror = (function(_this) {\n return function() {\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n return handleError();\n };\n })(this);\n progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\n progressObj.onprogress = updateProgress;\n headers = {\n \"Accept\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n };\n if (this.options.headers) {\n extend(headers, this.options.headers);\n }\n for (headerName in headers) {\n headerValue = headers[headerName];\n if (headerValue) {\n xhr.setRequestHeader(headerName, headerValue);\n }\n }\n formData = new FormData();\n if (this.options.params) {\n _ref1 = this.options.params;\n for (key in _ref1) {\n value = _ref1[key];\n formData.append(key, value);\n }\n }\n for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\n file = files[_j];\n this.emit(\"sending\", file, xhr, formData);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr, formData);\n }\n if (this.element.tagName === \"FORM\") {\n _ref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n input = _ref2[_k];\n inputName = input.getAttribute(\"name\");\n inputType = input.getAttribute(\"type\");\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n _ref3 = input.options;\n for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\n option = _ref3[_l];\n if (option.selected) {\n formData.append(inputName, option.value);\n }\n }\n } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== \"checkbox\" && _ref4 !== \"radio\") || input.checked) {\n formData.append(inputName, input.value);\n }\n }\n }\n for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) {\n formData.append(this._getParamName(i), files[i], this._renameFilename(files[i].name));\n }\n return this.submitRequest(xhr, formData, files);\n };\n\n Dropzone.prototype.submitRequest = function(xhr, formData, files) {\n return xhr.send(formData);\n };\n\n Dropzone.prototype._finished = function(files, responseText, e) {\n var file, _i, _len;\n for (_i = 0, _len = files.length; _i < _len; _i++) {\n file = files[_i];\n file.status = Dropzone.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n };\n\n Dropzone.prototype._errorProcessing = function(files, message, xhr) {\n var file, _i, _len;\n for (_i = 0, _len = files.length; _i < _len; _i++) {\n file = files[_i];\n file.status = Dropzone.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n };\n\n return Dropzone;\n\n })(Emitter);\n\n Dropzone.version = \"4.3.0\";\n\n Dropzone.options = {};\n\n Dropzone.optionsForElement = function(element) {\n if (element.getAttribute(\"id\")) {\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n } else {\n return void 0;\n }\n };\n\n Dropzone.instances = [];\n\n Dropzone.forElement = function(element) {\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n if ((element != null ? element.dropzone : void 0) == null) {\n throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n }\n return element.dropzone;\n };\n\n Dropzone.autoDiscover = true;\n\n Dropzone.discover = function() {\n var checkElements, dropzone, dropzones, _i, _len, _results;\n if (document.querySelectorAll) {\n dropzones = document.querySelectorAll(\".dropzone\");\n } else {\n dropzones = [];\n checkElements = function(elements) {\n var el, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = elements.length; _i < _len; _i++) {\n el = elements[_i];\n if (/(^| )dropzone($| )/.test(el.className)) {\n _results.push(dropzones.push(el));\n } else {\n _results.push(void 0);\n }\n }\n return _results;\n };\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n _results = [];\n for (_i = 0, _len = dropzones.length; _i < _len; _i++) {\n dropzone = dropzones[_i];\n if (Dropzone.optionsForElement(dropzone) !== false) {\n _results.push(new Dropzone(dropzone));\n } else {\n _results.push(void 0);\n }\n }\n return _results;\n };\n\n Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\n\n Dropzone.isBrowserSupported = function() {\n var capableBrowser, regex, _i, _len, _ref;\n capableBrowser = true;\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) {\n capableBrowser = false;\n } else {\n _ref = Dropzone.blacklistedBrowsers;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n regex = _ref[_i];\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n }\n } else {\n capableBrowser = false;\n }\n return capableBrowser;\n };\n\n without = function(list, rejectedItem) {\n var item, _i, _len, _results;\n _results = [];\n for (_i = 0, _len = list.length; _i < _len; _i++) {\n item = list[_i];\n if (item !== rejectedItem) {\n _results.push(item);\n }\n }\n return _results;\n };\n\n camelize = function(str) {\n return str.replace(/[\\-_](\\w)/g, function(match) {\n return match.charAt(1).toUpperCase();\n });\n };\n\n Dropzone.createElement = function(string) {\n var div;\n div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n };\n\n Dropzone.elementInside = function(element, container) {\n if (element === container) {\n return true;\n }\n while (element = element.parentNode) {\n if (element === container) {\n return true;\n }\n }\n return false;\n };\n\n Dropzone.getElement = function(el, name) {\n var element;\n if (typeof el === \"string\") {\n element = document.querySelector(el);\n } else if (el.nodeType != null) {\n element = el;\n }\n if (element == null) {\n throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\n }\n return element;\n };\n\n Dropzone.getElements = function(els, name) {\n var e, el, elements, _i, _j, _len, _len1, _ref;\n if (els instanceof Array) {\n elements = [];\n try {\n for (_i = 0, _len = els.length; _i < _len; _i++) {\n el = els[_i];\n elements.push(this.getElement(el, name));\n }\n } catch (_error) {\n e = _error;\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n _ref = document.querySelectorAll(els);\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\n el = _ref[_j];\n elements.push(el);\n }\n } else if (els.nodeType != null) {\n elements = [els];\n }\n if (!((elements != null) && elements.length)) {\n throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\n }\n return elements;\n };\n\n Dropzone.confirm = function(question, accepted, rejected) {\n if (window.confirm(question)) {\n return accepted();\n } else if (rejected != null) {\n return rejected();\n }\n };\n\n Dropzone.isValidFile = function(file, acceptedFiles) {\n var baseMimeType, mimeType, validType, _i, _len;\n if (!acceptedFiles) {\n return true;\n }\n acceptedFiles = acceptedFiles.split(\",\");\n mimeType = file.type;\n baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) {\n validType = acceptedFiles[_i];\n validType = validType.trim();\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n return true;\n }\n } else {\n if (mimeType === validType) {\n return true;\n }\n }\n }\n return false;\n };\n\n if (typeof jQuery !== \"undefined\" && jQuery !== null) {\n jQuery.fn.dropzone = function(options) {\n return this.each(function() {\n return new Dropzone(this, options);\n });\n };\n }\n\n if (typeof module !== \"undefined\" && module !== null) {\n module.exports = Dropzone;\n } else {\n window.Dropzone = Dropzone;\n }\n\n Dropzone.ADDED = \"added\";\n\n Dropzone.QUEUED = \"queued\";\n\n Dropzone.ACCEPTED = Dropzone.QUEUED;\n\n Dropzone.UPLOADING = \"uploading\";\n\n Dropzone.PROCESSING = Dropzone.UPLOADING;\n\n Dropzone.CANCELED = \"canceled\";\n\n Dropzone.ERROR = \"error\";\n\n Dropzone.SUCCESS = \"success\";\n\n\n /*\n \n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n */\n\n detectVerticalSquash = function(img) {\n var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;\n iw = img.naturalWidth;\n ih = img.naturalHeight;\n canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n data = ctx.getImageData(0, 0, 1, ih).data;\n sy = 0;\n ey = ih;\n py = ih;\n while (py > sy) {\n alpha = data[(py - 1) * 4 + 3];\n if (alpha === 0) {\n ey = py;\n } else {\n sy = py;\n }\n py = (ey + sy) >> 1;\n }\n ratio = py / ih;\n if (ratio === 0) {\n return 1;\n } else {\n return ratio;\n }\n };\n\n drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n var vertSquashRatio;\n vertSquashRatio = detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n };\n\n\n /*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n contentLoaded = function(win, fn) {\n var add, doc, done, init, poll, pre, rem, root, top;\n done = false;\n top = true;\n doc = win.document;\n root = doc.documentElement;\n add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n pre = (doc.addEventListener ? \"\" : \"on\");\n init = function(e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n return;\n }\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n if (!done && (done = true)) {\n return fn.call(win, e.type || e);\n }\n };\n poll = function() {\n var e;\n try {\n root.doScroll(\"left\");\n } catch (_error) {\n e = _error;\n setTimeout(poll, 50);\n return;\n }\n return init(\"poll\");\n };\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (_error) {}\n if (top) {\n poll();\n }\n }\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n };\n\n Dropzone._autoDiscoverFunction = function() {\n if (Dropzone.autoDiscover) {\n return Dropzone.discover();\n }\n };\n\n contentLoaded(window, Dropzone._autoDiscoverFunction);\n\n}).call(this);\n","/*!\n * typeahead.js 0.11.1\n * https://github.com/twitter/typeahead.js\n * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n(function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(\"typeahead.js\", [ \"jquery\" ], function(a0) {\n return factory(a0);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(require(\"jquery\"));\n } else {\n factory(jQuery);\n }\n})(this, function($) {\n var _ = function() {\n \"use strict\";\n return {\n isMsie: function() {\n return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n },\n isBlankString: function(str) {\n return !str || /^\\s*$/.test(str);\n },\n escapeRegExChars: function(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n },\n isString: function(obj) {\n return typeof obj === \"string\";\n },\n isNumber: function(obj) {\n return typeof obj === \"number\";\n },\n isArray: $.isArray,\n isFunction: $.isFunction,\n isObject: $.isPlainObject,\n isUndefined: function(obj) {\n return typeof obj === \"undefined\";\n },\n isElement: function(obj) {\n return !!(obj && obj.nodeType === 1);\n },\n isJQuery: function(obj) {\n return obj instanceof $;\n },\n toStr: function toStr(s) {\n return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n },\n bind: $.proxy,\n each: function(collection, cb) {\n $.each(collection, reverseArgs);\n function reverseArgs(index, value) {\n return cb(value, index);\n }\n },\n map: $.map,\n filter: $.grep,\n every: function(obj, test) {\n var result = true;\n if (!obj) {\n return result;\n }\n $.each(obj, function(key, val) {\n if (!(result = test.call(null, val, key, obj))) {\n return false;\n }\n });\n return !!result;\n },\n some: function(obj, test) {\n var result = false;\n if (!obj) {\n return result;\n }\n $.each(obj, function(key, val) {\n if (result = test.call(null, val, key, obj)) {\n return false;\n }\n });\n return !!result;\n },\n mixin: $.extend,\n identity: function(x) {\n return x;\n },\n clone: function(obj) {\n return $.extend(true, {}, obj);\n },\n getIdGenerator: function() {\n var counter = 0;\n return function() {\n return counter++;\n };\n },\n templatify: function templatify(obj) {\n return $.isFunction(obj) ? obj : template;\n function template() {\n return String(obj);\n }\n },\n defer: function(fn) {\n setTimeout(fn, 0);\n },\n debounce: function(func, wait, immediate) {\n var timeout, result;\n return function() {\n var context = this, args = arguments, later, callNow;\n later = function() {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n }\n };\n callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n }\n return result;\n };\n },\n throttle: function(func, wait) {\n var context, args, timeout, result, previous, later;\n previous = 0;\n later = function() {\n previous = new Date();\n timeout = null;\n result = func.apply(context, args);\n };\n return function() {\n var now = new Date(), remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n },\n stringify: function(val) {\n return _.isString(val) ? val : JSON.stringify(val);\n },\n noop: function() {}\n };\n }();\n var WWW = function() {\n \"use strict\";\n var defaultClassNames = {\n wrapper: \"twitter-typeahead\",\n input: \"tt-input\",\n hint: \"tt-hint\",\n menu: \"tt-menu\",\n dataset: \"tt-dataset\",\n suggestion: \"tt-suggestion\",\n selectable: \"tt-selectable\",\n empty: \"tt-empty\",\n open: \"tt-open\",\n cursor: \"tt-cursor\",\n highlight: \"tt-highlight\"\n };\n return build;\n function build(o) {\n var www, classes;\n classes = _.mixin({}, defaultClassNames, o);\n www = {\n css: buildCss(),\n classes: classes,\n html: buildHtml(classes),\n selectors: buildSelectors(classes)\n };\n return {\n css: www.css,\n html: www.html,\n classes: www.classes,\n selectors: www.selectors,\n mixin: function(o) {\n _.mixin(o, www);\n }\n };\n }\n function buildHtml(c) {\n return {\n wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n menu: '<div class=\"' + c.menu + '\"></div>'\n };\n }\n function buildSelectors(classes) {\n var selectors = {};\n _.each(classes, function(v, k) {\n selectors[k] = \".\" + v;\n });\n return selectors;\n }\n function buildCss() {\n var css = {\n wrapper: {\n position: \"relative\",\n display: \"inline-block\"\n },\n hint: {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n borderColor: \"transparent\",\n boxShadow: \"none\",\n opacity: \"1\"\n },\n input: {\n position: \"relative\",\n verticalAlign: \"top\",\n backgroundColor: \"transparent\"\n },\n inputWithNoHint: {\n position: \"relative\",\n verticalAlign: \"top\"\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: \"0\",\n zIndex: \"100\",\n display: \"none\"\n },\n ltr: {\n left: \"0\",\n right: \"auto\"\n },\n rtl: {\n left: \"auto\",\n right: \" 0\"\n }\n };\n if (_.isMsie()) {\n _.mixin(css.input, {\n backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n });\n }\n return css;\n }\n }();\n var EventBus = function() {\n \"use strict\";\n var namespace, deprecationMap;\n namespace = \"typeahead:\";\n deprecationMap = {\n render: \"rendered\",\n cursorchange: \"cursorchanged\",\n select: \"selected\",\n autocomplete: \"autocompleted\"\n };\n function EventBus(o) {\n if (!o || !o.el) {\n $.error(\"EventBus initialized without el\");\n }\n this.$el = $(o.el);\n }\n _.mixin(EventBus.prototype, {\n _trigger: function(type, args) {\n var $e;\n $e = $.Event(namespace + type);\n (args = args || []).unshift($e);\n this.$el.trigger.apply(this.$el, args);\n return $e;\n },\n before: function(type) {\n var args, $e;\n args = [].slice.call(arguments, 1);\n $e = this._trigger(\"before\" + type, args);\n return $e.isDefaultPrevented();\n },\n trigger: function(type) {\n var deprecatedType;\n this._trigger(type, [].slice.call(arguments, 1));\n if (deprecatedType = deprecationMap[type]) {\n this._trigger(deprecatedType, [].slice.call(arguments, 1));\n }\n }\n });\n return EventBus;\n }();\n var EventEmitter = function() {\n \"use strict\";\n var splitter = /\\s+/, nextTick = getNextTick();\n return {\n onSync: onSync,\n onAsync: onAsync,\n off: off,\n trigger: trigger\n };\n function on(method, types, cb, context) {\n var type;\n if (!cb) {\n return this;\n }\n types = types.split(splitter);\n cb = context ? bindContext(cb, context) : cb;\n this._callbacks = this._callbacks || {};\n while (type = types.shift()) {\n this._callbacks[type] = this._callbacks[type] || {\n sync: [],\n async: []\n };\n this._callbacks[type][method].push(cb);\n }\n return this;\n }\n function onAsync(types, cb, context) {\n return on.call(this, \"async\", types, cb, context);\n }\n function onSync(types, cb, context) {\n return on.call(this, \"sync\", types, cb, context);\n }\n function off(types) {\n var type;\n if (!this._callbacks) {\n return this;\n }\n types = types.split(splitter);\n while (type = types.shift()) {\n delete this._callbacks[type];\n }\n return this;\n }\n function trigger(types) {\n var type, callbacks, args, syncFlush, asyncFlush;\n if (!this._callbacks) {\n return this;\n }\n types = types.split(splitter);\n args = [].slice.call(arguments, 1);\n while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n syncFlush() && nextTick(asyncFlush);\n }\n return this;\n }\n function getFlush(callbacks, context, args) {\n return flush;\n function flush() {\n var cancelled;\n for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n cancelled = callbacks[i].apply(context, args) === false;\n }\n return !cancelled;\n }\n }\n function getNextTick() {\n var nextTickFn;\n if (window.setImmediate) {\n nextTickFn = function nextTickSetImmediate(fn) {\n setImmediate(function() {\n fn();\n });\n };\n } else {\n nextTickFn = function nextTickSetTimeout(fn) {\n setTimeout(function() {\n fn();\n }, 0);\n };\n }\n return nextTickFn;\n }\n function bindContext(fn, context) {\n return fn.bind ? fn.bind(context) : function() {\n fn.apply(context, [].slice.call(arguments, 0));\n };\n }\n }();\n var highlight = function(doc) {\n \"use strict\";\n var defaults = {\n node: null,\n pattern: null,\n tagName: \"strong\",\n className: null,\n wordsOnly: false,\n caseSensitive: false\n };\n return function hightlight(o) {\n var regex;\n o = _.mixin({}, defaults, o);\n if (!o.node || !o.pattern) {\n return;\n }\n o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly);\n traverse(o.node, hightlightTextNode);\n function hightlightTextNode(textNode) {\n var match, patternNode, wrapperNode;\n if (match = regex.exec(textNode.data)) {\n wrapperNode = doc.createElement(o.tagName);\n o.className && (wrapperNode.className = o.className);\n patternNode = textNode.splitText(match.index);\n patternNode.splitText(match[0].length);\n wrapperNode.appendChild(patternNode.cloneNode(true));\n textNode.parentNode.replaceChild(wrapperNode, patternNode);\n }\n return !!match;\n }\n function traverse(el, hightlightTextNode) {\n var childNode, TEXT_NODE_TYPE = 3;\n for (var i = 0; i < el.childNodes.length; i++) {\n childNode = el.childNodes[i];\n if (childNode.nodeType === TEXT_NODE_TYPE) {\n i += hightlightTextNode(childNode) ? 1 : 0;\n } else {\n traverse(childNode, hightlightTextNode);\n }\n }\n }\n };\n function getRegex(patterns, caseSensitive, wordsOnly) {\n var escapedPatterns = [], regexStr;\n for (var i = 0, len = patterns.length; i < len; i++) {\n escapedPatterns.push(_.escapeRegExChars(patterns[i]));\n }\n regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n }\n }(window.document);\n var Input = function() {\n \"use strict\";\n var specialKeyCodeMap;\n specialKeyCodeMap = {\n 9: \"tab\",\n 27: \"esc\",\n 37: \"left\",\n 39: \"right\",\n 13: \"enter\",\n 38: \"up\",\n 40: \"down\"\n };\n function Input(o, www) {\n o = o || {};\n if (!o.input) {\n $.error(\"input is missing\");\n }\n www.mixin(this);\n this.$hint = $(o.hint);\n this.$input = $(o.input);\n this.query = this.$input.val();\n this.queryWhenFocused = this.hasFocus() ? this.query : null;\n this.$overflowHelper = buildOverflowHelper(this.$input);\n this._checkLanguageDirection();\n if (this.$hint.length === 0) {\n this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n }\n }\n Input.normalizeQuery = function(str) {\n return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n };\n _.mixin(Input.prototype, EventEmitter, {\n _onBlur: function onBlur() {\n this.resetInputValue();\n this.trigger(\"blurred\");\n },\n _onFocus: function onFocus() {\n this.queryWhenFocused = this.query;\n this.trigger(\"focused\");\n },\n _onKeydown: function onKeydown($e) {\n var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n this._managePreventDefault(keyName, $e);\n if (keyName && this._shouldTrigger(keyName, $e)) {\n this.trigger(keyName + \"Keyed\", $e);\n }\n },\n _onInput: function onInput() {\n this._setQuery(this.getInputValue());\n this.clearHintIfInvalid();\n this._checkLanguageDirection();\n },\n _managePreventDefault: function managePreventDefault(keyName, $e) {\n var preventDefault;\n switch (keyName) {\n case \"up\":\n case \"down\":\n preventDefault = !withModifier($e);\n break;\n\n default:\n preventDefault = false;\n }\n preventDefault && $e.preventDefault();\n },\n _shouldTrigger: function shouldTrigger(keyName, $e) {\n var trigger;\n switch (keyName) {\n case \"tab\":\n trigger = !withModifier($e);\n break;\n\n default:\n trigger = true;\n }\n return trigger;\n },\n _checkLanguageDirection: function checkLanguageDirection() {\n var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n if (this.dir !== dir) {\n this.dir = dir;\n this.$hint.attr(\"dir\", dir);\n this.trigger(\"langDirChanged\", dir);\n }\n },\n _setQuery: function setQuery(val, silent) {\n var areEquivalent, hasDifferentWhitespace;\n areEquivalent = areQueriesEquivalent(val, this.query);\n hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n this.query = val;\n if (!silent && !areEquivalent) {\n this.trigger(\"queryChanged\", this.query);\n } else if (!silent && hasDifferentWhitespace) {\n this.trigger(\"whitespaceChanged\", this.query);\n }\n },\n bind: function() {\n var that = this, onBlur, onFocus, onKeydown, onInput;\n onBlur = _.bind(this._onBlur, this);\n onFocus = _.bind(this._onFocus, this);\n onKeydown = _.bind(this._onKeydown, this);\n onInput = _.bind(this._onInput, this);\n this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n if (!_.isMsie() || _.isMsie() > 9) {\n this.$input.on(\"input.tt\", onInput);\n } else {\n this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n return;\n }\n _.defer(_.bind(that._onInput, that, $e));\n });\n }\n return this;\n },\n focus: function focus() {\n this.$input.focus();\n },\n blur: function blur() {\n this.$input.blur();\n },\n getLangDir: function getLangDir() {\n return this.dir;\n },\n getQuery: function getQuery() {\n return this.query || \"\";\n },\n setQuery: function setQuery(val, silent) {\n this.setInputValue(val);\n this._setQuery(val, silent);\n },\n hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n return this.query !== this.queryWhenFocused;\n },\n getInputValue: function getInputValue() {\n return this.$input.val();\n },\n setInputValue: function setInputValue(value) {\n this.$input.val(value);\n this.clearHintIfInvalid();\n this._checkLanguageDirection();\n },\n resetInputValue: function resetInputValue() {\n this.setInputValue(this.query);\n },\n getHint: function getHint() {\n return this.$hint.val();\n },\n setHint: function setHint(value) {\n this.$hint.val(value);\n },\n clearHint: function clearHint() {\n this.setHint(\"\");\n },\n clearHintIfInvalid: function clearHintIfInvalid() {\n var val, hint, valIsPrefixOfHint, isValid;\n val = this.getInputValue();\n hint = this.getHint();\n valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n !isValid && this.clearHint();\n },\n hasFocus: function hasFocus() {\n return this.$input.is(\":focus\");\n },\n hasOverflow: function hasOverflow() {\n var constraint = this.$input.width() - 2;\n this.$overflowHelper.text(this.getInputValue());\n return this.$overflowHelper.width() >= constraint;\n },\n isCursorAtEnd: function() {\n var valueLength, selectionStart, range;\n valueLength = this.$input.val().length;\n selectionStart = this.$input[0].selectionStart;\n if (_.isNumber(selectionStart)) {\n return selectionStart === valueLength;\n } else if (document.selection) {\n range = document.selection.createRange();\n range.moveStart(\"character\", -valueLength);\n return valueLength === range.text.length;\n }\n return true;\n },\n destroy: function destroy() {\n this.$hint.off(\".tt\");\n this.$input.off(\".tt\");\n this.$overflowHelper.remove();\n this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n }\n });\n return Input;\n function buildOverflowHelper($input) {\n return $('<pre aria-hidden=\"true\"></pre>').css({\n position: \"absolute\",\n visibility: \"hidden\",\n whiteSpace: \"pre\",\n fontFamily: $input.css(\"font-family\"),\n fontSize: $input.css(\"font-size\"),\n fontStyle: $input.css(\"font-style\"),\n fontVariant: $input.css(\"font-variant\"),\n fontWeight: $input.css(\"font-weight\"),\n wordSpacing: $input.css(\"word-spacing\"),\n letterSpacing: $input.css(\"letter-spacing\"),\n textIndent: $input.css(\"text-indent\"),\n textRendering: $input.css(\"text-rendering\"),\n textTransform: $input.css(\"text-transform\")\n }).insertAfter($input);\n }\n function areQueriesEquivalent(a, b) {\n return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n }\n function withModifier($e) {\n return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n }\n }();\n var Dataset = function() {\n \"use strict\";\n var keys, nameGenerator;\n keys = {\n val: \"tt-selectable-display\",\n obj: \"tt-selectable-object\"\n };\n nameGenerator = _.getIdGenerator();\n function Dataset(o, www) {\n o = o || {};\n o.templates = o.templates || {};\n o.templates.notFound = o.templates.notFound || o.templates.empty;\n if (!o.source) {\n $.error(\"missing source\");\n }\n if (!o.node) {\n $.error(\"missing node\");\n }\n if (o.name && !isValidName(o.name)) {\n $.error(\"invalid dataset name: \" + o.name);\n }\n www.mixin(this);\n this.highlight = !!o.highlight;\n this.name = o.name || nameGenerator();\n this.limit = o.limit || 5;\n this.displayFn = getDisplayFn(o.display || o.displayKey);\n this.templates = getTemplates(o.templates, this.displayFn);\n this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n this._resetLastSuggestion();\n this.$el = $(o.node).addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n }\n Dataset.extractData = function extractData(el) {\n var $el = $(el);\n if ($el.data(keys.obj)) {\n return {\n val: $el.data(keys.val) || \"\",\n obj: $el.data(keys.obj) || null\n };\n }\n return null;\n };\n _.mixin(Dataset.prototype, EventEmitter, {\n _overwrite: function overwrite(query, suggestions) {\n suggestions = suggestions || [];\n if (suggestions.length) {\n this._renderSuggestions(query, suggestions);\n } else if (this.async && this.templates.pending) {\n this._renderPending(query);\n } else if (!this.async && this.templates.notFound) {\n this._renderNotFound(query);\n } else {\n this._empty();\n }\n this.trigger(\"rendered\", this.name, suggestions, false);\n },\n _append: function append(query, suggestions) {\n suggestions = suggestions || [];\n if (suggestions.length && this.$lastSuggestion.length) {\n this._appendSuggestions(query, suggestions);\n } else if (suggestions.length) {\n this._renderSuggestions(query, suggestions);\n } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n this._renderNotFound(query);\n }\n this.trigger(\"rendered\", this.name, suggestions, true);\n },\n _renderSuggestions: function renderSuggestions(query, suggestions) {\n var $fragment;\n $fragment = this._getSuggestionsFragment(query, suggestions);\n this.$lastSuggestion = $fragment.children().last();\n this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n },\n _appendSuggestions: function appendSuggestions(query, suggestions) {\n var $fragment, $lastSuggestion;\n $fragment = this._getSuggestionsFragment(query, suggestions);\n $lastSuggestion = $fragment.children().last();\n this.$lastSuggestion.after($fragment);\n this.$lastSuggestion = $lastSuggestion;\n },\n _renderPending: function renderPending(query) {\n var template = this.templates.pending;\n this._resetLastSuggestion();\n template && this.$el.html(template({\n query: query,\n dataset: this.name\n }));\n },\n _renderNotFound: function renderNotFound(query) {\n var template = this.templates.notFound;\n this._resetLastSuggestion();\n template && this.$el.html(template({\n query: query,\n dataset: this.name\n }));\n },\n _empty: function empty() {\n this.$el.empty();\n this._resetLastSuggestion();\n },\n _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n var that = this, fragment;\n fragment = document.createDocumentFragment();\n _.each(suggestions, function getSuggestionNode(suggestion) {\n var $el, context;\n context = that._injectQuery(query, suggestion);\n $el = $(that.templates.suggestion(context)).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n fragment.appendChild($el[0]);\n });\n this.highlight && highlight({\n className: this.classes.highlight,\n node: fragment,\n pattern: query\n });\n return $(fragment);\n },\n _getFooter: function getFooter(query, suggestions) {\n return this.templates.footer ? this.templates.footer({\n query: query,\n suggestions: suggestions,\n dataset: this.name\n }) : null;\n },\n _getHeader: function getHeader(query, suggestions) {\n return this.templates.header ? this.templates.header({\n query: query,\n suggestions: suggestions,\n dataset: this.name\n }) : null;\n },\n _resetLastSuggestion: function resetLastSuggestion() {\n this.$lastSuggestion = $();\n },\n _injectQuery: function injectQuery(query, obj) {\n return _.isObject(obj) ? _.mixin({\n _query: query\n }, obj) : obj;\n },\n update: function update(query) {\n var that = this, canceled = false, syncCalled = false, rendered = 0;\n this.cancel();\n this.cancel = function cancel() {\n canceled = true;\n that.cancel = $.noop;\n that.async && that.trigger(\"asyncCanceled\", query);\n };\n this.source(query, sync, async);\n !syncCalled && sync([]);\n function sync(suggestions) {\n if (syncCalled) {\n return;\n }\n syncCalled = true;\n suggestions = (suggestions || []).slice(0, that.limit);\n rendered = suggestions.length;\n that._overwrite(query, suggestions);\n if (rendered < that.limit && that.async) {\n that.trigger(\"asyncRequested\", query);\n }\n }\n function async(suggestions) {\n suggestions = suggestions || [];\n if (!canceled && rendered < that.limit) {\n that.cancel = $.noop;\n rendered += suggestions.length;\n that._append(query, suggestions.slice(0, that.limit - rendered));\n that.async && that.trigger(\"asyncReceived\", query);\n }\n }\n },\n cancel: $.noop,\n clear: function clear() {\n this._empty();\n this.cancel();\n this.trigger(\"cleared\");\n },\n isEmpty: function isEmpty() {\n return this.$el.is(\":empty\");\n },\n destroy: function destroy() {\n this.$el = $(\"<div>\");\n }\n });\n return Dataset;\n function getDisplayFn(display) {\n display = display || _.stringify;\n return _.isFunction(display) ? display : displayFn;\n function displayFn(obj) {\n return obj[display];\n }\n }\n function getTemplates(templates, displayFn) {\n return {\n notFound: templates.notFound && _.templatify(templates.notFound),\n pending: templates.pending && _.templatify(templates.pending),\n header: templates.header && _.templatify(templates.header),\n footer: templates.footer && _.templatify(templates.footer),\n suggestion: templates.suggestion || suggestionTemplate\n };\n function suggestionTemplate(context) {\n return $(\"<div>\").text(displayFn(context));\n }\n }\n function isValidName(str) {\n return /^[_a-zA-Z0-9-]+$/.test(str);\n }\n }();\n var Menu = function() {\n \"use strict\";\n function Menu(o, www) {\n var that = this;\n o = o || {};\n if (!o.node) {\n $.error(\"node is required\");\n }\n www.mixin(this);\n this.$node = $(o.node);\n this.query = null;\n this.datasets = _.map(o.datasets, initializeDataset);\n function initializeDataset(oDataset) {\n var node = that.$node.find(oDataset.node).first();\n oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n return new Dataset(oDataset, www);\n }\n }\n _.mixin(Menu.prototype, EventEmitter, {\n _onSelectableClick: function onSelectableClick($e) {\n this.trigger(\"selectableClicked\", $($e.currentTarget));\n },\n _onRendered: function onRendered(type, dataset, suggestions, async) {\n this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n this.trigger(\"datasetRendered\", dataset, suggestions, async);\n },\n _onCleared: function onCleared() {\n this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n this.trigger(\"datasetCleared\");\n },\n _propagate: function propagate() {\n this.trigger.apply(this, arguments);\n },\n _allDatasetsEmpty: function allDatasetsEmpty() {\n return _.every(this.datasets, isDatasetEmpty);\n function isDatasetEmpty(dataset) {\n return dataset.isEmpty();\n }\n },\n _getSelectables: function getSelectables() {\n return this.$node.find(this.selectors.selectable);\n },\n _removeCursor: function _removeCursor() {\n var $selectable = this.getActiveSelectable();\n $selectable && $selectable.removeClass(this.classes.cursor);\n },\n _ensureVisible: function ensureVisible($el) {\n var elTop, elBottom, nodeScrollTop, nodeHeight;\n elTop = $el.position().top;\n elBottom = elTop + $el.outerHeight(true);\n nodeScrollTop = this.$node.scrollTop();\n nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n if (elTop < 0) {\n this.$node.scrollTop(nodeScrollTop + elTop);\n } else if (nodeHeight < elBottom) {\n this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n }\n },\n bind: function() {\n var that = this, onSelectableClick;\n onSelectableClick = _.bind(this._onSelectableClick, this);\n this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n _.each(this.datasets, function(dataset) {\n dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n });\n return this;\n },\n isOpen: function isOpen() {\n return this.$node.hasClass(this.classes.open);\n },\n open: function open() {\n this.$node.addClass(this.classes.open);\n },\n close: function close() {\n this.$node.removeClass(this.classes.open);\n this._removeCursor();\n },\n setLanguageDirection: function setLanguageDirection(dir) {\n this.$node.attr(\"dir\", dir);\n },\n selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n var $selectables, $oldCursor, oldIndex, newIndex;\n $oldCursor = this.getActiveSelectable();\n $selectables = this._getSelectables();\n oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n newIndex = oldIndex + delta;\n newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n return newIndex === -1 ? null : $selectables.eq(newIndex);\n },\n setCursor: function setCursor($selectable) {\n this._removeCursor();\n if ($selectable = $selectable && $selectable.first()) {\n $selectable.addClass(this.classes.cursor);\n this._ensureVisible($selectable);\n }\n },\n getSelectableData: function getSelectableData($el) {\n return $el && $el.length ? Dataset.extractData($el) : null;\n },\n getActiveSelectable: function getActiveSelectable() {\n var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n return $selectable.length ? $selectable : null;\n },\n getTopSelectable: function getTopSelectable() {\n var $selectable = this._getSelectables().first();\n return $selectable.length ? $selectable : null;\n },\n update: function update(query) {\n var isValidUpdate = query !== this.query;\n if (isValidUpdate) {\n this.query = query;\n _.each(this.datasets, updateDataset);\n }\n return isValidUpdate;\n function updateDataset(dataset) {\n dataset.update(query);\n }\n },\n empty: function empty() {\n _.each(this.datasets, clearDataset);\n this.query = null;\n this.$node.addClass(this.classes.empty);\n function clearDataset(dataset) {\n dataset.clear();\n }\n },\n destroy: function destroy() {\n this.$node.off(\".tt\");\n this.$node = $(\"<div>\");\n _.each(this.datasets, destroyDataset);\n function destroyDataset(dataset) {\n dataset.destroy();\n }\n }\n });\n return Menu;\n }();\n var DefaultMenu = function() {\n \"use strict\";\n var s = Menu.prototype;\n function DefaultMenu() {\n Menu.apply(this, [].slice.call(arguments, 0));\n }\n _.mixin(DefaultMenu.prototype, Menu.prototype, {\n open: function open() {\n !this._allDatasetsEmpty() && this._show();\n return s.open.apply(this, [].slice.call(arguments, 0));\n },\n close: function close() {\n this._hide();\n return s.close.apply(this, [].slice.call(arguments, 0));\n },\n _onRendered: function onRendered() {\n if (this._allDatasetsEmpty()) {\n this._hide();\n } else {\n this.isOpen() && this._show();\n }\n return s._onRendered.apply(this, [].slice.call(arguments, 0));\n },\n _onCleared: function onCleared() {\n if (this._allDatasetsEmpty()) {\n this._hide();\n } else {\n this.isOpen() && this._show();\n }\n return s._onCleared.apply(this, [].slice.call(arguments, 0));\n },\n setLanguageDirection: function setLanguageDirection(dir) {\n this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n },\n _hide: function hide() {\n this.$node.hide();\n },\n _show: function show() {\n this.$node.css(\"display\", \"block\");\n }\n });\n return DefaultMenu;\n }();\n var Typeahead = function() {\n \"use strict\";\n function Typeahead(o, www) {\n var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n o = o || {};\n if (!o.input) {\n $.error(\"missing input\");\n }\n if (!o.menu) {\n $.error(\"missing menu\");\n }\n if (!o.eventBus) {\n $.error(\"missing event bus\");\n }\n www.mixin(this);\n this.eventBus = o.eventBus;\n this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n this.input = o.input;\n this.menu = o.menu;\n this.enabled = true;\n this.active = false;\n this.input.hasFocus() && this.activate();\n this.dir = this.input.getLangDir();\n this._hacks();\n this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n }\n _.mixin(Typeahead.prototype, {\n _hacks: function hacks() {\n var $input, $menu;\n $input = this.input.$input || $(\"<div>\");\n $menu = this.menu.$node || $(\"<div>\");\n $input.on(\"blur.tt\", function($e) {\n var active, isActive, hasActive;\n active = document.activeElement;\n isActive = $menu.is(active);\n hasActive = $menu.has(active).length > 0;\n if (_.isMsie() && (isActive || hasActive)) {\n $e.preventDefault();\n $e.stopImmediatePropagation();\n _.defer(function() {\n $input.focus();\n });\n }\n });\n $menu.on(\"mousedown.tt\", function($e) {\n $e.preventDefault();\n });\n },\n _onSelectableClicked: function onSelectableClicked(type, $el) {\n this.select($el);\n },\n _onDatasetCleared: function onDatasetCleared() {\n this._updateHint();\n },\n _onDatasetRendered: function onDatasetRendered(type, dataset, suggestions, async) {\n this._updateHint();\n this.eventBus.trigger(\"render\", suggestions, async, dataset);\n },\n _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n this.eventBus.trigger(\"asyncrequest\", query, dataset);\n },\n _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n this.eventBus.trigger(\"asynccancel\", query, dataset);\n },\n _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n this.eventBus.trigger(\"asyncreceive\", query, dataset);\n },\n _onFocused: function onFocused() {\n this._minLengthMet() && this.menu.update(this.input.getQuery());\n },\n _onBlurred: function onBlurred() {\n if (this.input.hasQueryChangedSinceLastFocus()) {\n this.eventBus.trigger(\"change\", this.input.getQuery());\n }\n },\n _onEnterKeyed: function onEnterKeyed(type, $e) {\n var $selectable;\n if ($selectable = this.menu.getActiveSelectable()) {\n this.select($selectable) && $e.preventDefault();\n }\n },\n _onTabKeyed: function onTabKeyed(type, $e) {\n var $selectable;\n if ($selectable = this.menu.getActiveSelectable()) {\n this.select($selectable) && $e.preventDefault();\n } else if ($selectable = this.menu.getTopSelectable()) {\n this.autocomplete($selectable) && $e.preventDefault();\n }\n },\n _onEscKeyed: function onEscKeyed() {\n this.close();\n },\n _onUpKeyed: function onUpKeyed() {\n this.moveCursor(-1);\n },\n _onDownKeyed: function onDownKeyed() {\n this.moveCursor(+1);\n },\n _onLeftKeyed: function onLeftKeyed() {\n if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n this.autocomplete(this.menu.getTopSelectable());\n }\n },\n _onRightKeyed: function onRightKeyed() {\n if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n this.autocomplete(this.menu.getTopSelectable());\n }\n },\n _onQueryChanged: function onQueryChanged(e, query) {\n this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n },\n _onWhitespaceChanged: function onWhitespaceChanged() {\n this._updateHint();\n },\n _onLangDirChanged: function onLangDirChanged(e, dir) {\n if (this.dir !== dir) {\n this.dir = dir;\n this.menu.setLanguageDirection(dir);\n }\n },\n _openIfActive: function openIfActive() {\n this.isActive() && this.open();\n },\n _minLengthMet: function minLengthMet(query) {\n query = _.isString(query) ? query : this.input.getQuery() || \"\";\n return query.length >= this.minLength;\n },\n _updateHint: function updateHint() {\n var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n $selectable = this.menu.getTopSelectable();\n data = this.menu.getSelectableData($selectable);\n val = this.input.getInputValue();\n if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n query = Input.normalizeQuery(val);\n escapedQuery = _.escapeRegExChars(query);\n frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n match = frontMatchRegEx.exec(data.val);\n match && this.input.setHint(val + match[1]);\n } else {\n this.input.clearHint();\n }\n },\n isEnabled: function isEnabled() {\n return this.enabled;\n },\n enable: function enable() {\n this.enabled = true;\n },\n disable: function disable() {\n this.enabled = false;\n },\n isActive: function isActive() {\n return this.active;\n },\n activate: function activate() {\n if (this.isActive()) {\n return true;\n } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n return false;\n } else {\n this.active = true;\n this.eventBus.trigger(\"active\");\n return true;\n }\n },\n deactivate: function deactivate() {\n if (!this.isActive()) {\n return true;\n } else if (this.eventBus.before(\"idle\")) {\n return false;\n } else {\n this.active = false;\n this.close();\n this.eventBus.trigger(\"idle\");\n return true;\n }\n },\n isOpen: function isOpen() {\n return this.menu.isOpen();\n },\n open: function open() {\n if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n this.menu.open();\n this._updateHint();\n this.eventBus.trigger(\"open\");\n }\n return this.isOpen();\n },\n close: function close() {\n if (this.isOpen() && !this.eventBus.before(\"close\")) {\n this.menu.close();\n this.input.clearHint();\n this.input.resetInputValue();\n this.eventBus.trigger(\"close\");\n }\n return !this.isOpen();\n },\n setVal: function setVal(val) {\n this.input.setQuery(_.toStr(val));\n },\n getVal: function getVal() {\n return this.input.getQuery();\n },\n select: function select($selectable) {\n var data = this.menu.getSelectableData($selectable);\n if (data && !this.eventBus.before(\"select\", data.obj)) {\n this.input.setQuery(data.val, true);\n this.eventBus.trigger(\"select\", data.obj);\n this.close();\n return true;\n }\n return false;\n },\n autocomplete: function autocomplete($selectable) {\n var query, data, isValid;\n query = this.input.getQuery();\n data = this.menu.getSelectableData($selectable);\n isValid = data && query !== data.val;\n if (isValid && !this.eventBus.before(\"autocomplete\", data.obj)) {\n this.input.setQuery(data.val);\n this.eventBus.trigger(\"autocomplete\", data.obj);\n return true;\n }\n return false;\n },\n moveCursor: function moveCursor(delta) {\n var query, $candidate, data, payload, cancelMove;\n query = this.input.getQuery();\n $candidate = this.menu.selectableRelativeToCursor(delta);\n data = this.menu.getSelectableData($candidate);\n payload = data ? data.obj : null;\n cancelMove = this._minLengthMet() && this.menu.update(query);\n if (!cancelMove && !this.eventBus.before(\"cursorchange\", payload)) {\n this.menu.setCursor($candidate);\n if (data) {\n this.input.setInputValue(data.val);\n } else {\n this.input.resetInputValue();\n this._updateHint();\n }\n this.eventBus.trigger(\"cursorchange\", payload);\n return true;\n }\n return false;\n },\n destroy: function destroy() {\n this.input.destroy();\n this.menu.destroy();\n }\n });\n return Typeahead;\n function c(ctx) {\n var methods = [].slice.call(arguments, 1);\n return function() {\n var args = [].slice.call(arguments);\n _.each(methods, function(method) {\n return ctx[method].apply(ctx, args);\n });\n };\n }\n }();\n (function() {\n \"use strict\";\n var old, keys, methods;\n old = $.fn.typeahead;\n keys = {\n www: \"tt-www\",\n attrs: \"tt-attrs\",\n typeahead: \"tt-typeahead\"\n };\n methods = {\n initialize: function initialize(o, datasets) {\n var www;\n datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n o = o || {};\n www = WWW(o.classNames);\n return this.each(attach);\n function attach() {\n var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, typeahead, MenuConstructor;\n _.each(datasets, function(d) {\n d.highlight = !!o.highlight;\n });\n $input = $(this);\n $wrapper = $(www.html.wrapper);\n $hint = $elOrNull(o.hint);\n $menu = $elOrNull(o.menu);\n defaultHint = o.hint !== false && !$hint;\n defaultMenu = o.menu !== false && !$menu;\n defaultHint && ($hint = buildHintFromInput($input, www));\n defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n $hint && $hint.val(\"\");\n $input = prepInput($input, www);\n if (defaultHint || defaultMenu) {\n $wrapper.css(www.css.wrapper);\n $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n }\n MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n eventBus = new EventBus({\n el: $input\n });\n input = new Input({\n hint: $hint,\n input: $input\n }, www);\n menu = new MenuConstructor({\n node: $menu,\n datasets: datasets\n }, www);\n typeahead = new Typeahead({\n input: input,\n menu: menu,\n eventBus: eventBus,\n minLength: o.minLength\n }, www);\n $input.data(keys.www, www);\n $input.data(keys.typeahead, typeahead);\n }\n },\n isEnabled: function isEnabled() {\n var enabled;\n ttEach(this.first(), function(t) {\n enabled = t.isEnabled();\n });\n return enabled;\n },\n enable: function enable() {\n ttEach(this, function(t) {\n t.enable();\n });\n return this;\n },\n disable: function disable() {\n ttEach(this, function(t) {\n t.disable();\n });\n return this;\n },\n isActive: function isActive() {\n var active;\n ttEach(this.first(), function(t) {\n active = t.isActive();\n });\n return active;\n },\n activate: function activate() {\n ttEach(this, function(t) {\n t.activate();\n });\n return this;\n },\n deactivate: function deactivate() {\n ttEach(this, function(t) {\n t.deactivate();\n });\n return this;\n },\n isOpen: function isOpen() {\n var open;\n ttEach(this.first(), function(t) {\n open = t.isOpen();\n });\n return open;\n },\n open: function open() {\n ttEach(this, function(t) {\n t.open();\n });\n return this;\n },\n close: function close() {\n ttEach(this, function(t) {\n t.close();\n });\n return this;\n },\n select: function select(el) {\n var success = false, $el = $(el);\n ttEach(this.first(), function(t) {\n success = t.select($el);\n });\n return success;\n },\n autocomplete: function autocomplete(el) {\n var success = false, $el = $(el);\n ttEach(this.first(), function(t) {\n success = t.autocomplete($el);\n });\n return success;\n },\n moveCursor: function moveCursoe(delta) {\n var success = false;\n ttEach(this.first(), function(t) {\n success = t.moveCursor(delta);\n });\n return success;\n },\n val: function val(newVal) {\n var query;\n if (!arguments.length) {\n ttEach(this.first(), function(t) {\n query = t.getVal();\n });\n return query;\n } else {\n ttEach(this, function(t) {\n t.setVal(newVal);\n });\n return this;\n }\n },\n destroy: function destroy() {\n ttEach(this, function(typeahead, $input) {\n revert($input);\n typeahead.destroy();\n });\n return this;\n }\n };\n $.fn.typeahead = function(method) {\n if (methods[method]) {\n return methods[method].apply(this, [].slice.call(arguments, 1));\n } else {\n return methods.initialize.apply(this, arguments);\n }\n };\n $.fn.typeahead.noConflict = function noConflict() {\n $.fn.typeahead = old;\n return this;\n };\n function ttEach($els, fn) {\n $els.each(function() {\n var $input = $(this), typeahead;\n (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n });\n }\n function buildHintFromInput($input, www) {\n return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop(\"readonly\", true).removeAttr(\"id name placeholder required\").attr({\n autocomplete: \"off\",\n spellcheck: \"false\",\n tabindex: -1\n });\n }\n function prepInput($input, www) {\n $input.data(keys.attrs, {\n dir: $input.attr(\"dir\"),\n autocomplete: $input.attr(\"autocomplete\"),\n spellcheck: $input.attr(\"spellcheck\"),\n style: $input.attr(\"style\")\n });\n $input.addClass(www.classes.input).attr({\n autocomplete: \"off\",\n spellcheck: false\n });\n try {\n !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n } catch (e) {}\n return $input;\n }\n function getBackgroundStyles($el) {\n return {\n backgroundAttachment: $el.css(\"background-attachment\"),\n backgroundClip: $el.css(\"background-clip\"),\n backgroundColor: $el.css(\"background-color\"),\n backgroundImage: $el.css(\"background-image\"),\n backgroundOrigin: $el.css(\"background-origin\"),\n backgroundPosition: $el.css(\"background-position\"),\n backgroundRepeat: $el.css(\"background-repeat\"),\n backgroundSize: $el.css(\"background-size\")\n };\n }\n function revert($input) {\n var www, $wrapper;\n www = $input.data(keys.www);\n $wrapper = $input.parent().filter(www.selectors.wrapper);\n _.each($input.data(keys.attrs), function(val, key) {\n _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n });\n $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n if ($wrapper.length) {\n $input.detach().insertAfter($wrapper);\n $wrapper.remove();\n }\n }\n function $elOrNull(obj) {\n var isValid, $el;\n isValid = _.isJQuery(obj) || _.isElement(obj);\n $el = isValid ? $(obj).first() : [];\n return $el.length ? $el : null;\n }\n })();\n});","/*!\n * accounting.js v0.3.2\n * Copyright 2011, Joss Crowcroft\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://josscrowcroft.github.com/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.3.2';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * alias: accounting.`parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (default: \".\"), so if the number\n\t * uses a non-standard decimal separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point is \".\" but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || \".\";\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '') // strip out any cruft\n\t\t\t\t.replace(decimal, '.') // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n","// Spectrum Colorpicker v1.3.4\n// https://github.com/bgrins/spectrum\n// Author: Brian Grinstead\n// License: MIT\n\n(function (window, $, undefined) {\n var defaultOpts = {\n\n // Callbacks\n beforeShow: noop,\n move: noop,\n change: noop,\n show: noop,\n hide: noop,\n\n // Options\n color: false,\n flat: false,\n showInput: false,\n allowEmpty: false,\n showButtons: true,\n clickoutFiresChange: false,\n showInitial: false,\n showPalette: false,\n showPaletteOnly: false,\n showSelectionPalette: true,\n localStorageKey: false,\n appendTo: \"body\",\n maxSelectionSize: 7,\n cancelText: \"cancel\",\n chooseText: \"choose\",\n clearText: \"Clear Color Selection\",\n preferredFormat: false,\n className: \"\", // Deprecated - use containerClassName and replacerClassName instead.\n containerClassName: \"\",\n replacerClassName: \"\",\n showAlpha: false,\n theme: \"sp-light\",\n palette: [[\"#ffffff\", \"#000000\", \"#ff0000\", \"#ff8000\", \"#ffff00\", \"#008000\", \"#0000ff\", \"#4b0082\", \"#9400d3\"]],\n selectionPalette: [],\n disabled: false\n },\n spectrums = [],\n IE = !!/msie/i.exec( window.navigator.userAgent ),\n rgbaSupport = (function() {\n function contains( str, substr ) {\n return !!~('' + str).indexOf(substr);\n }\n\n var elem = document.createElement('div');\n var style = elem.style;\n style.cssText = 'background-color:rgba(0,0,0,.5)';\n return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');\n })(),\n inputTypeColorSupport = (function() {\n var colorInput = $(\"<input type='color' value='!' />\")[0];\n return colorInput.type === \"color\" && colorInput.value !== \"!\";\n })(),\n replaceInput = [\n \"<div class='sp-replacer'>\",\n \"<div class='sp-preview'><div class='sp-preview-inner'></div></div>\",\n \"<div class='sp-dd'>▼</div>\",\n \"</div>\"\n ].join(''),\n markup = (function () {\n\n // IE does not support gradients with multiple stops, so we need to simulate\n // that for the rainbow slider with 8 divs that each have a single gradient\n var gradientFix = \"\";\n if (IE) {\n for (var i = 1; i <= 6; i++) {\n gradientFix += \"<div class='sp-\" + i + \"'></div>\";\n }\n }\n\n return [\n \"<div class='sp-container sp-hidden'>\",\n \"<div class='sp-palette-container'>\",\n \"<div class='sp-palette sp-thumb sp-cf'></div>\",\n \"</div>\",\n \"<div class='sp-picker-container'>\",\n \"<div class='sp-top sp-cf'>\",\n \"<div class='sp-fill'></div>\",\n \"<div class='sp-top-inner'>\",\n \"<div class='sp-color'>\",\n \"<div class='sp-sat'>\",\n \"<div class='sp-val'>\",\n \"<div class='sp-dragger'></div>\",\n \"</div>\",\n \"</div>\",\n \"</div>\",\n \"<div class='sp-clear sp-clear-display'>\",\n \"</div>\",\n \"<div class='sp-hue'>\",\n \"<div class='sp-slider'></div>\",\n gradientFix,\n \"</div>\",\n \"</div>\",\n \"<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>\",\n \"</div>\",\n \"<div class='sp-input-container sp-cf'>\",\n \"<input class='sp-input' type='text' spellcheck='false' />\",\n \"</div>\",\n \"<div class='sp-initial sp-thumb sp-cf'></div>\",\n \"<div class='sp-button-container sp-cf'>\",\n \"<a class='sp-cancel' href='#'></a>\",\n \"<button type='button' class='sp-choose'></button>\",\n \"</div>\",\n \"</div>\",\n \"</div>\"\n ].join(\"\");\n })();\n\n function paletteTemplate (p, color, className, tooltipFormat) {\n var html = [];\n for (var i = 0; i < p.length; i++) {\n var current = p[i];\n if(current) {\n var tiny = tinycolor(current);\n var c = tiny.toHsl().l < 0.5 ? \"sp-thumb-el sp-thumb-dark\" : \"sp-thumb-el sp-thumb-light\";\n c += (tinycolor.equals(color, current)) ? \" sp-thumb-active\" : \"\";\n\n var formattedString = tiny.toString(tooltipFormat || \"rgb\");\n var swatchStyle = rgbaSupport ? (\"background-color:\" + tiny.toRgbString()) : \"filter:\" + tiny.toFilter();\n html.push('<span title=\"' + formattedString + '\" data-color=\"' + tiny.toRgbString() + '\" class=\"' + c + '\"><span class=\"sp-thumb-inner\" style=\"' + swatchStyle + ';\" /></span>');\n } else {\n var cls = 'sp-clear-display';\n html.push('<span title=\"No Color Selected\" data-color=\"\" style=\"background-color:transparent;\" class=\"' + cls + '\"></span>');\n }\n }\n return \"<div class='sp-cf \" + className + \"'>\" + html.join('') + \"</div>\";\n }\n\n function hideAll() {\n for (var i = 0; i < spectrums.length; i++) {\n if (spectrums[i]) {\n spectrums[i].hide();\n }\n }\n }\n\n function instanceOptions(o, callbackContext) {\n var opts = $.extend({}, defaultOpts, o);\n opts.callbacks = {\n 'move': bind(opts.move, callbackContext),\n 'change': bind(opts.change, callbackContext),\n 'show': bind(opts.show, callbackContext),\n 'hide': bind(opts.hide, callbackContext),\n 'beforeShow': bind(opts.beforeShow, callbackContext)\n };\n\n return opts;\n }\n\n function spectrum(element, o) {\n\n var opts = instanceOptions(o, element),\n flat = opts.flat,\n showSelectionPalette = opts.showSelectionPalette,\n localStorageKey = opts.localStorageKey,\n theme = opts.theme,\n callbacks = opts.callbacks,\n resize = throttle(reflow, 10),\n visible = false,\n dragWidth = 0,\n dragHeight = 0,\n dragHelperHeight = 0,\n slideHeight = 0,\n slideWidth = 0,\n alphaWidth = 0,\n alphaSlideHelperWidth = 0,\n slideHelperHeight = 0,\n currentHue = 0,\n currentSaturation = 0,\n currentValue = 0,\n currentAlpha = 1,\n palette = [],\n paletteArray = [],\n paletteLookup = {},\n selectionPalette = opts.selectionPalette.slice(0),\n maxSelectionSize = opts.maxSelectionSize,\n draggingClass = \"sp-dragging\",\n shiftMovementDirection = null;\n\n var doc = element.ownerDocument,\n body = doc.body,\n boundElement = $(element),\n disabled = false,\n container = $(markup, doc).addClass(theme),\n dragger = container.find(\".sp-color\"),\n dragHelper = container.find(\".sp-dragger\"),\n slider = container.find(\".sp-hue\"),\n slideHelper = container.find(\".sp-slider\"),\n alphaSliderInner = container.find(\".sp-alpha-inner\"),\n alphaSlider = container.find(\".sp-alpha\"),\n alphaSlideHelper = container.find(\".sp-alpha-handle\"),\n textInput = container.find(\".sp-input\"),\n paletteContainer = container.find(\".sp-palette\"),\n initialColorContainer = container.find(\".sp-initial\"),\n cancelButton = container.find(\".sp-cancel\"),\n clearButton = container.find(\".sp-clear\"),\n chooseButton = container.find(\".sp-choose\"),\n isInput = boundElement.is(\"input\"),\n isInputTypeColor = isInput && inputTypeColorSupport && boundElement.attr(\"type\") === \"color\",\n shouldReplace = isInput && !flat,\n replacer = (shouldReplace) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]),\n offsetElement = (shouldReplace) ? replacer : boundElement,\n previewElement = replacer.find(\".sp-preview-inner\"),\n initialColor = opts.color || (isInput && boundElement.val()),\n colorOnShow = false,\n preferredFormat = opts.preferredFormat,\n currentPreferredFormat = preferredFormat,\n clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange,\n isEmpty = !initialColor,\n allowEmpty = opts.allowEmpty && !isInputTypeColor;\n\n function applyOptions() {\n\n if (opts.showPaletteOnly) {\n opts.showPalette = true;\n }\n\n if (opts.palette) {\n palette = opts.palette.slice(0);\n paletteArray = $.isArray(palette[0]) ? palette : [palette];\n paletteLookup = {};\n for (var i = 0; i < paletteArray.length; i++) {\n for (var j = 0; j < paletteArray[i].length; j++) {\n var rgb = tinycolor(paletteArray[i][j]).toRgbString();\n paletteLookup[rgb] = true;\n }\n }\n }\n\n container.toggleClass(\"sp-flat\", flat);\n container.toggleClass(\"sp-input-disabled\", !opts.showInput);\n container.toggleClass(\"sp-alpha-enabled\", opts.showAlpha);\n container.toggleClass(\"sp-clear-enabled\", allowEmpty);\n container.toggleClass(\"sp-buttons-disabled\", !opts.showButtons);\n container.toggleClass(\"sp-palette-disabled\", !opts.showPalette);\n container.toggleClass(\"sp-palette-only\", opts.showPaletteOnly);\n container.toggleClass(\"sp-initial-disabled\", !opts.showInitial);\n container.addClass(opts.className).addClass(opts.containerClassName);\n\n reflow();\n }\n\n function initialize() {\n\n if (IE) {\n container.find(\"*:not(input)\").attr(\"unselectable\", \"on\");\n }\n\n applyOptions();\n\n if (shouldReplace) {\n boundElement.after(replacer).hide();\n }\n\n if (!allowEmpty) {\n clearButton.hide();\n }\n\n if (flat) {\n boundElement.after(container).hide();\n }\n else {\n\n var appendTo = opts.appendTo === \"parent\" ? boundElement.parent() : $(opts.appendTo);\n if (appendTo.length !== 1) {\n appendTo = $(\"body\");\n }\n\n appendTo.append(container);\n }\n\n updateSelectionPaletteFromStorage();\n\n offsetElement.bind(\"click.spectrum touchstart.spectrum\", function (e) {\n if (!disabled) {\n toggle();\n }\n\n e.stopPropagation();\n\n if (!$(e.target).is(\"input\")) {\n e.preventDefault();\n }\n });\n\n if(boundElement.is(\":disabled\") || (opts.disabled === true)) {\n disable();\n }\n\n // Prevent clicks from bubbling up to document. This would cause it to be hidden.\n container.click(stopPropagation);\n\n // Handle user typed input\n textInput.change(setFromTextInput);\n textInput.bind(\"paste\", function () {\n setTimeout(setFromTextInput, 1);\n });\n textInput.keydown(function (e) { if (e.keyCode == 13) { setFromTextInput(); } });\n\n cancelButton.text(opts.cancelText);\n cancelButton.bind(\"click.spectrum\", function (e) {\n e.stopPropagation();\n e.preventDefault();\n hide(\"cancel\");\n });\n\n clearButton.attr(\"title\", opts.clearText);\n clearButton.bind(\"click.spectrum\", function (e) {\n e.stopPropagation();\n e.preventDefault();\n isEmpty = true;\n move();\n\n if(flat) {\n //for the flat style, this is a change event\n updateOriginalInput(true);\n }\n });\n\n chooseButton.text(opts.chooseText);\n chooseButton.bind(\"click.spectrum\", function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n if (isValid()) {\n updateOriginalInput(true);\n hide();\n }\n });\n\n draggable(alphaSlider, function (dragX, dragY, e) {\n currentAlpha = (dragX / alphaWidth);\n isEmpty = false;\n if (e.shiftKey) {\n currentAlpha = Math.round(currentAlpha * 10) / 10;\n }\n\n move();\n }, dragStart, dragStop);\n\n draggable(slider, function (dragX, dragY) {\n currentHue = parseFloat(dragY / slideHeight);\n isEmpty = false;\n if (!opts.showAlpha) {\n currentAlpha = 1;\n }\n move();\n }, dragStart, dragStop);\n\n draggable(dragger, function (dragX, dragY, e) {\n\n // shift+drag should snap the movement to either the x or y axis.\n if (!e.shiftKey) {\n shiftMovementDirection = null;\n }\n else if (!shiftMovementDirection) {\n var oldDragX = currentSaturation * dragWidth;\n var oldDragY = dragHeight - (currentValue * dragHeight);\n var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY);\n\n shiftMovementDirection = furtherFromX ? \"x\" : \"y\";\n }\n\n var setSaturation = !shiftMovementDirection || shiftMovementDirection === \"x\";\n var setValue = !shiftMovementDirection || shiftMovementDirection === \"y\";\n\n if (setSaturation) {\n currentSaturation = parseFloat(dragX / dragWidth);\n }\n if (setValue) {\n currentValue = parseFloat((dragHeight - dragY) / dragHeight);\n }\n\n isEmpty = false;\n if (!opts.showAlpha) {\n currentAlpha = 1;\n }\n\n move();\n\n }, dragStart, dragStop);\n\n if (!!initialColor) {\n set(initialColor);\n\n // In case color was black - update the preview UI and set the format\n // since the set function will not run (default color is black).\n updateUI();\n currentPreferredFormat = preferredFormat || tinycolor(initialColor).format;\n\n addColorToSelectionPalette(initialColor);\n }\n else {\n updateUI();\n }\n\n if (flat) {\n show();\n }\n\n function palletElementClick(e) {\n if (e.data && e.data.ignore) {\n set($(this).data(\"color\"));\n move();\n }\n else {\n set($(this).data(\"color\"));\n move();\n updateOriginalInput(true);\n hide();\n }\n\n return false;\n }\n\n var paletteEvent = IE ? \"mousedown.spectrum\" : \"click.spectrum touchstart.spectrum\";\n paletteContainer.delegate(\".sp-thumb-el\", paletteEvent, palletElementClick);\n initialColorContainer.delegate(\".sp-thumb-el:nth-child(1)\", paletteEvent, { ignore: true }, palletElementClick);\n }\n\n function updateSelectionPaletteFromStorage() {\n\n if (localStorageKey && window.localStorage) {\n\n // Migrate old palettes over to new format. May want to remove this eventually.\n try {\n var oldPalette = window.localStorage[localStorageKey].split(\",#\");\n if (oldPalette.length > 1) {\n delete window.localStorage[localStorageKey];\n $.each(oldPalette, function(i, c) {\n addColorToSelectionPalette(c);\n });\n }\n }\n catch(e) { }\n\n try {\n selectionPalette = window.localStorage[localStorageKey].split(\";\");\n }\n catch (e) { }\n }\n }\n\n function addColorToSelectionPalette(color) {\n if (showSelectionPalette) {\n var rgb = tinycolor(color).toRgbString();\n if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) {\n selectionPalette.push(rgb);\n while(selectionPalette.length > maxSelectionSize) {\n selectionPalette.shift();\n }\n }\n\n if (localStorageKey && window.localStorage) {\n try {\n window.localStorage[localStorageKey] = selectionPalette.join(\";\");\n }\n catch(e) { }\n }\n }\n }\n\n function getUniqueSelectionPalette() {\n var unique = [];\n if (opts.showPalette) {\n for (i = 0; i < selectionPalette.length; i++) {\n var rgb = tinycolor(selectionPalette[i]).toRgbString();\n\n if (!paletteLookup[rgb]) {\n unique.push(selectionPalette[i]);\n }\n }\n }\n\n return unique.reverse().slice(0, opts.maxSelectionSize);\n }\n\n function drawPalette() {\n\n var currentColor = get();\n\n var html = $.map(paletteArray, function (palette, i) {\n return paletteTemplate(palette, currentColor, \"sp-palette-row sp-palette-row-\" + i, opts.preferredFormat);\n });\n\n updateSelectionPaletteFromStorage();\n\n if (selectionPalette) {\n html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, \"sp-palette-row sp-palette-row-selection\", opts.preferredFormat));\n }\n\n paletteContainer.html(html.join(\"\"));\n }\n\n function drawInitial() {\n if (opts.showInitial) {\n var initial = colorOnShow;\n var current = get();\n initialColorContainer.html(paletteTemplate([initial, current], current, \"sp-palette-row-initial\", opts.preferredFormat));\n }\n }\n\n function dragStart() {\n if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) {\n reflow();\n }\n container.addClass(draggingClass);\n shiftMovementDirection = null;\n boundElement.trigger('dragstart.spectrum', [ get() ]);\n }\n\n function dragStop() {\n container.removeClass(draggingClass);\n boundElement.trigger('dragstop.spectrum', [ get() ]);\n }\n\n function setFromTextInput() {\n\n var value = textInput.val();\n\n if ((value === null || value === \"\") && allowEmpty) {\n set(null);\n updateOriginalInput(true);\n }\n else {\n var tiny = tinycolor(value);\n if (tiny.ok) {\n set(tiny);\n updateOriginalInput(true);\n }\n else {\n textInput.addClass(\"sp-validation-error\");\n }\n }\n }\n\n function toggle() {\n if (visible) {\n hide();\n }\n else {\n show();\n }\n }\n\n function show() {\n var event = $.Event('beforeShow.spectrum');\n\n if (visible) {\n reflow();\n return;\n }\n\n boundElement.trigger(event, [ get() ]);\n\n if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) {\n return;\n }\n\n hideAll();\n visible = true;\n\n $(doc).bind(\"click.spectrum\", hide);\n $(window).bind(\"resize.spectrum\", resize);\n replacer.addClass(\"sp-active\");\n container.removeClass(\"sp-hidden\");\n\n reflow();\n updateUI();\n\n colorOnShow = get();\n\n drawInitial();\n callbacks.show(colorOnShow);\n boundElement.trigger('show.spectrum', [ colorOnShow ]);\n }\n\n function hide(e) {\n\n // Return on right click\n if (e && e.type == \"click\" && e.button == 2) { return; }\n\n // Return if hiding is unnecessary\n if (!visible || flat) { return; }\n visible = false;\n\n $(doc).unbind(\"click.spectrum\", hide);\n $(window).unbind(\"resize.spectrum\", resize);\n\n replacer.removeClass(\"sp-active\");\n container.addClass(\"sp-hidden\");\n\n var colorHasChanged = !tinycolor.equals(get(), colorOnShow);\n\n if (colorHasChanged) {\n if (clickoutFiresChange && e !== \"cancel\") {\n updateOriginalInput(true);\n }\n else {\n revert();\n }\n }\n\n callbacks.hide(get());\n boundElement.trigger('hide.spectrum', [ get() ]);\n }\n\n function revert() {\n set(colorOnShow, true);\n }\n\n function set(color, ignoreFormatChange) {\n if (tinycolor.equals(color, get())) {\n // Update UI just in case a validation error needs\n // to be cleared.\n updateUI();\n return;\n }\n\n var newColor, newHsv;\n if (!color && allowEmpty) {\n isEmpty = true;\n } else {\n isEmpty = false;\n newColor = tinycolor(color);\n newHsv = newColor.toHsv();\n\n currentHue = (newHsv.h % 360) / 360;\n currentSaturation = newHsv.s;\n currentValue = newHsv.v;\n currentAlpha = newHsv.a;\n }\n updateUI();\n\n if (newColor && newColor.ok && !ignoreFormatChange) {\n currentPreferredFormat = preferredFormat || newColor.format;\n }\n }\n\n function get(opts) {\n opts = opts || { };\n\n if (allowEmpty && isEmpty) {\n return null;\n }\n\n return tinycolor.fromRatio({\n h: currentHue,\n s: currentSaturation,\n v: currentValue,\n a: Math.round(currentAlpha * 100) / 100\n }, { format: opts.format || currentPreferredFormat });\n }\n\n function isValid() {\n return !textInput.hasClass(\"sp-validation-error\");\n }\n\n function move() {\n updateUI();\n\n callbacks.move(get());\n boundElement.trigger('move.spectrum', [ get() ]);\n }\n\n function updateUI() {\n\n textInput.removeClass(\"sp-validation-error\");\n\n updateHelperLocations();\n\n // Update dragger background color (gradients take care of saturation and value).\n var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 });\n dragger.css(\"background-color\", flatColor.toHexString());\n\n // Get a format that alpha will be included in (hex and names ignore alpha)\n var format = currentPreferredFormat;\n if (currentAlpha < 1 && !(currentAlpha === 0 && format === \"name\")) {\n if (format === \"hex\" || format === \"hex3\" || format === \"hex6\" || format === \"name\") {\n format = \"rgb\";\n }\n }\n\n var realColor = get({ format: format }),\n displayColor = '';\n\n //reset background info for preview element\n previewElement.removeClass(\"sp-clear-display\");\n previewElement.css('background-color', 'transparent');\n\n if (!realColor && allowEmpty) {\n // Update the replaced elements background with icon indicating no color selection\n previewElement.addClass(\"sp-clear-display\");\n }\n else {\n var realHex = realColor.toHexString(),\n realRgb = realColor.toRgbString();\n\n // Update the replaced elements background color (with actual selected color)\n if (rgbaSupport || realColor.alpha === 1) {\n previewElement.css(\"background-color\", realRgb);\n }\n else {\n previewElement.css(\"background-color\", \"transparent\");\n previewElement.css(\"filter\", realColor.toFilter());\n }\n\n if (opts.showAlpha) {\n var rgb = realColor.toRgb();\n rgb.a = 0;\n var realAlpha = tinycolor(rgb).toRgbString();\n var gradient = \"linear-gradient(left, \" + realAlpha + \", \" + realHex + \")\";\n\n if (IE) {\n alphaSliderInner.css(\"filter\", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex));\n }\n else {\n alphaSliderInner.css(\"background\", \"-webkit-\" + gradient);\n alphaSliderInner.css(\"background\", \"-moz-\" + gradient);\n alphaSliderInner.css(\"background\", \"-ms-\" + gradient);\n // Use current syntax gradient on unprefixed property.\n alphaSliderInner.css(\"background\",\n \"linear-gradient(to right, \" + realAlpha + \", \" + realHex + \")\");\n }\n }\n\n displayColor = realColor.toString(format);\n }\n\n // Update the text entry input as it changes happen\n if (opts.showInput) {\n textInput.val(displayColor);\n }\n\n if (opts.showPalette) {\n drawPalette();\n }\n\n drawInitial();\n }\n\n function updateHelperLocations() {\n var s = currentSaturation;\n var v = currentValue;\n\n if(allowEmpty && isEmpty) {\n //if selected color is empty, hide the helpers\n alphaSlideHelper.hide();\n slideHelper.hide();\n dragHelper.hide();\n }\n else {\n //make sure helpers are visible\n alphaSlideHelper.show();\n slideHelper.show();\n dragHelper.show();\n\n // Where to show the little circle in that displays your current selected color\n var dragX = s * dragWidth;\n var dragY = dragHeight - (v * dragHeight);\n dragX = Math.max(\n -dragHelperHeight,\n Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight)\n );\n dragY = Math.max(\n -dragHelperHeight,\n Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight)\n );\n dragHelper.css({\n \"top\": dragY + \"px\",\n \"left\": dragX + \"px\"\n });\n\n var alphaX = currentAlpha * alphaWidth;\n alphaSlideHelper.css({\n \"left\": (alphaX - (alphaSlideHelperWidth / 2)) + \"px\"\n });\n\n // Where to show the bar that displays your current selected hue\n var slideY = (currentHue) * slideHeight;\n slideHelper.css({\n \"top\": (slideY - slideHelperHeight) + \"px\"\n });\n }\n }\n\n function updateOriginalInput(fireCallback) {\n var color = get(),\n displayColor = '',\n hasChanged = !tinycolor.equals(color, colorOnShow);\n\n if (color) {\n displayColor = color.toString(currentPreferredFormat);\n // Update the selection palette with the current color\n addColorToSelectionPalette(color);\n }\n\n if (isInput) {\n boundElement.val(displayColor);\n }\n\n colorOnShow = color;\n\n if (fireCallback && hasChanged) {\n callbacks.change(color);\n boundElement.trigger('change', [ color ]);\n }\n }\n\n function reflow() {\n dragWidth = dragger.width();\n dragHeight = dragger.height();\n dragHelperHeight = dragHelper.height();\n slideWidth = slider.width();\n slideHeight = slider.height();\n slideHelperHeight = slideHelper.height();\n alphaWidth = alphaSlider.width();\n alphaSlideHelperWidth = alphaSlideHelper.width();\n\n if (!flat) {\n container.css(\"position\", \"absolute\");\n container.offset(getOffset(container, offsetElement));\n }\n\n updateHelperLocations();\n\n if (opts.showPalette) {\n drawPalette();\n }\n\n boundElement.trigger('reflow.spectrum');\n }\n\n function destroy() {\n boundElement.show();\n offsetElement.unbind(\"click.spectrum touchstart.spectrum\");\n container.remove();\n replacer.remove();\n spectrums[spect.id] = null;\n }\n\n function option(optionName, optionValue) {\n if (optionName === undefined) {\n return $.extend({}, opts);\n }\n if (optionValue === undefined) {\n return opts[optionName];\n }\n\n opts[optionName] = optionValue;\n applyOptions();\n }\n\n function enable() {\n disabled = false;\n boundElement.attr(\"disabled\", false);\n offsetElement.removeClass(\"sp-disabled\");\n }\n\n function disable() {\n hide();\n disabled = true;\n boundElement.attr(\"disabled\", true);\n offsetElement.addClass(\"sp-disabled\");\n }\n\n initialize();\n\n var spect = {\n show: show,\n hide: hide,\n toggle: toggle,\n reflow: reflow,\n option: option,\n enable: enable,\n disable: disable,\n set: function (c) {\n set(c);\n updateOriginalInput();\n },\n get: get,\n destroy: destroy,\n container: container\n };\n\n spect.id = spectrums.push(spect) - 1;\n\n return spect;\n }\n\n /**\n * checkOffset - get the offset below/above and left/right element depending on screen position\n * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js\n */\n function getOffset(picker, input) {\n var extraY = 0;\n var dpWidth = picker.outerWidth();\n var dpHeight = picker.outerHeight();\n var inputHeight = input.outerHeight();\n var doc = picker[0].ownerDocument;\n var docElem = doc.documentElement;\n var viewWidth = docElem.clientWidth + $(doc).scrollLeft();\n var viewHeight = docElem.clientHeight + $(doc).scrollTop();\n var offset = input.offset();\n offset.top += inputHeight;\n\n offset.left -=\n Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n Math.abs(offset.left + dpWidth - viewWidth) : 0);\n\n offset.top -=\n Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n Math.abs(dpHeight + inputHeight - extraY) : extraY));\n\n return offset;\n }\n\n /**\n * noop - do nothing\n */\n function noop() {\n\n }\n\n /**\n * stopPropagation - makes the code only doing this a little easier to read in line\n */\n function stopPropagation(e) {\n e.stopPropagation();\n }\n\n /**\n * Create a function bound to a given object\n * Thanks to underscore.js\n */\n function bind(func, obj) {\n var slice = Array.prototype.slice;\n var args = slice.call(arguments, 2);\n return function () {\n return func.apply(obj, args.concat(slice.call(arguments)));\n };\n }\n\n /**\n * Lightweight drag helper. Handles containment within the element, so that\n * when dragging, the x is within [0,element.width] and y is within [0,element.height]\n */\n function draggable(element, onmove, onstart, onstop) {\n onmove = onmove || function () { };\n onstart = onstart || function () { };\n onstop = onstop || function () { };\n var doc = element.ownerDocument || document;\n var dragging = false;\n var offset = {};\n var maxHeight = 0;\n var maxWidth = 0;\n var hasTouch = ('ontouchstart' in window);\n\n var duringDragEvents = {};\n duringDragEvents[\"selectstart\"] = prevent;\n duringDragEvents[\"dragstart\"] = prevent;\n duringDragEvents[\"touchmove mousemove\"] = move;\n duringDragEvents[\"touchend mouseup\"] = stop;\n\n function prevent(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n if (e.preventDefault) {\n e.preventDefault();\n }\n e.returnValue = false;\n }\n\n function move(e) {\n if (dragging) {\n // Mouseup happened outside of window\n if (IE && document.documentMode < 9 && !e.button) {\n return stop();\n }\n\n var touches = e.originalEvent.touches;\n var pageX = touches ? touches[0].pageX : e.pageX;\n var pageY = touches ? touches[0].pageY : e.pageY;\n\n var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth));\n var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight));\n\n if (hasTouch) {\n // Stop scrolling in iOS\n prevent(e);\n }\n\n onmove.apply(element, [dragX, dragY, e]);\n }\n }\n\n function start(e) {\n var rightclick = (e.which) ? (e.which == 3) : (e.button == 2);\n var touches = e.originalEvent.touches;\n\n if (!rightclick && !dragging) {\n if (onstart.apply(element, arguments) !== false) {\n dragging = true;\n maxHeight = $(element).height();\n maxWidth = $(element).width();\n offset = $(element).offset();\n\n $(doc).bind(duringDragEvents);\n $(doc.body).addClass(\"sp-dragging\");\n\n if (!hasTouch) {\n move(e);\n }\n\n prevent(e);\n }\n }\n }\n\n function stop() {\n if (dragging) {\n $(doc).unbind(duringDragEvents);\n $(doc.body).removeClass(\"sp-dragging\");\n onstop.apply(element, arguments);\n }\n dragging = false;\n }\n\n $(element).bind(\"touchstart mousedown\", start);\n }\n\n function throttle(func, wait, debounce) {\n var timeout;\n return function () {\n var context = this, args = arguments;\n var throttler = function () {\n timeout = null;\n func.apply(context, args);\n };\n if (debounce) clearTimeout(timeout);\n if (debounce || !timeout) timeout = setTimeout(throttler, wait);\n };\n }\n\n function log(){/* jshint -W021 */if(window.console){if(Function.prototype.bind)log=Function.prototype.bind.call(console.log,console);else log=function(){Function.prototype.apply.call(console.log,console,arguments);};log.apply(this,arguments);}}\n\n /**\n * Define a jQuery plugin\n */\n var dataID = \"spectrum.id\";\n $.fn.spectrum = function (opts, extra) {\n\n if (typeof opts == \"string\") {\n\n var returnValue = this;\n var args = Array.prototype.slice.call( arguments, 1 );\n\n this.each(function () {\n var spect = spectrums[$(this).data(dataID)];\n if (spect) {\n var method = spect[opts];\n if (!method) {\n throw new Error( \"Spectrum: no such method: '\" + opts + \"'\" );\n }\n\n if (opts == \"get\") {\n returnValue = spect.get();\n }\n else if (opts == \"container\") {\n returnValue = spect.container;\n }\n else if (opts == \"option\") {\n returnValue = spect.option.apply(spect, args);\n }\n else if (opts == \"destroy\") {\n spect.destroy();\n $(this).removeData(dataID);\n }\n else {\n method.apply(spect, args);\n }\n }\n });\n\n return returnValue;\n }\n\n // Initializing a new instance of spectrum\n return this.spectrum(\"destroy\").each(function () {\n var options = $.extend({}, opts, $(this).data());\n var spect = spectrum(this, options);\n $(this).data(dataID, spect.id);\n });\n };\n\n $.fn.spectrum.load = true;\n $.fn.spectrum.loadOpts = {};\n $.fn.spectrum.draggable = draggable;\n $.fn.spectrum.defaults = defaultOpts;\n\n $.spectrum = { };\n $.spectrum.localization = { };\n $.spectrum.palettes = { };\n\n $.fn.spectrum.processNativeColorInputs = function () {\n if (!inputTypeColorSupport) {\n $(\"input[type=color]\").spectrum({\n preferredFormat: \"hex6\"\n });\n }\n };\n\n // TinyColor v0.9.17\n // https://github.com/bgrins/TinyColor\n // 2013-08-10, Brian Grinstead, MIT License\n\n (function() {\n\n var trimLeft = /^[\\s,#]+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n math = Math,\n mathRound = math.round,\n mathMin = math.min,\n mathMax = math.max,\n mathRandom = math.random;\n\n function tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (typeof color == \"object\" && color.hasOwnProperty(\"_tc_id\")) {\n return color;\n }\n\n var rgb = inputToRGB(color);\n var r = rgb.r,\n g = rgb.g,\n b = rgb.b,\n a = rgb.a,\n roundA = mathRound(100*a) / 100,\n format = opts.format || rgb.format;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (r < 1) { r = mathRound(r); }\n if (g < 1) { g = mathRound(g); }\n if (b < 1) { b = mathRound(b); }\n\n return {\n ok: rgb.ok,\n format: format,\n _tc_id: tinyCounter++,\n alpha: a,\n getAlpha: function() {\n return a;\n },\n setAlpha: function(value) {\n a = boundAlpha(value);\n roundA = mathRound(100*a) / 100;\n },\n toHsv: function() {\n var hsv = rgbToHsv(r, g, b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(r, g, b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(r, g, b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(r, g, b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(r, g, b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function() {\n return rgbaToHex(r, g, b, a);\n },\n toHex8String: function() {\n return '#' + this.toHex8();\n },\n toRgb: function() {\n return { r: mathRound(r), g: mathRound(g), b: mathRound(b), a: a };\n },\n toRgbString: function() {\n return (a == 1) ?\n \"rgb(\" + mathRound(r) + \", \" + mathRound(g) + \", \" + mathRound(b) + \")\" :\n \"rgba(\" + mathRound(r) + \", \" + mathRound(g) + \", \" + mathRound(b) + \", \" + roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(r, 255) * 100) + \"%\", g: mathRound(bound01(g, 255) * 100) + \"%\", b: mathRound(bound01(b, 255) * 100) + \"%\", a: a };\n },\n toPercentageRgbString: function() {\n return (a == 1) ?\n \"rgb(\" + mathRound(bound01(r, 255) * 100) + \"%, \" + mathRound(bound01(g, 255) * 100) + \"%, \" + mathRound(bound01(b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(r, 255) * 100) + \"%, \" + mathRound(bound01(g, 255) * 100) + \"%, \" + mathRound(bound01(b, 255) * 100) + \"%, \" + roundA + \")\";\n },\n toName: function() {\n if (a === 0) {\n return \"transparent\";\n }\n\n return hexNames[rgbToHex(r, g, b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToHex(r, g, b, a);\n var secondHex8String = hex8String;\n var gradientType = opts && opts.gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = s.toHex8String();\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this.format;\n\n var formattedString = false;\n var hasAlphaAndFormatNotSet = !formatSet && a < 1 && a > 0;\n var formatWithAlpha = hasAlphaAndFormatNotSet && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"name\");\n\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n if (formatWithAlpha) {\n return this.toRgbString();\n }\n\n return formattedString || this.toHexString();\n }\n };\n }\n\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\n // String input requires \"1.0\" as input, so 1 will be treated as 1\n tinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n };\n\n // Given a string or object, convert that input to RGB\n // Possible string inputs:\n //\n // \"red\"\n // \"#f00\" or \"f00\"\n // \"#ff0000\" or \"ff0000\"\n // \"#ff000000\" or \"ff000000\"\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n //\n function inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (color.hasOwnProperty(\"r\") && color.hasOwnProperty(\"g\") && color.hasOwnProperty(\"b\")) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (color.hasOwnProperty(\"h\") && color.hasOwnProperty(\"s\") && color.hasOwnProperty(\"v\")) {\n color.s = convertToPercentage(color.s);\n color.v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, color.s, color.v);\n ok = true;\n format = \"hsv\";\n }\n else if (color.hasOwnProperty(\"h\") && color.hasOwnProperty(\"s\") && color.hasOwnProperty(\"l\")) {\n color.s = convertToPercentage(color.s);\n color.l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, color.s, color.l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n }\n\n\n // Conversion Functions\n // --------------------\n\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n // <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n // `rgbToRgb`\n // Handle bounds / percentage checking to conform to CSS color spec\n // <http://www.w3.org/TR/css3-color/>\n // *Assumes:* r, g, b in [0, 255] or [0, 1]\n // *Returns:* { r, g, b } in [0, 255]\n function rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n }\n\n // `rgbToHsl`\n // Converts an RGB color value to HSL.\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n // *Returns:* { h, s, l } in [0,1]\n function rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n }\n\n // `hslToRgb`\n // Converts an HSL color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n\n // `rgbToHsv`\n // Converts an RGB color value to HSV\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n // *Returns:* { h, s, v } in [0,1]\n function rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n }\n\n // `hsvToRgb`\n // Converts an HSV color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n\n // `rgbToHex`\n // Converts an RGB color to hex\n // Assumes r, g, and b are contained in the set [0, 255]\n // Returns a 3 or 6 character hex\n function rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n }\n // `rgbaToHex`\n // Converts an RGBA color plus alpha transparency to hex\n // Assumes r, g, b and a are contained in the set [0, 255]\n // Returns an 8 character hex\n function rgbaToHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n }\n\n // `equals`\n // Can be called with any tinycolor input\n tinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n tinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n };\n\n\n // Modification Functions\n // ----------------------\n // Thanks to less.js for some of the basics here\n // <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\n tinycolor.desaturate = function (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n };\n tinycolor.saturate = function (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n };\n tinycolor.greyscale = function(color) {\n return tinycolor.desaturate(color, 100);\n };\n tinycolor.lighten = function(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n };\n tinycolor.darken = function (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n };\n tinycolor.complement = function(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n };\n\n\n // Combination Functions\n // ---------------------\n // Thanks to jQuery xColor for some of the ideas behind these\n // <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\n tinycolor.triad = function(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n };\n tinycolor.tetrad = function(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n };\n tinycolor.splitcomplement = function(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n };\n tinycolor.analogous = function(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n };\n tinycolor.monochromatic = function(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n };\n\n\n // Readability Functions\n // ---------------------\n // <http://www.w3.org/TR/AERT#color-contrast>\n\n // `readability`\n // Analyze the 2 colors and returns an object with the following properties:\n // `brightness`: difference in brightness between the two colors\n // `color`: difference in color/hue between the two colors\n tinycolor.readability = function(color1, color2) {\n var a = tinycolor(color1).toRgb();\n var b = tinycolor(color2).toRgb();\n var brightnessA = (a.r * 299 + a.g * 587 + a.b * 114) / 1000;\n var brightnessB = (b.r * 299 + b.g * 587 + b.b * 114) / 1000;\n var colorDiff = (\n Math.max(a.r, b.r) - Math.min(a.r, b.r) +\n Math.max(a.g, b.g) - Math.min(a.g, b.g) +\n Math.max(a.b, b.b) - Math.min(a.b, b.b)\n );\n\n return {\n brightness: Math.abs(brightnessA - brightnessB),\n color: colorDiff\n };\n };\n\n // `readable`\n // http://www.w3.org/TR/AERT#color-contrast\n // Ensure that foreground and background color combinations provide sufficient contrast.\n // *Example*\n // tinycolor.readable(\"#000\", \"#111\") => false\n tinycolor.readable = function(color1, color2) {\n var readability = tinycolor.readability(color1, color2);\n return readability.brightness > 125 && readability.color > 500;\n };\n\n // `mostReadable`\n // Given a base color and a list of possible foreground or background\n // colors for that base, returns the most readable color.\n // *Example*\n // tinycolor.mostReadable(\"#123\", [\"#fff\", \"#000\"]) => \"#000\"\n tinycolor.mostReadable = function(baseColor, colorList) {\n var bestColor = null;\n var bestScore = 0;\n var bestIsReadable = false;\n for (var i=0; i < colorList.length; i++) {\n\n // We normalize both around the \"acceptable\" breaking point,\n // but rank brightness constrast higher than hue.\n\n var readability = tinycolor.readability(baseColor, colorList[i]);\n var readable = readability.brightness > 125 && readability.color > 500;\n var score = 3 * (readability.brightness / 125) + (readability.color / 500);\n\n if ((readable && ! bestIsReadable) ||\n (readable && bestIsReadable && score > bestScore) ||\n ((! readable) && (! bestIsReadable) && score > bestScore)) {\n bestIsReadable = readable;\n bestScore = score;\n bestColor = tinycolor(colorList[i]);\n }\n }\n return bestColor;\n };\n\n\n // Big List of Colors\n // ------------------\n // <http://www.w3.org/TR/css3-color/#svg-color>\n var names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n };\n\n // Make it easy to access colors via `hexNames[hex]`\n var hexNames = tinycolor.hexNames = flip(names);\n\n\n // Utilities\n // ---------\n\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n function flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n\n // Return a valid alpha value [0,1] with all invalid values being set to 1\n function boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n }\n\n // Take input from [0, n] and return it as [0, 1]\n function bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n }\n\n // Force a number between 0 and 1\n function clamp01(val) {\n return mathMin(1, mathMax(0, val));\n }\n\n // Parse a base-16 hex value into a base-10 integer\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n // <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n function isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n }\n\n // Check to see if string passed in is a percentage\n function isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n }\n\n // Force a hex value to have 2 characters\n function pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n }\n\n // Replace a decimal with it's percentage value\n function convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n }\n\n // Converts a decimal to a hex value\n function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n }\n // Converts a hex value to a decimal\n function convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n }\n\n var matchers = (function() {\n\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n })();\n\n // `stringInputToObject`\n // Permissive string parsing. Take in a number of formats, and output an object\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n function stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n a: convertHexToDecimal(match[1]),\n r: parseIntFromHex(match[2]),\n g: parseIntFromHex(match[3]),\n b: parseIntFromHex(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n }\n\n // Expose tinycolor to window, does not need to run in non-browser context.\n window.tinycolor = tinycolor;\n\n })();\n\n\n $(function () {\n if ($.fn.spectrum.load) {\n $.fn.spectrum.processNativeColorInputs();\n }\n });\n\n})(window, jQuery);\n","//! moment.js\n//! version : 2.15.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\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 utils_hooks__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 var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\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 create_utc__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 };\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 valid__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.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 valid__createInvalid (flags) {\n var m = create_utc__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 function isUndefined(input) {\n return input === void 0;\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 = utils_hooks__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 in momentProperties) {\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 // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n utils_hooks__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 (utils_hooks__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 (utils_hooks__hooks.deprecationHandler != null) {\n utils_hooks__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 (utils_hooks__hooks.deprecationHandler != null) {\n utils_hooks__hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n utils_hooks__hooks.suppressDeprecationWarnings = false;\n utils_hooks__hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function locale_set__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 _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\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 locale_calendar__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 defaultOrdinalParse = /\\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 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 relative__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 makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n get_set__set(this, unit, value);\n utils_hooks__hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get_set__get(this, unit);\n }\n };\n }\n\n function get_set__get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function get_set__set (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\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 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 += array[i] instanceof Function ? 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]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\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 (typeof callback === 'number') {\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 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 return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\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 this._months;\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 this._monthsShort;\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 units_month__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 = create_utc__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 units_month__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 = create_utc__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 (typeof value !== 'number') {\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 utils_hooks__hooks.updateOffset(this, true);\n return this;\n } else {\n return get_set__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 = create_utc__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 // 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 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = utils_hooks__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 utils_hooks__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 createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\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 //http://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 this._weekdays;\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 day_of_week__handleStrictParse(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 = create_utc__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 day_of_week__handleStrictParse.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 = create_utc__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 = create_utc__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('HH', match1to2, match2);\n addRegexToken('hh', 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(['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 he wants. 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 ordinalParse: defaultOrdinalParse,\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 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 null;\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 require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n locale_locales__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 locale_locales__getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = locale_locales__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 }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var 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 // treat as if there is no base config\n deprecateSimple('parentLocaleUndefined',\n 'specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/');\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\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, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._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 locale_locales__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 locale_locales__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 locale_locales__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 // 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 // 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 utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n utils_hooks__hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non 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 // 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(utils_hooks__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, 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) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\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 // 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\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(local__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 weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);\n week = defaults(w.w, 1);\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 // constant that refers to the ISO standard\n utils_hooks__hooks.ISO_8601 = 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 === utils_hooks__hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\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 (!valid__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 || locale_locales__getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return valid__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 (isArray(format)) {\n configFromStringAndArray(config);\n } else if (isDate(input)) {\n config._d = input;\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!valid__isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date(utils_hooks__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 (typeof(input) === 'object') {\n configFromObject(config);\n } else if (typeof(input) === 'number') {\n // from milliseconds\n config._d = new Date(input);\n } else {\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (typeof(locale) === 'boolean') {\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 local__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 = local__createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return valid__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 = local__createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return valid__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 local__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 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 // 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 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 = locale_locales__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 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 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() : local__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 utils_hooks__hooks.updateOffset(res, false);\n return res;\n } else {\n return local__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 utils_hooks__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) {\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 } else if (Math.abs(input) < 16) {\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 add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n utils_hooks__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) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n\n if (tZone === 0) {\n this.utcOffset(0, true);\n } else {\n this.utcOffset(offsetFromString(matchOffset, this._i));\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? local__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 ? create_utc__createUTC(c._a) : local__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 create__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 (typeof input === 'number') {\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 : 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(local__createLocal(duration.from), local__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 create__createDuration.fn = Duration.prototype;\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 = create__createDuration(val, period);\n add_subtract__addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function add_subtract__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 (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n utils_hooks__hooks.updateOffset(mom, days || months);\n }\n }\n\n var add_subtract__add = createAdder(1, 'add');\n var add_subtract__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 moment_calendar__calendar (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 || local__createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = utils_hooks__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, local__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 : local__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 : local__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 : local__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 delta, 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 if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\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 utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n utils_hooks__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 moment_format__toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__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 local__createLocal(time).isValid())) {\n return create__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(local__createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n local__createLocal(time).isValid())) {\n return create__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(local__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 = locale_locales__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 to_type__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 moment_valid__isValid () {\n return valid__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] = utils_hooks__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 // PRIOROITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\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 momentPrototype__proto = Moment.prototype;\n\n momentPrototype__proto.add = add_subtract__add;\n momentPrototype__proto.calendar = moment_calendar__calendar;\n momentPrototype__proto.clone = clone;\n momentPrototype__proto.diff = diff;\n momentPrototype__proto.endOf = endOf;\n momentPrototype__proto.format = format;\n momentPrototype__proto.from = from;\n momentPrototype__proto.fromNow = fromNow;\n momentPrototype__proto.to = to;\n momentPrototype__proto.toNow = toNow;\n momentPrototype__proto.get = stringGet;\n momentPrototype__proto.invalidAt = invalidAt;\n momentPrototype__proto.isAfter = isAfter;\n momentPrototype__proto.isBefore = isBefore;\n momentPrototype__proto.isBetween = isBetween;\n momentPrototype__proto.isSame = isSame;\n momentPrototype__proto.isSameOrAfter = isSameOrAfter;\n momentPrototype__proto.isSameOrBefore = isSameOrBefore;\n momentPrototype__proto.isValid = moment_valid__isValid;\n momentPrototype__proto.lang = lang;\n momentPrototype__proto.locale = locale;\n momentPrototype__proto.localeData = localeData;\n momentPrototype__proto.max = prototypeMax;\n momentPrototype__proto.min = prototypeMin;\n momentPrototype__proto.parsingFlags = parsingFlags;\n momentPrototype__proto.set = stringSet;\n momentPrototype__proto.startOf = startOf;\n momentPrototype__proto.subtract = add_subtract__subtract;\n momentPrototype__proto.toArray = toArray;\n momentPrototype__proto.toObject = toObject;\n momentPrototype__proto.toDate = toDate;\n momentPrototype__proto.toISOString = moment_format__toISOString;\n momentPrototype__proto.toJSON = toJSON;\n momentPrototype__proto.toString = toString;\n momentPrototype__proto.unix = unix;\n momentPrototype__proto.valueOf = to_type__valueOf;\n momentPrototype__proto.creationData = creationData;\n\n // Year\n momentPrototype__proto.year = getSetYear;\n momentPrototype__proto.isLeapYear = getIsLeapYear;\n\n // Week Year\n momentPrototype__proto.weekYear = getSetWeekYear;\n momentPrototype__proto.isoWeekYear = getSetISOWeekYear;\n\n // Quarter\n momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;\n\n // Month\n momentPrototype__proto.month = getSetMonth;\n momentPrototype__proto.daysInMonth = getDaysInMonth;\n\n // Week\n momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;\n momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;\n momentPrototype__proto.weeksInYear = getWeeksInYear;\n momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;\n\n // Day\n momentPrototype__proto.date = getSetDayOfMonth;\n momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;\n momentPrototype__proto.weekday = getSetLocaleDayOfWeek;\n momentPrototype__proto.isoWeekday = getSetISODayOfWeek;\n momentPrototype__proto.dayOfYear = getSetDayOfYear;\n\n // Hour\n momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;\n\n // Minute\n momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;\n\n // Second\n momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;\n\n // Millisecond\n momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;\n\n // Offset\n momentPrototype__proto.utcOffset = getSetOffset;\n momentPrototype__proto.utc = setOffsetToUTC;\n momentPrototype__proto.local = setOffsetToLocal;\n momentPrototype__proto.parseZone = setOffsetToParsedOffset;\n momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;\n momentPrototype__proto.isDST = isDaylightSavingTime;\n momentPrototype__proto.isLocal = isLocal;\n momentPrototype__proto.isUtcOffset = isUtcOffset;\n momentPrototype__proto.isUtc = isUtc;\n momentPrototype__proto.isUTC = isUtc;\n\n // Timezone\n momentPrototype__proto.zoneAbbr = getZoneAbbr;\n momentPrototype__proto.zoneName = getZoneName;\n\n // Deprecations\n momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n momentPrototype__proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n var momentPrototype = momentPrototype__proto;\n\n function moment__createUnix (input) {\n return local__createLocal(input * 1000);\n }\n\n function moment__createInZone () {\n return local__createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var prototype__proto = Locale.prototype;\n\n prototype__proto.calendar = locale_calendar__calendar;\n prototype__proto.longDateFormat = longDateFormat;\n prototype__proto.invalidDate = invalidDate;\n prototype__proto.ordinal = ordinal;\n prototype__proto.preparse = preParsePostFormat;\n prototype__proto.postformat = preParsePostFormat;\n prototype__proto.relativeTime = relative__relativeTime;\n prototype__proto.pastFuture = pastFuture;\n prototype__proto.set = locale_set__set;\n\n // Month\n prototype__proto.months = localeMonths;\n prototype__proto.monthsShort = localeMonthsShort;\n prototype__proto.monthsParse = localeMonthsParse;\n prototype__proto.monthsRegex = monthsRegex;\n prototype__proto.monthsShortRegex = monthsShortRegex;\n\n // Week\n prototype__proto.week = localeWeek;\n prototype__proto.firstDayOfYear = localeFirstDayOfYear;\n prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;\n\n // Day of Week\n prototype__proto.weekdays = localeWeekdays;\n prototype__proto.weekdaysMin = localeWeekdaysMin;\n prototype__proto.weekdaysShort = localeWeekdaysShort;\n prototype__proto.weekdaysParse = localeWeekdaysParse;\n\n prototype__proto.weekdaysRegex = weekdaysRegex;\n prototype__proto.weekdaysShortRegex = weekdaysShortRegex;\n prototype__proto.weekdaysMinRegex = weekdaysMinRegex;\n\n // Hours\n prototype__proto.isPM = localeIsPM;\n prototype__proto.meridiem = localeMeridiem;\n\n function lists__get (format, index, field, setter) {\n var locale = locale_locales__getLocale();\n var utc = create_utc__createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return lists__get(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = lists__get(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 (typeof format === 'number') {\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 (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = locale_locales__getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return lists__get(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = lists__get(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function lists__listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function lists__listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function lists__listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function lists__listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function lists__listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n locale_locales__getSetGlobalLocale('en', {\n ordinalParse: /\\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 utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);\n utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);\n\n var mathAbs = Math.abs;\n\n function duration_abs__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 duration_add_subtract__addSubtract (duration, input, value, direction) {\n var other = create__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 duration_add_subtract__add (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function duration_add_subtract__subtract (input, value) {\n return duration_add_subtract__addSubtract(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 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 duration_as__valueOf () {\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 duration_get__get (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n }\n\n function makeGetter(name) {\n return function () {\n return this._data[name];\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 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 duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {\n var duration = create__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.s && ['s', 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 duration_humanize__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 duration_humanize__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 return true;\n }\n\n function humanize (withSuffix) {\n var locale = this.localeData();\n var output = duration_humanize__relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var iso_string__abs = Math.abs;\n\n function iso_string__toISOString() {\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 var seconds = iso_string__abs(this._milliseconds) / 1000;\n var days = iso_string__abs(this._days);\n var months = iso_string__abs(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;\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 return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n }\n\n var duration_prototype__proto = Duration.prototype;\n\n duration_prototype__proto.abs = duration_abs__abs;\n duration_prototype__proto.add = duration_add_subtract__add;\n duration_prototype__proto.subtract = duration_add_subtract__subtract;\n duration_prototype__proto.as = as;\n duration_prototype__proto.asMilliseconds = asMilliseconds;\n duration_prototype__proto.asSeconds = asSeconds;\n duration_prototype__proto.asMinutes = asMinutes;\n duration_prototype__proto.asHours = asHours;\n duration_prototype__proto.asDays = asDays;\n duration_prototype__proto.asWeeks = asWeeks;\n duration_prototype__proto.asMonths = asMonths;\n duration_prototype__proto.asYears = asYears;\n duration_prototype__proto.valueOf = duration_as__valueOf;\n duration_prototype__proto._bubble = bubble;\n duration_prototype__proto.get = duration_get__get;\n duration_prototype__proto.milliseconds = milliseconds;\n duration_prototype__proto.seconds = seconds;\n duration_prototype__proto.minutes = minutes;\n duration_prototype__proto.hours = hours;\n duration_prototype__proto.days = days;\n duration_prototype__proto.weeks = weeks;\n duration_prototype__proto.months = months;\n duration_prototype__proto.years = years;\n duration_prototype__proto.humanize = humanize;\n duration_prototype__proto.toISOString = iso_string__toISOString;\n duration_prototype__proto.toString = iso_string__toISOString;\n duration_prototype__proto.toJSON = iso_string__toISOString;\n duration_prototype__proto.locale = locale;\n duration_prototype__proto.localeData = localeData;\n\n // Deprecations\n duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);\n duration_prototype__proto.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 utils_hooks__hooks.version = '2.15.1';\n\n setHookCallback(local__createLocal);\n\n utils_hooks__hooks.fn = momentPrototype;\n utils_hooks__hooks.min = min;\n utils_hooks__hooks.max = max;\n utils_hooks__hooks.now = now;\n utils_hooks__hooks.utc = create_utc__createUTC;\n utils_hooks__hooks.unix = moment__createUnix;\n utils_hooks__hooks.months = lists__listMonths;\n utils_hooks__hooks.isDate = isDate;\n utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;\n utils_hooks__hooks.invalid = valid__createInvalid;\n utils_hooks__hooks.duration = create__createDuration;\n utils_hooks__hooks.isMoment = isMoment;\n utils_hooks__hooks.weekdays = lists__listWeekdays;\n utils_hooks__hooks.parseZone = moment__createInZone;\n utils_hooks__hooks.localeData = locale_locales__getLocale;\n utils_hooks__hooks.isDuration = isDuration;\n utils_hooks__hooks.monthsShort = lists__listMonthsShort;\n utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;\n utils_hooks__hooks.defineLocale = defineLocale;\n utils_hooks__hooks.updateLocale = updateLocale;\n utils_hooks__hooks.locales = locale_locales__listLocales;\n utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;\n utils_hooks__hooks.normalizeUnits = normalizeUnits;\n utils_hooks__hooks.relativeTimeRounding = duration_humanize__getSetRelativeTimeRounding;\n utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;\n utils_hooks__hooks.calendarFormat = getCalendarFormat;\n utils_hooks__hooks.prototype = momentPrototype;\n\n var _moment = utils_hooks__hooks;\n\n return _moment;\n\n}));","//! moment-timezone.js\n//! version : 0.4.1\n//! author : Tim Wood\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Do not load moment-timezone a second time.\n\tif (moment.tz !== undefined) {\n\t\tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t\treturn moment;\n\t}\n\n\tvar VERSION = \"0.4.1\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tnames = {},\n\n\t\tmomentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tname = packed[i].split('|')[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\treturn !!(m._a && (m._tzm === undefined));\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.offset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name) {\n\t\tif (name) {\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\tloadData({\n\t\t\"version\": \"2015g\",\n\t\t\"zones\": [\n\t\t\t\"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q\",\n\t\t\t\"Africa/Accra|LMT GMT GHST|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE\",\n\t\t\t\"Africa/Addis_Ababa|LMT EAT BEAT BEAUT|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ\",\n\t\t\t\"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0\",\n\t\t\t\"Africa/Bangui|LMT WAT|-d.A -10|01|-22y0d.A\",\n\t\t\t\"Africa/Bissau|LMT WAT GMT|12.k 10 0|012|-2ldWV.E 2xonV.E\",\n\t\t\t\"Africa/Blantyre|LMT CAT|-2a.k -20|01|-2GJea.k\",\n\t\t\t\"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0\",\n\t\t\t\"Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0\",\n\t\t\t\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1y7p0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Africa/El_Aaiun|LMT WAT WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0\",\n\t\t\t\"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0\",\n\t\t\t\"Africa/Juba|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0\",\n\t\t\t\"Africa/Monrovia|MMT LRT GMT|H.8 I.u 0|012|-23Lzg.Q 29s01.m\",\n\t\t\t\"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0\",\n\t\t\t\"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00\",\n\t\t\t\"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00\",\n\t\t\t\"Africa/Windhoek|SWAT SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0\",\n\t\t\t\"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Anchorage|CAT CAWT CAPT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Anguilla|LMT AST|46.4 40|01|-2kNvR.U\",\n\t\t\t\"America/Araguaina|LMT BRT BRST|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0\",\n\t\t\t\"America/Argentina/Buenos_Aires|CMT ART ARST ART ARST|4g.M 40 30 30 20|0121212121212121212121212121212121212121213434343434343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0\",\n\t\t\t\"America/Argentina/Catamarca|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\n\t\t\t\"America/Argentina/Cordoba|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0\",\n\t\t\t\"America/Argentina/Jujuy|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 g0p0 10M0 j3c0 uL0\",\n\t\t\t\"America/Argentina/La_Rioja|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\n\t\t\t\"America/Argentina/Mendoza|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|0121212121212121212121212121212121212121213434345656543235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 g0p0 10M0 agM0 Op0 7TX0 uL0\",\n\t\t\t\"America/Argentina/Rio_Gallegos|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\n\t\t\t\"America/Argentina/Salta|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0\",\n\t\t\t\"America/Argentina/San_Juan|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ak00 m10 8lb0 uL0\",\n\t\t\t\"America/Argentina/San_Luis|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456536353465653|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 kin0 10M0 ak00 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0\",\n\t\t\t\"America/Argentina/Tucuman|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|012121212121212121212121212121212121212121343434345434323534343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 4N0 8BX0 uL0 1qN0 WL0\",\n\t\t\t\"America/Argentina/Ushuaia|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ajA0 8p0 8zb0 uL0\",\n\t\t\t\"America/Aruba|LMT ANT AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d\",\n\t\t\t\"America/Asuncion|AMT PYT PYT PYST|3O.E 40 30 30|012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0\",\n\t\t\t\"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0\",\n\t\t\t\"America/Bahia|LMT BRT BRST|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0\",\n\t\t\t\"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0\",\n\t\t\t\"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0\",\n\t\t\t\"America/Belem|LMT BRT BRST|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0\",\n\t\t\t\"America/Belize|LMT CST CHDT CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0\",\n\t\t\t\"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0\",\n\t\t\t\"America/Boa_Vista|LMT AMT AMST|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0\",\n\t\t\t\"America/Bogota|BMT COT COST|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0\",\n\t\t\t\"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Cambridge_Bay|zzz MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Campo_Grande|LMT AMT AMST|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0\",\n\t\t\t\"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0\",\n\t\t\t\"America/Caracas|CMT VET VET|4r.E 4u 40|0121|-2kV7w.k 28KM2.k 1IwOu\",\n\t\t\t\"America/Cayenne|LMT GFT GFT|3t.k 40 30|012|-2mrwu.E 2gWou.E\",\n\t\t\t\"America/Cayman|KMT EST EDT|57.b 50 40|0121212121212121212121212121212121212121212121|-2l1uQ.N 4duNQ.N 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0\",\n\t\t\t\"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0\",\n\t\t\t\"America/Creston|MST PST|70 80|010|-29DR0 43B0\",\n\t\t\t\"America/Cuiaba|LMT AMT AMST|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0\",\n\t\t\t\"America/Danmarkshavn|LMT WGT WGST GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0\",\n\t\t\t\"America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0\",\n\t\t\t\"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Eirunepe|LMT ACT ACST AMT|4D.s 50 40 40|0121212121212121212121212121212131|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0\",\n\t\t\t\"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0\",\n\t\t\t\"America/Ensenada|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0\",\n\t\t\t\"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Fortaleza|LMT BRT BRST|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0\",\n\t\t\t\"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Godthab|LMT WGT WGST|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0\",\n\t\t\t\"America/Guayaquil|QMT ECT|5e 50|01|-1yVSK\",\n\t\t\t\"America/Guyana|LMT GBGT GYT GYT GYT|3Q.E 3J 3J 30 40|01234|-2dvU7.k 24JzQ.k mlc0 Bxbf\",\n\t\t\t\"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0\",\n\t\t\t\"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0\",\n\t\t\t\"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Inuvik|zzz PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Iqaluit|zzz EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0\",\n\t\t\t\"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/La_Paz|CMT BOST BOT|4w.A 3w.A 40|012|-1x37r.o 13b0\",\n\t\t\t\"America/Lima|LMT PET PEST|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0\",\n\t\t\t\"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp0 1Vb0 3dB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Maceio|LMT BRT BRST|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0\",\n\t\t\t\"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0\",\n\t\t\t\"America/Manaus|LMT AMT AMST|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0\",\n\t\t\t\"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0\",\n\t\t\t\"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0\",\n\t\t\t\"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0\",\n\t\t\t\"America/Metlakatla|PST PWT PPT PDT|80 70 70 70|0120303030303030303030303030303030|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0\",\n\t\t\t\"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0\",\n\t\t\t\"America/Miquelon|LMT AST PMST PMDT|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0\",\n\t\t\t\"America/Montevideo|MMT UYT UYHST UYST UYT UYHST|3I.I 3u 30 20 30 2u|012121212121212121212121213434343434345454543453434343434343434343434343434343434343434|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0\",\n\t\t\t\"America/Montreal|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Noronha|LMT FNT FNST|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0\",\n\t\t\t\"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Panama|CMT EST|5j.A 50|01|-2uduE.o\",\n\t\t\t\"America/Pangnirtung|zzz AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0\",\n\t\t\t\"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0\",\n\t\t\t\"America/Port-au-Prince|PPMT EST EDT|4N 50 40|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Porto_Acre|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0\",\n\t\t\t\"America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0\",\n\t\t\t\"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0\",\n\t\t\t\"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Rankin_Inlet|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Recife|LMT BRT BRST|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0\",\n\t\t\t\"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0\",\n\t\t\t\"America/Resolute|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Santa_Isabel|LMT MST PST PDT PWT PPT|7D.s 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0\",\n\t\t\t\"America/Santarem|LMT AMT AMST BRT|3C.M 40 30 30|0121212121212121212121212121213|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0\",\n\t\t\t\"America/Santiago|SMT CLT CLT CLST CLST CLT|4G.K 50 40 40 30 30|01020313131313121242124242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424245|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0\",\n\t\t\t\"America/Santo_Domingo|SDMT EST EDT EHDT AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00\",\n\t\t\t\"America/Sao_Paulo|LMT BRT BRST|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0\",\n\t\t\t\"America/Scoresbysund|LMT CGT CGST EGST EGT|1r.Q 20 10 0 10|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0\",\n\t\t\t\"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0\",\n\t\t\t\"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"America/Yellowknife|zzz MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"Antarctica/Casey|zzz AWST CAST|0 -80 -b0|012121|-2q00 1DjS0 T90 40P0 KL0\",\n\t\t\t\"Antarctica/Davis|zzz DAVT DAVT|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0\",\n\t\t\t\"Antarctica/DumontDUrville|zzz PMT DDUT|0 -a0 -a0|0102|-U0o0 cfq0 bFm0\",\n\t\t\t\"Antarctica/Macquarie|AEST AEDT zzz MIST|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0\",\n\t\t\t\"Antarctica/Mawson|zzz MAWT MAWT|0 -60 -50|012|-CEo0 2fyk0\",\n\t\t\t\"Antarctica/McMurdo|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00\",\n\t\t\t\"Antarctica/Palmer|zzz ARST ART ART ARST CLT CLST CLT|0 30 40 30 20 40 30 30|012121212123435656565656565656565656565656565656565656565656565656565656565656567|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0\",\n\t\t\t\"Antarctica/Rothera|zzz ROTT|0 30|01|gOo0\",\n\t\t\t\"Antarctica/Syowa|zzz SYOT|0 -30|01|-vs00\",\n\t\t\t\"Antarctica/Troll|zzz UTC CEST|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Antarctica/Vostok|zzz VOST|0 -60|01|-tjA0\",\n\t\t\t\"Arctic/Longyearbyen|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Asia/Aden|LMT AST|-36.Q -30|01|-TvD6.Q\",\n\t\t\t\"Asia/Almaty|LMT ALMT ALMT ALMST|-57.M -50 -60 -70|0123232323232323232323232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3Cl0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0\",\n\t\t\t\"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0\",\n\t\t\t\"Asia/Anadyr|LMT ANAT ANAT ANAST ANAST ANAST ANAT|-bN.U -c0 -d0 -e0 -d0 -c0 -b0|01232414141414141414141561414141414141414141414141414141414141561|-1PcbN.U eUnN.U 23CL0 1db0 1cN0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0\",\n\t\t\t\"Asia/Aqtau|LMT FORT FORT SHET SHET SHEST AQTT AQTST AQTST AQTT|-3l.4 -40 -50 -50 -60 -60 -50 -60 -50 -40|012345353535353535353536767676898989898989898989896|-1Pc3l.4 eUnl.4 1jcL0 JDc0 1cL0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cN0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0\",\n\t\t\t\"Asia/Aqtobe|LMT AKTT AKTT AKTST AKTT AQTT AQTST|-3M.E -40 -50 -60 -60 -50 -60|01234323232323232323232565656565656565656565656565|-1Pc3M.E eUnM.E 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0\",\n\t\t\t\"Asia/Ashgabat|LMT ASHT ASHT ASHST ASHST TMT TMT|-3R.w -40 -50 -60 -50 -40 -50|012323232323232323232324156|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 ba0 xC0\",\n\t\t\t\"Asia/Baghdad|BMT AST ADT|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0\",\n\t\t\t\"Asia/Bahrain|LMT GST AST|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8\",\n\t\t\t\"Asia/Baku|LMT BAKT BAKT BAKST BAKST AZST AZT AZT AZST|-3j.o -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245657878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 10K0 c30 1cJ0 1cL0 8wu0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Asia/Bangkok|BMT ICT|-6G.4 -70|01|-218SG.4\",\n\t\t\t\"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0\",\n\t\t\t\"Asia/Bishkek|LMT FRUT FRUT FRUST FRUST KGT KGST KGT|-4W.o -50 -60 -70 -60 -50 -60 -60|01232323232323232323232456565656565656565656565656567|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11c0 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 T8u\",\n\t\t\t\"Asia/Brunei|LMT BNT BNT|-7D.E -7u -80|012|-1KITD.E gDc9.E\",\n\t\t\t\"Asia/Calcutta|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0\",\n\t\t\t\"Asia/Chita|LMT YAKT YAKT YAKST YAKST YAKT IRKT|-7x.Q -80 -90 -a0 -90 -a0 -80|012323232323232323232324123232323232323232323232323232323232323256|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Choibalsan|LMT ULAT ULAT CHOST CHOT CHOT CHOST|-7C -70 -80 -a0 -90 -80 -90|0123434343434343434343434343434343434343434343456565656565656565656565656565656565656565656565|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0\",\n\t\t\t\"Asia/Chongqing|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0\",\n\t\t\t\"Asia/Colombo|MMT IST IHST IST LKT LKT|-5j.w -5u -60 -6u -6u -60|01231451|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu\",\n\t\t\t\"Asia/Dacca|HMT BURT IST DACT BDT BDST|-5R.k -6u -5u -60 -60 -70|01213454|-18LFR.k 1unn.k HB0 m6n0 LqMu 1x6n0 1i00\",\n\t\t\t\"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0\",\n\t\t\t\"Asia/Dili|LMT TLT JST TLT WITA|-8m.k -80 -90 -90 -80|012343|-2le8m.k 1dnXm.k 8HA0 1ew00 Xld0\",\n\t\t\t\"Asia/Dubai|LMT GST|-3F.c -40|01|-21JfF.c\",\n\t\t\t\"Asia/Dushanbe|LMT DUST DUST DUSST DUSST TJT|-4z.c -50 -60 -70 -60 -50|0123232323232323232323245|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 14N0\",\n\t\t\t\"Asia/Gaza|EET EET EEST IST IDT|-20 -30 -30 -20 -30|010101010102020202020202020202023434343434343434343434343430202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0\",\n\t\t\t\"Asia/Hebron|EET EET EEST IST IDT|-20 -30 -30 -20 -30|01010101010202020202020202020202343434343434343434343434343020202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0\",\n\t\t\t\"Asia/Ho_Chi_Minh|LMT PLMT ICT IDT JST|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0\",\n\t\t\t\"Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0\",\n\t\t\t\"Asia/Hovd|LMT HOVT HOVT HOVST|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0\",\n\t\t\t\"Asia/Irkutsk|IMT IRKT IRKT IRKST IRKST IRKT|-6V.5 -70 -80 -90 -80 -90|012323232323232323232324123232323232323232323232323232323232323252|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Istanbul|IMT EET EEST TRST TRT|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1df0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Asia/Jakarta|BMT JAVT WIB JST WIB WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu\",\n\t\t\t\"Asia/Jayapura|LMT WIT ACST|-9m.M -90 -9u|0121|-1uu9m.M sMMm.M L4nu\",\n\t\t\t\"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0\",\n\t\t\t\"Asia/Kabul|AFT AFT|-40 -4u|01|-10Qs0\",\n\t\t\t\"Asia/Kamchatka|LMT PETT PETT PETST PETST|-ay.A -b0 -c0 -d0 -c0|01232323232323232323232412323232323232323232323232323232323232412|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0\",\n\t\t\t\"Asia/Karachi|LMT IST IST KART PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy01 1cL0 dK0X 11b0 1610 1jX0\",\n\t\t\t\"Asia/Kashgar|LMT XJT|-5O.k -60|01|-1GgtO.k\",\n\t\t\t\"Asia/Kathmandu|LMT IST NPT|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g\",\n\t\t\t\"Asia/Khandyga|LMT YAKT YAKT YAKST YAKST VLAT VLAST VLAT YAKT|-92.d -80 -90 -a0 -90 -a0 -b0 -b0 -a0|01232323232323232323232412323232323232323232323232565656565656565782|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0\",\n\t\t\t\"Asia/Krasnoyarsk|LMT KRAT KRAT KRAST KRAST KRAT|-6b.q -60 -70 -80 -70 -80|012323232323232323232324123232323232323232323232323232323232323252|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Kuala_Lumpur|SMT MALT MALST MALT MALT JST MYT|-6T.p -70 -7k -7k -7u -90 -80|01234546|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu 1so1u\",\n\t\t\t\"Asia/Kuching|LMT BORT BORT BORTST JST MYT|-7l.k -7u -80 -8k -90 -80|01232323232323232425|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0 1so10\",\n\t\t\t\"Asia/Macao|LMT MOT MOST CST|-7y.k -80 -90 -80|0121212121212121212121212121212121212121213|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0 KEp0\",\n\t\t\t\"Asia/Magadan|LMT MAGT MAGT MAGST MAGST MAGT|-a3.c -a0 -b0 -c0 -b0 -c0|012323232323232323232324123232323232323232323232323232323232323251|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Makassar|LMT MMT WITA JST|-7V.A -7V.A -80 -90|01232|-21JjV.A vfc0 myLV.A 8ML0\",\n\t\t\t\"Asia/Manila|PHT PHST JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0\",\n\t\t\t\"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Asia/Novokuznetsk|LMT KRAT KRAT KRAST KRAST NOVST NOVT NOVT|-5M.M -60 -70 -80 -70 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232325672|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0 8Hz0\",\n\t\t\t\"Asia/Novosibirsk|LMT NOVT NOVT NOVST NOVST|-5v.E -60 -70 -80 -70|0123232323232323232323241232341414141414141414141414141414141414121|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Omsk|LMT OMST OMST OMSST OMSST OMST|-4R.u -50 -60 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232323252|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Oral|LMT URAT URAT URAST URAT URAST ORAT ORAST ORAT|-3p.o -40 -50 -60 -60 -50 -40 -50 -50|012343232323232323251516767676767676767676767676768|-1Pc3p.o eUnp.o 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0\",\n\t\t\t\"Asia/Pontianak|LMT PMT WIB JST WIB WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu\",\n\t\t\t\"Asia/Pyongyang|LMT KST JCST JST KST|-8n -8u -90 -90 -90|012341|-2um8n 97XR 12FXu jdA0 2Onc0\",\n\t\t\t\"Asia/Qyzylorda|LMT KIZT KIZT KIZST KIZT QYZT QYZT QYZST|-4l.Q -40 -50 -60 -60 -50 -60 -70|012343232323232323232325676767676767676767676767676|-1Pc4l.Q eUol.Q 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 dC0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0\",\n\t\t\t\"Asia/Rangoon|RMT BURT JST MMT|-6o.E -6u -90 -6u|0123|-21Jio.E SmnS.E 7j9u\",\n\t\t\t\"Asia/Sakhalin|LMT JCST JST SAKT SAKST SAKST SAKT|-9u.M -90 -90 -b0 -c0 -b0 -a0|0123434343434343434343435634343434343565656565656565656565656565636|-2AGVu.M 1iaMu.M je00 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o10 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Samarkand|LMT SAMT SAMT SAMST TAST UZST UZT|-4r.R -40 -50 -60 -60 -60 -50|01234323232323232323232356|-1Pc4r.R eUor.R 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11x0 bf0\",\n\t\t\t\"Asia/Seoul|LMT KST JCST JST KST KDT KDT|-8r.Q -8u -90 -90 -90 -9u -a0|01234151515151515146464|-2um8r.Q 97XV.Q 12FXu jjA0 kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0\",\n\t\t\t\"Asia/Singapore|SMT MALT MALST MALT MALT JST SGT SGT|-6T.p -70 -7k -7k -7u -90 -7u -80|012345467|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu Mspu DTA0\",\n\t\t\t\"Asia/Srednekolymsk|LMT MAGT MAGT MAGST MAGST MAGT SRET|-ae.Q -a0 -b0 -c0 -b0 -c0 -b0|012323232323232323232324123232323232323232323232323232323232323256|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Taipei|JWST JST CST CDT|-80 -90 -80 -90|01232323232323232323232323232323232323232|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0\",\n\t\t\t\"Asia/Tashkent|LMT TAST TAST TASST TASST UZST UZT|-4B.b -50 -60 -70 -60 -60 -50|01232323232323232323232456|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11y0 bf0\",\n\t\t\t\"Asia/Tbilisi|TBMT TBIT TBIT TBIST TBIST GEST GET GET GEST|-2X.b -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565787878787878787878567|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 3y0 19f0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cM0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0\",\n\t\t\t\"Asia/Tehran|LMT TMT IRST IRST IRDT IRDT|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0\",\n\t\t\t\"Asia/Thimbu|LMT IST BTT|-5W.A -5u -60|012|-Su5W.A 1BGMs.A\",\n\t\t\t\"Asia/Tokyo|JCST JST JDT|-90 -90 -a0|0121212121|-1iw90 pKq0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0\",\n\t\t\t\"Asia/Ulaanbaatar|LMT ULAT ULAT ULAST|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0\",\n\t\t\t\"Asia/Ust-Nera|LMT YAKT YAKT MAGST MAGT MAGST MAGT MAGT VLAT VLAT|-9w.S -80 -90 -c0 -b0 -b0 -a0 -c0 -b0 -a0|0123434343434343434343456434343434343434343434343434343434343434789|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0\",\n\t\t\t\"Asia/Vladivostok|LMT VLAT VLAT VLAST VLAST VLAT|-8L.v -90 -a0 -b0 -a0 -b0|012323232323232323232324123232323232323232323232323232323232323252|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Yakutsk|LMT YAKT YAKT YAKST YAKST YAKT|-8C.W -80 -90 -a0 -90 -a0|012323232323232323232324123232323232323232323232323232323232323252|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Yekaterinburg|LMT PMT SVET SVET SVEST SVEST YEKT YEKST YEKT|-42.x -3J.5 -40 -50 -60 -50 -50 -60 -60|0123434343434343434343435267676767676767676767676767676767676767686|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Asia/Yerevan|LMT YERT YERT YERST YERST AMST AMT AMT AMST|-2W -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565657878787878787878787878787878787|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1am0 2r0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fb0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0\",\n\t\t\t\"Atlantic/Azores|HMT AZOT AZOST AZOMT AZOT AZOST WET|1S.w 20 10 0 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545456545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"Atlantic/Canary|LMT CANT WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Atlantic/Cape_Verde|LMT CVT CVST CVT|1y.4 20 10 10|01213|-2xomp.U 1qOMp.U 7zX0 1djf0\",\n\t\t\t\"Atlantic/Faeroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Atlantic/Madeira|FMT MADT MADST MADMT WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Atlantic/Reykjavik|LMT IST ISST GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0\",\n\t\t\t\"Atlantic/South_Georgia|GST|20|0|\",\n\t\t\t\"Atlantic/Stanley|SMT FKT FKST FKT FKST|3P.o 40 30 30 20|0121212121212134343212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 U10 1qM0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10\",\n\t\t\t\"Australia/ACT|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0\",\n\t\t\t\"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0\",\n\t\t\t\"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0\",\n\t\t\t\"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0\",\n\t\t\t\"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0\",\n\t\t\t\"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0\",\n\t\t\t\"Australia/Eucla|ACWST ACWDT|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0\",\n\t\t\t\"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0\",\n\t\t\t\"Australia/LHI|AEST LHST LHDT LHDT|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu\",\n\t\t\t\"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0\",\n\t\t\t\"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0\",\n\t\t\t\"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0\",\n\t\t\t\"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"Chile/EasterIsland|EMT EAST EASST EAST EASST EAST|7h.s 70 60 60 50 50|012121212121212121212121212123434343434343434343434343434343434343434343434343434343434343434345|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0\",\n\t\t\t\"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"EST|EST|50|0|\",\n\t\t\t\"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"Eire|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Etc/GMT+0|GMT|0|0|\",\n\t\t\t\"Etc/GMT+1|GMT+1|10|0|\",\n\t\t\t\"Etc/GMT+10|GMT+10|a0|0|\",\n\t\t\t\"Etc/GMT+11|GMT+11|b0|0|\",\n\t\t\t\"Etc/GMT+12|GMT+12|c0|0|\",\n\t\t\t\"Etc/GMT+2|GMT+2|20|0|\",\n\t\t\t\"Etc/GMT+3|GMT+3|30|0|\",\n\t\t\t\"Etc/GMT+4|GMT+4|40|0|\",\n\t\t\t\"Etc/GMT+5|GMT+5|50|0|\",\n\t\t\t\"Etc/GMT+6|GMT+6|60|0|\",\n\t\t\t\"Etc/GMT+7|GMT+7|70|0|\",\n\t\t\t\"Etc/GMT+8|GMT+8|80|0|\",\n\t\t\t\"Etc/GMT+9|GMT+9|90|0|\",\n\t\t\t\"Etc/GMT-1|GMT-1|-10|0|\",\n\t\t\t\"Etc/GMT-10|GMT-10|-a0|0|\",\n\t\t\t\"Etc/GMT-11|GMT-11|-b0|0|\",\n\t\t\t\"Etc/GMT-12|GMT-12|-c0|0|\",\n\t\t\t\"Etc/GMT-13|GMT-13|-d0|0|\",\n\t\t\t\"Etc/GMT-14|GMT-14|-e0|0|\",\n\t\t\t\"Etc/GMT-2|GMT-2|-20|0|\",\n\t\t\t\"Etc/GMT-3|GMT-3|-30|0|\",\n\t\t\t\"Etc/GMT-4|GMT-4|-40|0|\",\n\t\t\t\"Etc/GMT-5|GMT-5|-50|0|\",\n\t\t\t\"Etc/GMT-6|GMT-6|-60|0|\",\n\t\t\t\"Etc/GMT-7|GMT-7|-70|0|\",\n\t\t\t\"Etc/GMT-8|GMT-8|-80|0|\",\n\t\t\t\"Etc/GMT-9|GMT-9|-90|0|\",\n\t\t\t\"Etc/UCT|UCT|0|0|\",\n\t\t\t\"Etc/UTC|UTC|0|0|\",\n\t\t\t\"Europe/Amsterdam|AMT NST NEST NET CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Belfast|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Bratislava|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Busingen|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|0123232323232323232345454676767676767676767623232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1ty0 2bD0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET FET|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454545454676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|01010101010101010101010121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-28dd0 11A0 1go0 19A0 1co0 1dA0 b1A0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 iyo0 Rc0 18o0 1hc0 1io0 1a00 14o0 5aL0 MM0 1vc0 17A0 1i00 1bc0 1eo0 17d0 1in0 17A0 6hA0 10N0 XIL0 1a10 1in0 17d0 19X0 1cN0 1fz0 1a10 1fX0 1cp0 1cO0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 1cM0 1cM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1cp0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Minsk|MMT EET MSK CEST CET MSD EEST FET|-1O -20 -30 -20 -10 -40 -30 -30|012343432525252525252525252616161616161616161616161616161616161616172|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cK0 1cM0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hy0\",\n\t\t\t\"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Moscow|MMT MMT MST MDST MSD MSK MSM EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c20 imv.j 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 16K0 1iO0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1C10 Lz0 1zd0 On0 1C10 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Samara|LMT SAMT SAMT KUYT KUYST MSD MSK EEST KUYT SAMST SAMST|-3k.k -30 -40 -40 -50 -40 -30 -30 -30 -50 -40|012343434343434343435656782929292929292929292929292929292929292a12|-22WNk.k qHak.k bcn0 1Qqo0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cN0 8o0 14j0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0\",\n\t\t\t\"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0\",\n\t\t\t\"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646464647373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Volgograd|LMT TSAT STAT STAT VOLT VOLST VOLST VOLT MSD MSK MSK|-2V.E -30 -30 -40 -40 -50 -40 -30 -40 -30 -40|0123454545454545454546767489898989898989898989898989898989898989a9|-21IqV.E cLXV.E cEM0 1gqn0 Lco0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cJ0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0\",\n\t\t\t\"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"Europe/Zaporozhye|CUT EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"HST|HST|a0|0|\",\n\t\t\t\"Indian/Chagos|LMT IOT IOT|-4N.E -50 -60|012|-2xosN.E 3AGLN.E\",\n\t\t\t\"Indian/Christmas|CXT|-70|0|\",\n\t\t\t\"Indian/Cocos|CCT|-6u|0|\",\n\t\t\t\"Indian/Kerguelen|zzz TFT|0 -50|01|-MG00\",\n\t\t\t\"Indian/Mahe|LMT SCT|-3F.M -40|01|-2yO3F.M\",\n\t\t\t\"Indian/Maldives|MMT MVT|-4S -50|01|-olgS\",\n\t\t\t\"Indian/Mauritius|LMT MUT MUST|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0\",\n\t\t\t\"Indian/Reunion|LMT RET|-3F.Q -40|01|-2mDDF.Q\",\n\t\t\t\"Kwajalein|MHT KWAT MHT|-b0 c0 -c0|012|-AX0 W9X0\",\n\t\t\t\"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\n\t\t\t\"MST|MST|70|0|\",\n\t\t\t\"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"NZ-CHAT|CHAST CHAST CHADT|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00\",\n\t\t\t\"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\n\t\t\t\"Pacific/Apia|LMT WSST SST SDT WSDT WSST|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00\",\n\t\t\t\"Pacific/Bougainville|PGT JST BST|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0\",\n\t\t\t\"Pacific/Chuuk|CHUT|-a0|0|\",\n\t\t\t\"Pacific/Efate|LMT VUT VUST|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0\",\n\t\t\t\"Pacific/Enderbury|PHOT PHOT PHOT|c0 b0 -d0|012|nIc0 B8n0\",\n\t\t\t\"Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0\",\n\t\t\t\"Pacific/Fiji|LMT FJT FJST|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0\",\n\t\t\t\"Pacific/Funafuti|TVT|-c0|0|\",\n\t\t\t\"Pacific/Galapagos|LMT ECT GALT|5W.o 50 60|012|-1yVS1.A 2dTz1.A\",\n\t\t\t\"Pacific/Gambier|LMT GAMT|8X.M 90|01|-2jof0.c\",\n\t\t\t\"Pacific/Guadalcanal|LMT SBT|-aD.M -b0|01|-2joyD.M\",\n\t\t\t\"Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0\",\n\t\t\t\"Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0\",\n\t\t\t\"Pacific/Kiritimati|LINT LINT LINT|aE a0 -e0|012|nIaE B8nk\",\n\t\t\t\"Pacific/Kosrae|KOST KOST|-b0 -c0|010|-AX0 1bdz0\",\n\t\t\t\"Pacific/Majuro|MHT MHT|-b0 -c0|01|-AX0\",\n\t\t\t\"Pacific/Marquesas|LMT MART|9i 9u|01|-2joeG\",\n\t\t\t\"Pacific/Midway|LMT NST BST SST|bm.M b0 b0 b0|0123|-2nDMB.c 2gVzB.c EyM0\",\n\t\t\t\"Pacific/Nauru|LMT NRT JST NRT|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu\",\n\t\t\t\"Pacific/Niue|NUT NUT NUT|bk bu b0|012|-KfME 17y0a\",\n\t\t\t\"Pacific/Norfolk|NMT NFT NFST NFT|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0\",\n\t\t\t\"Pacific/Noumea|LMT NCT NCST|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0\",\n\t\t\t\"Pacific/Palau|PWT|-90|0|\",\n\t\t\t\"Pacific/Pitcairn|PNT PST|8u 80|01|18Vku\",\n\t\t\t\"Pacific/Pohnpei|PONT|-b0|0|\",\n\t\t\t\"Pacific/Port_Moresby|PGT|-a0|0|\",\n\t\t\t\"Pacific/Rarotonga|CKT CKHST CKT|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu\",\n\t\t\t\"Pacific/Tahiti|LMT TAHT|9W.g a0|01|-2joe1.I\",\n\t\t\t\"Pacific/Tarawa|GILT|-c0|0|\",\n\t\t\t\"Pacific/Tongatapu|TOT TOT TOST|-ck -d0 -e0|01212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0\",\n\t\t\t\"Pacific/Wake|WAKT|-c0|0|\",\n\t\t\t\"Pacific/Wallis|WFT|-c0|0|\",\n\t\t\t\"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\"\n\t\t],\n\t\t\"links\": [\n\t\t\t\"Africa/Abidjan|Africa/Bamako\",\n\t\t\t\"Africa/Abidjan|Africa/Banjul\",\n\t\t\t\"Africa/Abidjan|Africa/Conakry\",\n\t\t\t\"Africa/Abidjan|Africa/Dakar\",\n\t\t\t\"Africa/Abidjan|Africa/Freetown\",\n\t\t\t\"Africa/Abidjan|Africa/Lome\",\n\t\t\t\"Africa/Abidjan|Africa/Nouakchott\",\n\t\t\t\"Africa/Abidjan|Africa/Ouagadougou\",\n\t\t\t\"Africa/Abidjan|Africa/Sao_Tome\",\n\t\t\t\"Africa/Abidjan|Africa/Timbuktu\",\n\t\t\t\"Africa/Abidjan|Atlantic/St_Helena\",\n\t\t\t\"Africa/Addis_Ababa|Africa/Asmara\",\n\t\t\t\"Africa/Addis_Ababa|Africa/Asmera\",\n\t\t\t\"Africa/Addis_Ababa|Africa/Dar_es_Salaam\",\n\t\t\t\"Africa/Addis_Ababa|Africa/Djibouti\",\n\t\t\t\"Africa/Addis_Ababa|Africa/Kampala\",\n\t\t\t\"Africa/Addis_Ababa|Africa/Mogadishu\",\n\t\t\t\"Africa/Addis_Ababa|Africa/Nairobi\",\n\t\t\t\"Africa/Addis_Ababa|Indian/Antananarivo\",\n\t\t\t\"Africa/Addis_Ababa|Indian/Comoro\",\n\t\t\t\"Africa/Addis_Ababa|Indian/Mayotte\",\n\t\t\t\"Africa/Bangui|Africa/Brazzaville\",\n\t\t\t\"Africa/Bangui|Africa/Douala\",\n\t\t\t\"Africa/Bangui|Africa/Kinshasa\",\n\t\t\t\"Africa/Bangui|Africa/Lagos\",\n\t\t\t\"Africa/Bangui|Africa/Libreville\",\n\t\t\t\"Africa/Bangui|Africa/Luanda\",\n\t\t\t\"Africa/Bangui|Africa/Malabo\",\n\t\t\t\"Africa/Bangui|Africa/Niamey\",\n\t\t\t\"Africa/Bangui|Africa/Porto-Novo\",\n\t\t\t\"Africa/Blantyre|Africa/Bujumbura\",\n\t\t\t\"Africa/Blantyre|Africa/Gaborone\",\n\t\t\t\"Africa/Blantyre|Africa/Harare\",\n\t\t\t\"Africa/Blantyre|Africa/Kigali\",\n\t\t\t\"Africa/Blantyre|Africa/Lubumbashi\",\n\t\t\t\"Africa/Blantyre|Africa/Lusaka\",\n\t\t\t\"Africa/Blantyre|Africa/Maputo\",\n\t\t\t\"Africa/Cairo|Egypt\",\n\t\t\t\"Africa/Johannesburg|Africa/Maseru\",\n\t\t\t\"Africa/Johannesburg|Africa/Mbabane\",\n\t\t\t\"Africa/Juba|Africa/Khartoum\",\n\t\t\t\"Africa/Tripoli|Libya\",\n\t\t\t\"America/Adak|America/Atka\",\n\t\t\t\"America/Adak|US/Aleutian\",\n\t\t\t\"America/Anchorage|US/Alaska\",\n\t\t\t\"America/Anguilla|America/Antigua\",\n\t\t\t\"America/Anguilla|America/Dominica\",\n\t\t\t\"America/Anguilla|America/Grenada\",\n\t\t\t\"America/Anguilla|America/Guadeloupe\",\n\t\t\t\"America/Anguilla|America/Marigot\",\n\t\t\t\"America/Anguilla|America/Montserrat\",\n\t\t\t\"America/Anguilla|America/Port_of_Spain\",\n\t\t\t\"America/Anguilla|America/St_Barthelemy\",\n\t\t\t\"America/Anguilla|America/St_Kitts\",\n\t\t\t\"America/Anguilla|America/St_Lucia\",\n\t\t\t\"America/Anguilla|America/St_Thomas\",\n\t\t\t\"America/Anguilla|America/St_Vincent\",\n\t\t\t\"America/Anguilla|America/Tortola\",\n\t\t\t\"America/Anguilla|America/Virgin\",\n\t\t\t\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\n\t\t\t\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\n\t\t\t\"America/Argentina/Catamarca|America/Catamarca\",\n\t\t\t\"America/Argentina/Cordoba|America/Cordoba\",\n\t\t\t\"America/Argentina/Cordoba|America/Rosario\",\n\t\t\t\"America/Argentina/Jujuy|America/Jujuy\",\n\t\t\t\"America/Argentina/Mendoza|America/Mendoza\",\n\t\t\t\"America/Aruba|America/Curacao\",\n\t\t\t\"America/Aruba|America/Kralendijk\",\n\t\t\t\"America/Aruba|America/Lower_Princes\",\n\t\t\t\"America/Atikokan|America/Coral_Harbour\",\n\t\t\t\"America/Chicago|US/Central\",\n\t\t\t\"America/Denver|America/Shiprock\",\n\t\t\t\"America/Denver|Navajo\",\n\t\t\t\"America/Denver|US/Mountain\",\n\t\t\t\"America/Detroit|US/Michigan\",\n\t\t\t\"America/Edmonton|Canada/Mountain\",\n\t\t\t\"America/Ensenada|America/Tijuana\",\n\t\t\t\"America/Ensenada|Mexico/BajaNorte\",\n\t\t\t\"America/Fort_Wayne|America/Indiana/Indianapolis\",\n\t\t\t\"America/Fort_Wayne|America/Indianapolis\",\n\t\t\t\"America/Fort_Wayne|US/East-Indiana\",\n\t\t\t\"America/Halifax|Canada/Atlantic\",\n\t\t\t\"America/Havana|Cuba\",\n\t\t\t\"America/Indiana/Knox|America/Knox_IN\",\n\t\t\t\"America/Indiana/Knox|US/Indiana-Starke\",\n\t\t\t\"America/Jamaica|Jamaica\",\n\t\t\t\"America/Kentucky/Louisville|America/Louisville\",\n\t\t\t\"America/Los_Angeles|US/Pacific\",\n\t\t\t\"America/Los_Angeles|US/Pacific-New\",\n\t\t\t\"America/Manaus|Brazil/West\",\n\t\t\t\"America/Mazatlan|Mexico/BajaSur\",\n\t\t\t\"America/Mexico_City|Mexico/General\",\n\t\t\t\"America/Montreal|America/Toronto\",\n\t\t\t\"America/Montreal|Canada/Eastern\",\n\t\t\t\"America/New_York|US/Eastern\",\n\t\t\t\"America/Noronha|Brazil/DeNoronha\",\n\t\t\t\"America/Phoenix|US/Arizona\",\n\t\t\t\"America/Porto_Acre|America/Rio_Branco\",\n\t\t\t\"America/Porto_Acre|Brazil/Acre\",\n\t\t\t\"America/Regina|Canada/East-Saskatchewan\",\n\t\t\t\"America/Regina|Canada/Saskatchewan\",\n\t\t\t\"America/Santiago|Chile/Continental\",\n\t\t\t\"America/Sao_Paulo|Brazil/East\",\n\t\t\t\"America/St_Johns|Canada/Newfoundland\",\n\t\t\t\"America/Vancouver|Canada/Pacific\",\n\t\t\t\"America/Whitehorse|Canada/Yukon\",\n\t\t\t\"America/Winnipeg|Canada/Central\",\n\t\t\t\"Antarctica/McMurdo|Antarctica/South_Pole\",\n\t\t\t\"Antarctica/McMurdo|NZ\",\n\t\t\t\"Antarctica/McMurdo|Pacific/Auckland\",\n\t\t\t\"Arctic/Longyearbyen|Atlantic/Jan_Mayen\",\n\t\t\t\"Arctic/Longyearbyen|Europe/Oslo\",\n\t\t\t\"Asia/Aden|Asia/Kuwait\",\n\t\t\t\"Asia/Aden|Asia/Riyadh\",\n\t\t\t\"Asia/Ashgabat|Asia/Ashkhabad\",\n\t\t\t\"Asia/Bahrain|Asia/Qatar\",\n\t\t\t\"Asia/Bangkok|Asia/Phnom_Penh\",\n\t\t\t\"Asia/Bangkok|Asia/Vientiane\",\n\t\t\t\"Asia/Calcutta|Asia/Kolkata\",\n\t\t\t\"Asia/Chongqing|Asia/Chungking\",\n\t\t\t\"Asia/Chongqing|Asia/Harbin\",\n\t\t\t\"Asia/Chongqing|Asia/Shanghai\",\n\t\t\t\"Asia/Chongqing|PRC\",\n\t\t\t\"Asia/Dacca|Asia/Dhaka\",\n\t\t\t\"Asia/Dubai|Asia/Muscat\",\n\t\t\t\"Asia/Ho_Chi_Minh|Asia/Saigon\",\n\t\t\t\"Asia/Hong_Kong|Hongkong\",\n\t\t\t\"Asia/Istanbul|Europe/Istanbul\",\n\t\t\t\"Asia/Istanbul|Turkey\",\n\t\t\t\"Asia/Jerusalem|Asia/Tel_Aviv\",\n\t\t\t\"Asia/Jerusalem|Israel\",\n\t\t\t\"Asia/Kashgar|Asia/Urumqi\",\n\t\t\t\"Asia/Kathmandu|Asia/Katmandu\",\n\t\t\t\"Asia/Macao|Asia/Macau\",\n\t\t\t\"Asia/Makassar|Asia/Ujung_Pandang\",\n\t\t\t\"Asia/Nicosia|Europe/Nicosia\",\n\t\t\t\"Asia/Seoul|ROK\",\n\t\t\t\"Asia/Singapore|Singapore\",\n\t\t\t\"Asia/Taipei|ROC\",\n\t\t\t\"Asia/Tehran|Iran\",\n\t\t\t\"Asia/Thimbu|Asia/Thimphu\",\n\t\t\t\"Asia/Tokyo|Japan\",\n\t\t\t\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\n\t\t\t\"Atlantic/Faeroe|Atlantic/Faroe\",\n\t\t\t\"Atlantic/Reykjavik|Iceland\",\n\t\t\t\"Australia/ACT|Australia/Canberra\",\n\t\t\t\"Australia/ACT|Australia/NSW\",\n\t\t\t\"Australia/ACT|Australia/Sydney\",\n\t\t\t\"Australia/Adelaide|Australia/South\",\n\t\t\t\"Australia/Brisbane|Australia/Queensland\",\n\t\t\t\"Australia/Broken_Hill|Australia/Yancowinna\",\n\t\t\t\"Australia/Darwin|Australia/North\",\n\t\t\t\"Australia/Hobart|Australia/Tasmania\",\n\t\t\t\"Australia/LHI|Australia/Lord_Howe\",\n\t\t\t\"Australia/Melbourne|Australia/Victoria\",\n\t\t\t\"Australia/Perth|Australia/West\",\n\t\t\t\"Chile/EasterIsland|Pacific/Easter\",\n\t\t\t\"Eire|Europe/Dublin\",\n\t\t\t\"Etc/GMT+0|Etc/GMT\",\n\t\t\t\"Etc/GMT+0|Etc/GMT-0\",\n\t\t\t\"Etc/GMT+0|Etc/GMT0\",\n\t\t\t\"Etc/GMT+0|Etc/Greenwich\",\n\t\t\t\"Etc/GMT+0|GMT\",\n\t\t\t\"Etc/GMT+0|GMT+0\",\n\t\t\t\"Etc/GMT+0|GMT-0\",\n\t\t\t\"Etc/GMT+0|GMT0\",\n\t\t\t\"Etc/GMT+0|Greenwich\",\n\t\t\t\"Etc/UCT|UCT\",\n\t\t\t\"Etc/UTC|Etc/Universal\",\n\t\t\t\"Etc/UTC|Etc/Zulu\",\n\t\t\t\"Etc/UTC|UTC\",\n\t\t\t\"Etc/UTC|Universal\",\n\t\t\t\"Etc/UTC|Zulu\",\n\t\t\t\"Europe/Belfast|Europe/Guernsey\",\n\t\t\t\"Europe/Belfast|Europe/Isle_of_Man\",\n\t\t\t\"Europe/Belfast|Europe/Jersey\",\n\t\t\t\"Europe/Belfast|Europe/London\",\n\t\t\t\"Europe/Belfast|GB\",\n\t\t\t\"Europe/Belfast|GB-Eire\",\n\t\t\t\"Europe/Belgrade|Europe/Ljubljana\",\n\t\t\t\"Europe/Belgrade|Europe/Podgorica\",\n\t\t\t\"Europe/Belgrade|Europe/Sarajevo\",\n\t\t\t\"Europe/Belgrade|Europe/Skopje\",\n\t\t\t\"Europe/Belgrade|Europe/Zagreb\",\n\t\t\t\"Europe/Bratislava|Europe/Prague\",\n\t\t\t\"Europe/Busingen|Europe/Vaduz\",\n\t\t\t\"Europe/Busingen|Europe/Zurich\",\n\t\t\t\"Europe/Chisinau|Europe/Tiraspol\",\n\t\t\t\"Europe/Helsinki|Europe/Mariehamn\",\n\t\t\t\"Europe/Lisbon|Portugal\",\n\t\t\t\"Europe/Moscow|W-SU\",\n\t\t\t\"Europe/Rome|Europe/San_Marino\",\n\t\t\t\"Europe/Rome|Europe/Vatican\",\n\t\t\t\"Europe/Warsaw|Poland\",\n\t\t\t\"Kwajalein|Pacific/Kwajalein\",\n\t\t\t\"NZ-CHAT|Pacific/Chatham\",\n\t\t\t\"Pacific/Chuuk|Pacific/Truk\",\n\t\t\t\"Pacific/Chuuk|Pacific/Yap\",\n\t\t\t\"Pacific/Guam|Pacific/Saipan\",\n\t\t\t\"Pacific/Honolulu|Pacific/Johnston\",\n\t\t\t\"Pacific/Honolulu|US/Hawaii\",\n\t\t\t\"Pacific/Midway|Pacific/Pago_Pago\",\n\t\t\t\"Pacific/Midway|Pacific/Samoa\",\n\t\t\t\"Pacific/Midway|US/Samoa\",\n\t\t\t\"Pacific/Pohnpei|Pacific/Ponape\"\n\t\t]\n\t});\n\n\n\treturn moment;\n}));\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.0.5\n */\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.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n return typeof x === 'function' || typeof x === 'object' && x !== null;\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (!Array.isArray) {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n} else {\n _isArray = Array.isArray;\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n _resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n _reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n _reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n _reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return _resolve(promise, value);\n }, function (reason) {\n return _reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$) {\n if (maybeThenable.constructor === promise.constructor && then$$ === then && maybeThenable.constructor.resolve === resolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$ === GET_THEN_ERROR) {\n _reject(promise, GET_THEN_ERROR.error);\n } else if (then$$ === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$)) {\n handleForeignThenable(promise, maybeThenable, then$$);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction _resolve(promise, value) {\n if (promise === value) {\n _reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction _reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n _reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n _resolve(promise, value);\n } else if (failed) {\n _reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n _reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n _resolve(promise, value);\n }, function rejectPromise(reason) {\n _reject(promise, reason);\n });\n } catch (e) {\n _reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n _reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nEnumerator.prototype._enumerate = function () {\n var length = this.length;\n var _input = this._input;\n\n for (var i = 0; this._state === PENDING && i < length; i++) {\n this._eachEntry(_input[i], i);\n }\n};\n\nEnumerator.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$ = c.resolve;\n\n if (resolve$$ === resolve) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$) {\n return resolve$$(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$(entry), i);\n }\n};\n\nEnumerator.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n _reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = resolve;\nPromise.reject = reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;\n\nPromise.prototype = {\n constructor: Promise,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nfunction polyfill() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\n\nreturn Promise;\n\n})));\n\nES6Promise.polyfill();\n//# sourceMappingURL=es6-promise.auto.map","/*!\n * sweetalert2 v5.3.8\n * Released under the MIT License.\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.Sweetalert2 = factory());\n}(this, function () { 'use strict';\n\n var swalPrefix = 'swal2-'\n\n var prefix = function (items) {\n var result = {}\n for (var i in items) {\n result[items[i]] = swalPrefix + items[i]\n }\n return result\n }\n\n var swalClasses = prefix([\n 'container',\n 'in',\n 'iosfix',\n 'modal',\n 'overlay',\n 'fade',\n 'show',\n 'hide',\n 'noanimation',\n 'close',\n 'content',\n 'spacer',\n 'confirm',\n 'cancel',\n 'icon',\n 'image',\n 'input',\n 'file',\n 'range',\n 'select',\n 'radio',\n 'checkbox',\n 'textarea',\n 'inputerror',\n 'validationerror',\n 'progresssteps',\n 'activeprogressstep',\n 'progresscircle',\n 'progressline',\n 'loading',\n 'styled'\n ])\n\n var iconTypes = prefix([\n 'success',\n 'warning',\n 'info',\n 'question',\n 'error'\n ])\n\n var defaultParams = {\n title: '',\n text: '',\n html: '',\n type: null,\n customClass: '',\n animation: true,\n allowOutsideClick: true,\n allowEscapeKey: true,\n showConfirmButton: true,\n showCancelButton: false,\n preConfirm: null,\n confirmButtonText: 'OK',\n confirmButtonColor: '#3085d6',\n confirmButtonClass: null,\n cancelButtonText: 'Cancel',\n cancelButtonColor: '#aaa',\n cancelButtonClass: null,\n buttonsStyling: true,\n reverseButtons: false,\n focusCancel: false,\n showCloseButton: false,\n showLoaderOnConfirm: false,\n imageUrl: null,\n imageWidth: null,\n imageHeight: null,\n imageClass: null,\n timer: null,\n width: 500,\n padding: 20,\n background: '#fff',\n input: null,\n inputPlaceholder: '',\n inputValue: '',\n inputOptions: {},\n inputAutoTrim: true,\n inputClass: null,\n inputAttributes: {},\n inputValidator: null,\n progressSteps: [],\n currentProgressStep: null,\n progressStepsDistance: '40px',\n onOpen: null,\n onClose: null\n }\n\n var sweetHTML = '<div class=\"' + swalClasses.modal + '\" style=\"display: none\" tabIndex=\"-1\">' +\n '<ul class=\"' + swalClasses.progresssteps + '\"></ul>' +\n '<div class=\"' + swalClasses.icon + ' ' + iconTypes.error + '\">' +\n '<span class=\"x-mark\"><span class=\"line left\"></span><span class=\"line right\"></span></span>' +\n '</div>' +\n '<div class=\"' + swalClasses.icon + ' ' + iconTypes.question + '\">?</div>' +\n '<div class=\"' + swalClasses.icon + ' ' + iconTypes.warning + '\">!</div>' +\n '<div class=\"' + swalClasses.icon + ' ' + iconTypes.info + '\">i</div>' +\n '<div class=\"' + swalClasses.icon + ' ' + iconTypes.success + '\">' +\n '<span class=\"line tip\"></span> <span class=\"line long\"></span>' +\n '<div class=\"placeholder\"></div> <div class=\"fix\"></div>' +\n '</div>' +\n '<img class=\"' + swalClasses.image + '\">' +\n '<h2></h2>' +\n '<div class=\"' + swalClasses.content + '\"></div>' +\n '<input class=\"' + swalClasses.input + '\">' +\n '<input type=\"file\" class=\"' + swalClasses.file + '\">' +\n '<div class=\"' + swalClasses.range + '\">' +\n '<output></output>' +\n '<input type=\"range\">' +\n '</div>' +\n '<select class=\"' + swalClasses.select + '\"></select>' +\n '<div class=\"' + swalClasses.radio + '\"></div>' +\n '<label for=\"' + swalClasses.checkbox + '\" class=\"' + swalClasses.checkbox + '\">' +\n '<input type=\"checkbox\">' +\n '</label>' +\n '<textarea class=\"' + swalClasses.textarea + '\"></textarea>' +\n '<div class=\"' + swalClasses.validationerror + '\"></div>' +\n '<hr class=\"' + swalClasses.spacer + '\">' +\n '<button type=\"button\" class=\"' + swalClasses.confirm + '\">OK</button>' +\n '<button type=\"button\" class=\"' + swalClasses.cancel + '\">Cancel</button>' +\n '<span class=\"' + swalClasses.close + '\">×</span>' +\n '</div>'\n\n var sweetContainer\n\n var existingSweetContainers = document.getElementsByClassName(swalClasses.container)\n\n if (existingSweetContainers.length) {\n sweetContainer = existingSweetContainers[0]\n } else {\n sweetContainer = document.createElement('div')\n sweetContainer.className = swalClasses.container\n sweetContainer.innerHTML = sweetHTML\n }\n\n var extend = function (a, b) {\n for (var key in b) {\n if (b.hasOwnProperty(key)) {\n a[key] = b[key]\n }\n }\n\n return a\n }\n\n /*\n * Set hover, active and focus-states for buttons (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color)\n */\n var colorLuminance = function (hex, lum) {\n // Validate hex string\n hex = String(hex).replace(/[^0-9a-f]/gi, '')\n if (hex.length < 6) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\n }\n lum = lum || 0\n\n // Convert to decimal and change luminosity\n var rgb = '#'\n for (var i = 0; i < 3; i++) {\n var c = parseInt(hex.substr(i * 2, 2), 16)\n c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16)\n rgb += ('00' + c).substr(c.length)\n }\n\n return rgb\n }\n\n // Remember state in cases where opening and handling a modal will fiddle with it.\n var states = {\n previousWindowKeyDown: null,\n previousActiveElement: null,\n previousBodyPadding: null\n }\n\n /*\n * Add modal + overlay to DOM\n */\n var init = function () {\n if (typeof document === 'undefined') {\n console.error('SweetAlert2 requires document to initialize')\n return\n } else if (document.getElementsByClassName(swalClasses.container).length) {\n return\n }\n\n document.body.appendChild(sweetContainer)\n\n var modal = getModal()\n var input = getChildByClass(modal, swalClasses.input)\n var file = getChildByClass(modal, swalClasses.file)\n var range = modal.querySelector('.' + swalClasses.range + ' input')\n var select = getChildByClass(modal, swalClasses.select)\n var checkbox = modal.querySelector('.' + swalClasses.checkbox + ' input')\n var textarea = getChildByClass(modal, swalClasses.textarea)\n\n input.oninput = function () {\n sweetAlert.resetValidationError()\n }\n\n input.onkeydown = function (event) {\n setTimeout(function () {\n if (event.keyCode === 13) {\n event.stopPropagation()\n sweetAlert.clickConfirm()\n }\n }, 0)\n }\n\n file.onchange = function () {\n sweetAlert.resetValidationError()\n }\n\n range.oninput = function () {\n sweetAlert.resetValidationError()\n range.previousSibling.value = range.value\n }\n\n range.onchange = function () {\n sweetAlert.resetValidationError()\n range.previousSibling.value = range.value\n }\n\n select.onchange = function () {\n sweetAlert.resetValidationError()\n }\n\n checkbox.onchange = function () {\n sweetAlert.resetValidationError()\n }\n\n textarea.oninput = function () {\n sweetAlert.resetValidationError()\n }\n\n return modal\n }\n\n /*\n * Manipulate DOM\n */\n var elementByClass = function (className) {\n return sweetContainer.querySelector('.' + className)\n }\n\n var getModal = function () {\n return document.body.querySelector('.' + swalClasses.modal) || init()\n }\n\n var getIcons = function () {\n var modal = getModal()\n return modal.querySelectorAll('.' + swalClasses.icon)\n }\n\n var getSpacer = function () {\n return elementByClass(swalClasses.spacer)\n }\n\n var getProgressSteps = function () {\n return elementByClass(swalClasses.progresssteps)\n }\n\n var getValidationError = function () {\n return elementByClass(swalClasses.validationerror)\n }\n\n var getConfirmButton = function () {\n return elementByClass(swalClasses.confirm)\n }\n\n var getCancelButton = function () {\n return elementByClass(swalClasses.cancel)\n }\n\n var getCloseButton = function () {\n return elementByClass(swalClasses.close)\n }\n\n var getFocusableElements = function (focusCancel) {\n var buttons = [getConfirmButton(), getCancelButton()]\n if (focusCancel) {\n buttons.reverse()\n }\n return buttons.concat(Array.prototype.slice.call(\n getModal().querySelectorAll('button:not([class^=' + swalPrefix + ']), input:not([type=hidden]), textarea, select')\n ))\n }\n\n var hasClass = function (elem, className) {\n return elem.classList.contains(className)\n }\n\n var focusInput = function (input) {\n input.focus()\n\n // place cursor at end of text in text input\n if (input.type !== 'file') {\n // http://stackoverflow.com/a/2345915/1331425\n var val = input.value\n input.value = ''\n input.value = val\n }\n }\n\n var addClass = function (elem, className) {\n if (!elem || !className) {\n return\n }\n var classes = className.split(/\\s+/)\n classes.forEach(function (className) {\n elem.classList.add(className)\n })\n }\n\n var removeClass = function (elem, className) {\n if (!elem || !className) {\n return\n }\n var classes = className.split(/\\s+/)\n classes.forEach(function (className) {\n elem.classList.remove(className)\n })\n }\n\n var getChildByClass = function (elem, className) {\n for (var i = 0; i < elem.childNodes.length; i++) {\n if (hasClass(elem.childNodes[i], className)) {\n return elem.childNodes[i]\n }\n }\n }\n\n var show = function (elem, display) {\n if (!display) {\n display = 'block'\n }\n elem.style.opacity = ''\n elem.style.display = display\n }\n\n var hide = function (elem) {\n elem.style.opacity = ''\n elem.style.display = 'none'\n }\n\n var empty = function (elem) {\n while (elem.firstChild) {\n elem.removeChild(elem.firstChild)\n }\n }\n\n // borrowed from jqeury $(elem).is(':visible') implementation\n var isVisible = function (elem) {\n return elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length\n }\n\n var removeStyleProperty = function (elem, property) {\n if (elem.style.removeProperty) {\n elem.style.removeProperty(property)\n } else {\n elem.style.removeAttribute(property)\n }\n }\n\n var fireClick = function (node) {\n // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/\n // Then fixed for today's Chrome browser.\n if (typeof MouseEvent === 'function') {\n // Up-to-date approach\n var mevt = new MouseEvent('click', {\n view: window,\n bubbles: false,\n cancelable: true\n })\n node.dispatchEvent(mevt)\n } else if (document.createEvent) {\n // Fallback\n var evt = document.createEvent('MouseEvents')\n evt.initEvent('click', false, false)\n node.dispatchEvent(evt)\n } else if (document.createEventObject) {\n node.fireEvent('onclick')\n } else if (typeof node.onclick === 'function') {\n node.onclick()\n }\n }\n\n var stopEventPropagation = function (e) {\n // In particular, make sure the space bar doesn't scroll the main window.\n if (typeof e.stopPropagation === 'function') {\n e.stopPropagation()\n e.preventDefault()\n } else if (window.event && window.event.hasOwnProperty('cancelBubble')) {\n window.event.cancelBubble = true\n }\n }\n\n var animationEndEvent = (function () {\n var testEl = document.createElement('div')\n var transEndEventNames = {\n 'WebkitAnimation': 'webkitAnimationEnd',\n 'OAnimation': 'oAnimationEnd oanimationend',\n 'msAnimation': 'MSAnimationEnd',\n 'animation': 'animationend'\n }\n for (var i in transEndEventNames) {\n if (transEndEventNames.hasOwnProperty(i) &&\n testEl.style[i] !== undefined) {\n return transEndEventNames[i]\n }\n }\n\n return false\n })()\n\n // Reset the page to its previous state\n var resetPrevState = function () {\n var modal = getModal()\n window.onkeydown = states.previousWindowKeyDown\n if (states.previousActiveElement && states.previousActiveElement.focus) {\n states.previousActiveElement.focus()\n }\n clearTimeout(modal.timeout)\n }\n\n // Measure width of scrollbar\n // https://github.com/twbs/bootstrap/blob/master/js/modal.js#L279-L286\n var measureScrollbar = function () {\n var scrollDiv = document.createElement('div')\n scrollDiv.style.width = '50px'\n scrollDiv.style.height = '50px'\n scrollDiv.style.overflow = 'scroll'\n document.body.appendChild(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // JavaScript Debounce Function\n // https://davidwalsh.name/javascript-debounce-function\n var debounce = function (func, wait, immediate) {\n var timeout\n return function () {\n var context = this\n var args = arguments\n var later = function () {\n timeout = null\n if (!immediate) func.apply(context, args)\n }\n var callNow = immediate && !timeout\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n if (callNow) func.apply(context, args)\n }\n }\n\n var modalParams = extend({}, defaultParams)\n var queue = []\n var swal2Observer\n\n /*\n * Set type, text and actions on modal\n */\n var setParameters = function (params) {\n var modal = getModal()\n\n for (var param in params) {\n if (!defaultParams.hasOwnProperty(param) && param !== 'extraParams') {\n console.warn('SweetAlert2: Unknown parameter \"' + param + '\"')\n }\n }\n\n // set modal width and margin-left\n modal.style.width = (typeof params.width === 'number') ? params.width + 'px' : params.width\n\n modal.style.padding = params.padding + 'px'\n modal.style.background = params.background\n\n var $title = modal.querySelector('h2')\n var $content = modal.querySelector('.' + swalClasses.content)\n var $confirmBtn = getConfirmButton()\n var $cancelBtn = getCancelButton()\n var $closeButton = modal.querySelector('.' + swalClasses.close)\n\n // Title\n $title.innerHTML = params.title.split('\\n').join('<br>')\n\n // Content\n var i\n if (params.text || params.html) {\n if (typeof params.html === 'object') {\n $content.innerHTML = ''\n if (0 in params.html) {\n for (i = 0; i in params.html; i++) {\n $content.appendChild(params.html[i].cloneNode(true))\n }\n } else {\n $content.appendChild(params.html.cloneNode(true))\n }\n } else {\n $content.innerHTML = params.html || (params.text.split('\\n').join('<br>'))\n }\n show($content)\n } else {\n hide($content)\n }\n\n // Close button\n if (params.showCloseButton) {\n show($closeButton)\n } else {\n hide($closeButton)\n }\n\n // Custom Class\n modal.className = swalClasses.modal\n if (params.customClass) {\n addClass(modal, params.customClass)\n }\n\n // Progress steps\n var progressStepsContainer = getProgressSteps()\n var currentProgressStep = parseInt(params.currentProgressStep === null ? sweetAlert.getQueueStep() : params.currentProgressStep, 10)\n if (params.progressSteps.length) {\n show(progressStepsContainer)\n empty(progressStepsContainer)\n if (currentProgressStep >= params.progressSteps.length) {\n console.warn(\n 'SweetAlert2: Invalid currentProgressStep parameter, it should be less than progressSteps.length ' +\n '(currentProgressStep like JS arrays starts from 0)'\n )\n }\n params.progressSteps.forEach(function (step, index) {\n var circle = document.createElement('li')\n addClass(circle, swalClasses.progresscircle)\n circle.innerHTML = step\n if (index === currentProgressStep) {\n addClass(circle, swalClasses.activeprogressstep)\n }\n progressStepsContainer.appendChild(circle)\n if (index !== params.progressSteps.length - 1) {\n var line = document.createElement('li')\n addClass(line, swalClasses.progressline)\n line.style.width = params.progressStepsDistance\n progressStepsContainer.appendChild(line)\n }\n })\n } else {\n hide(progressStepsContainer)\n }\n\n // Icon\n var icons = getIcons()\n for (i = 0; i < icons.length; i++) {\n hide(icons[i])\n }\n if (params.type) {\n var validType = false\n for (var iconType in iconTypes) {\n if (params.type === iconType) {\n validType = true\n break\n }\n }\n if (!validType) {\n console.error('SweetAlert2: Unknown alert type: ' + params.type)\n return false\n }\n var $icon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes[params.type])\n show($icon)\n\n // Animate icon\n switch (params.type) {\n case 'success':\n addClass($icon, 'animate')\n addClass($icon.querySelector('.tip'), 'animate-success-tip')\n addClass($icon.querySelector('.long'), 'animate-success-long')\n break\n case 'error':\n addClass($icon, 'animate-error-icon')\n addClass($icon.querySelector('.x-mark'), 'animate-x-mark')\n break\n case 'warning':\n addClass($icon, 'pulse-warning')\n break\n default:\n break\n }\n }\n\n // Custom image\n var $customImage = modal.querySelector('.' + swalClasses.image)\n if (params.imageUrl) {\n $customImage.setAttribute('src', params.imageUrl)\n show($customImage)\n\n if (params.imageWidth) {\n $customImage.setAttribute('width', params.imageWidth)\n } else {\n $customImage.removeAttribute('width')\n }\n\n if (params.imageHeight) {\n $customImage.setAttribute('height', params.imageHeight)\n } else {\n $customImage.removeAttribute('height')\n }\n\n $customImage.className = swalClasses.image\n if (params.imageClass) {\n addClass($customImage, params.imageClass)\n }\n } else {\n hide($customImage)\n }\n\n // Cancel button\n if (params.showCancelButton) {\n $cancelBtn.style.display = 'inline-block'\n } else {\n hide($cancelBtn)\n }\n\n // Confirm button\n if (params.showConfirmButton) {\n removeStyleProperty($confirmBtn, 'display')\n } else {\n hide($confirmBtn)\n }\n\n // Buttons spacer\n var spacer = getSpacer()\n if (!params.showConfirmButton && !params.showCancelButton) {\n hide(spacer)\n } else {\n show(spacer)\n }\n\n // Edit text on cancel and confirm buttons\n $confirmBtn.innerHTML = params.confirmButtonText\n $cancelBtn.innerHTML = params.cancelButtonText\n\n // Set buttons to selected background colors\n if (params.buttonsStyling) {\n $confirmBtn.style.backgroundColor = params.confirmButtonColor\n $cancelBtn.style.backgroundColor = params.cancelButtonColor\n }\n\n // Add buttons custom classes\n $confirmBtn.className = swalClasses.confirm\n addClass($confirmBtn, params.confirmButtonClass)\n $cancelBtn.className = swalClasses.cancel\n addClass($cancelBtn, params.cancelButtonClass)\n\n // Buttons styling\n if (params.buttonsStyling) {\n addClass($confirmBtn, swalClasses.styled)\n addClass($cancelBtn, swalClasses.styled)\n } else {\n removeClass($confirmBtn, swalClasses.styled)\n removeClass($cancelBtn, swalClasses.styled)\n\n $confirmBtn.style.backgroundColor = $confirmBtn.style.borderLeftColor = $confirmBtn.style.borderRightColor = ''\n $cancelBtn.style.backgroundColor = $cancelBtn.style.borderLeftColor = $cancelBtn.style.borderRightColor = ''\n }\n\n // CSS animation\n if (params.animation === true) {\n removeClass(modal, swalClasses.noanimation)\n } else {\n addClass(modal, swalClasses.noanimation)\n }\n }\n\n /*\n * Animations\n */\n var openModal = function (animation, onComplete) {\n var modal = getModal()\n if (animation) {\n addClass(modal, swalClasses.show)\n addClass(sweetContainer, swalClasses.fade)\n removeClass(modal, swalClasses.hide)\n } else {\n removeClass(modal, swalClasses.fade)\n }\n show(modal)\n\n // scrolling is 'hidden' until animation is done, after that 'auto'\n sweetContainer.style.overflowY = 'hidden'\n if (animationEndEvent && !hasClass(modal, swalClasses.noanimation)) {\n modal.addEventListener(animationEndEvent, function swalCloseEventFinished () {\n modal.removeEventListener(animationEndEvent, swalCloseEventFinished)\n sweetContainer.style.overflowY = 'auto'\n })\n } else {\n sweetContainer.style.overflowY = 'auto'\n }\n\n addClass(sweetContainer, swalClasses.in)\n addClass(document.body, swalClasses.in)\n fixScrollbar()\n iOSfix()\n states.previousActiveElement = document.activeElement\n if (onComplete !== null && typeof onComplete === 'function') {\n onComplete.call(this, modal)\n }\n }\n\n function fixScrollbar () {\n // for queues, do not do this more than once\n if (states.previousBodyPadding !== null) {\n return\n }\n // if the body has overflow\n if (document.body.scrollHeight > window.innerHeight) {\n // add padding so the content doesn't shift after removal of scrollbar\n states.previousBodyPadding = document.body.style.paddingRight\n document.body.style.paddingRight = measureScrollbar() + 'px'\n }\n }\n\n function undoScrollbar () {\n if (states.previousBodyPadding !== null) {\n document.body.style.paddingRight = states.previousBodyPadding\n states.previousBodyPadding = null\n }\n }\n\n // Fix iOS scrolling http://stackoverflow.com/q/39626302/1331425\n function iOSfix () {\n var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream\n if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n var offset = document.body.scrollTop\n document.body.style.top = (offset * -1) + 'px'\n addClass(document.body, swalClasses.iosfix)\n }\n }\n\n function undoIOSfix () {\n if (hasClass(document.body, swalClasses.iosfix)) {\n var offset = parseInt(document.body.style.top, 10)\n removeClass(document.body, swalClasses.iosfix)\n document.body.scrollTop = (offset * -1)\n }\n }\n\n function modalDependant () {\n if (arguments[0] === undefined) {\n console.error('SweetAlert2 expects at least 1 attribute!')\n return false\n }\n\n var params = extend({}, modalParams)\n\n switch (typeof arguments[0]) {\n\n case 'string':\n params.title = arguments[0]\n params.text = arguments[1] || ''\n params.type = arguments[2] || ''\n\n break\n\n case 'object':\n extend(params, arguments[0])\n params.extraParams = arguments[0].extraParams\n\n if (params.input === 'email' && params.inputValidator === null) {\n params.inputValidator = function (email) {\n return new Promise(function (resolve, reject) {\n var emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\n if (emailRegex.test(email)) {\n resolve()\n } else {\n reject('Invalid email address')\n }\n })\n }\n }\n\n break\n\n default:\n console.error('SweetAlert2: Unexpected type of argument! Expected \"string\" or \"object\", got ' + typeof arguments[0])\n return false\n }\n\n setParameters(params)\n\n // Modal interactions\n var modal = getModal()\n\n return new Promise(function (resolve, reject) {\n // Close on timer\n if (params.timer) {\n modal.timeout = setTimeout(function () {\n sweetAlert.closeModal(params.onClose)\n reject('timer')\n }, params.timer)\n }\n\n // Get input element by specified type or, if type isn't specified, by params.input\n var getInput = function (inputType) {\n inputType = inputType || params.input\n switch (inputType) {\n case 'select':\n case 'textarea':\n case 'file':\n return getChildByClass(modal, swalClasses[inputType])\n case 'checkbox':\n return modal.querySelector('.' + swalClasses.checkbox + ' input')\n case 'radio':\n return modal.querySelector('.' + swalClasses.radio + ' input:checked') ||\n modal.querySelector('.' + swalClasses.radio + ' input:first-child')\n case 'range':\n return modal.querySelector('.' + swalClasses.range + ' input')\n default:\n return getChildByClass(modal, swalClasses.input)\n }\n }\n\n // Get the value of the modal input\n var getInputValue = function () {\n var input = getInput()\n if (!input) {\n return null\n }\n switch (params.input) {\n case 'checkbox':\n return input.checked ? 1 : 0\n case 'radio':\n return input.checked ? input.value : null\n case 'file':\n return input.files.length ? input.files[0] : null\n default:\n return params.inputAutoTrim ? input.value.trim() : input.value\n }\n }\n\n // input autofocus\n if (params.input) {\n setTimeout(function () {\n var input = getInput()\n if (input) {\n focusInput(input)\n }\n }, 0)\n }\n\n var confirm = function (value) {\n if (params.showLoaderOnConfirm) {\n sweetAlert.showLoading()\n }\n\n if (params.preConfirm) {\n params.preConfirm(value, params.extraParams).then(\n function (preConfirmValue) {\n sweetAlert.closeModal(params.onClose)\n resolve(preConfirmValue || value)\n },\n function (error) {\n sweetAlert.hideLoading()\n if (error) {\n sweetAlert.showValidationError(error)\n }\n }\n )\n } else {\n sweetAlert.closeModal(params.onClose)\n resolve(value)\n }\n }\n\n // Mouse interactions\n var onButtonEvent = function (event) {\n var e = event || window.event\n var target = e.target || e.srcElement\n var confirmBtn = getConfirmButton()\n var cancelBtn = getCancelButton()\n var targetedConfirm = confirmBtn === target || confirmBtn.contains(target)\n var targetedCancel = cancelBtn === target || cancelBtn.contains(target)\n\n switch (e.type) {\n case 'mouseover':\n case 'mouseup':\n if (params.buttonsStyling) {\n if (targetedConfirm) {\n confirmBtn.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.1)\n } else if (targetedCancel) {\n cancelBtn.style.backgroundColor = colorLuminance(params.cancelButtonColor, -0.1)\n }\n }\n break\n case 'mouseout':\n if (params.buttonsStyling) {\n if (targetedConfirm) {\n confirmBtn.style.backgroundColor = params.confirmButtonColor\n } else if (targetedCancel) {\n cancelBtn.style.backgroundColor = params.cancelButtonColor\n }\n }\n break\n case 'mousedown':\n if (params.buttonsStyling) {\n if (targetedConfirm) {\n confirmBtn.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.2)\n } else if (targetedCancel) {\n cancelBtn.style.backgroundColor = colorLuminance(params.cancelButtonColor, -0.2)\n }\n }\n break\n case 'click':\n // Clicked 'confirm'\n if (targetedConfirm && sweetAlert.isVisible()) {\n if (params.input) {\n var inputValue = getInputValue()\n\n if (params.inputValidator) {\n sweetAlert.disableInput()\n params.inputValidator(inputValue, params.extraParams).then(\n function () {\n sweetAlert.enableInput()\n confirm(inputValue)\n },\n function (error) {\n sweetAlert.enableInput()\n if (error) {\n sweetAlert.showValidationError(error)\n }\n }\n )\n } else {\n confirm(inputValue)\n }\n } else {\n confirm(true)\n }\n\n // Clicked 'cancel'\n } else if (targetedCancel && sweetAlert.isVisible()) {\n sweetAlert.closeModal(params.onClose)\n reject('cancel')\n }\n\n break\n default:\n }\n }\n\n var $buttons = modal.querySelectorAll('button')\n var i\n for (i = 0; i < $buttons.length; i++) {\n $buttons[i].onclick = onButtonEvent\n $buttons[i].onmouseover = onButtonEvent\n $buttons[i].onmouseout = onButtonEvent\n $buttons[i].onmousedown = onButtonEvent\n }\n\n // Closing modal by close button\n getCloseButton().onclick = function () {\n sweetAlert.closeModal(params.onClose)\n reject('close')\n }\n\n // Closing modal by overlay click\n sweetContainer.onclick = function (e) {\n if (e.target !== sweetContainer) {\n return\n }\n if (params.allowOutsideClick) {\n sweetAlert.closeModal(params.onClose)\n reject('overlay')\n }\n }\n\n var $confirmButton = getConfirmButton()\n var $cancelButton = getCancelButton()\n\n // Reverse buttons if neede d\n if (params.reverseButtons) {\n $confirmButton.parentNode.insertBefore($cancelButton, $confirmButton)\n } else {\n $confirmButton.parentNode.insertBefore($confirmButton, $cancelButton)\n }\n\n // Focus handling\n function setFocus (index, increment) {\n var focusableElements = getFocusableElements(params.focusCancel)\n // search for visible elements and select the next possible match\n for (var i = 0; i < focusableElements.length; i++) {\n index = index + increment\n\n // rollover to first item\n if (index === focusableElements.length) {\n index = 0\n\n // go to last item\n } else if (index === -1) {\n index = focusableElements.length - 1\n }\n\n // determine if element is visible\n var el = focusableElements[index]\n if (isVisible(el)) {\n return el.focus()\n }\n }\n }\n\n function handleKeyDown (event) {\n var e = event || window.event\n var keyCode = e.keyCode || e.which\n\n if ([9, 13, 32, 27].indexOf(keyCode) === -1) {\n // Don't do work on keys we don't care about.\n return\n }\n\n var $targetElement = e.target || e.srcElement\n\n var focusableElements = getFocusableElements(params.focusCancel)\n var btnIndex = -1 // Find the button - note, this is a nodelist, not an array.\n for (var i = 0; i < focusableElements.length; i++) {\n if ($targetElement === focusableElements[i]) {\n btnIndex = i\n break\n }\n }\n\n // TAB\n if (keyCode === 9) {\n if (!e.shiftKey) {\n // Cycle to the next button\n setFocus(btnIndex, 1)\n } else {\n // Cycle to the prev button\n setFocus(btnIndex, -1)\n }\n\n stopEventPropagation(e)\n } else {\n if (keyCode === 13 || keyCode === 32) {\n if (btnIndex === -1) {\n // ENTER/SPACE clicked outside of a button.\n if (params.focusCancel) {\n fireClick($cancelButton, e)\n } else {\n fireClick($confirmButton, e)\n }\n }\n } else if (keyCode === 27 && params.allowEscapeKey === true) {\n sweetAlert.closeModal(params.onClose)\n reject('esc')\n }\n }\n }\n\n states.previousWindowKeyDown = window.onkeydown\n window.onkeydown = handleKeyDown\n\n // Loading state\n if (params.buttonsStyling) {\n $confirmButton.style.borderLeftColor = params.confirmButtonColor\n $confirmButton.style.borderRightColor = params.confirmButtonColor\n }\n\n /**\n * Show spinner instead of Confirm button and disable Cancel button\n */\n sweetAlert.showLoading = sweetAlert.enableLoading = function () {\n show(getSpacer())\n show($confirmButton, 'inline-block')\n addClass($confirmButton, swalClasses.loading)\n addClass(modal, swalClasses.loading)\n $confirmButton.disabled = true\n $cancelButton.disabled = true\n }\n\n /**\n * Show spinner instead of Confirm button and disable Cancel button\n */\n sweetAlert.hideLoading = sweetAlert.disableLoading = function () {\n if (!params.showConfirmButton) {\n hide($confirmButton)\n if (!params.showCancelButton) {\n hide(getSpacer())\n }\n }\n removeClass($confirmButton, swalClasses.loading)\n removeClass(modal, swalClasses.loading)\n $confirmButton.disabled = false\n $cancelButton.disabled = false\n }\n\n sweetAlert.enableButtons = function () {\n $confirmButton.disabled = false\n $cancelButton.disabled = false\n }\n\n sweetAlert.disableButtons = function () {\n $confirmButton.disabled = true\n $cancelButton.disabled = true\n }\n\n sweetAlert.enableConfirmButton = function () {\n $confirmButton.disabled = false\n }\n\n sweetAlert.disableConfirmButton = function () {\n $confirmButton.disabled = true\n }\n\n sweetAlert.enableInput = function () {\n var input = getInput()\n if (!input) {\n return false\n }\n if (input.type === 'radio') {\n var radiosContainer = input.parentNode.parentNode\n var radios = radiosContainer.querySelectorAll('input')\n for (var i = 0; i < radios.length; i++) {\n radios[i].disabled = false\n }\n } else {\n input.disabled = false\n }\n }\n\n sweetAlert.disableInput = function () {\n var input = getInput()\n if (!input) {\n return false\n }\n if (input && input.type === 'radio') {\n var radiosContainer = input.parentNode.parentNode\n var radios = radiosContainer.querySelectorAll('input')\n for (var i = 0; i < radios.length; i++) {\n radios[i].disabled = true\n }\n } else {\n input.disabled = true\n }\n }\n\n // Set modal min-height to disable scrolling inside the modal\n sweetAlert.recalculateHeight = debounce(function () {\n var modal = getModal()\n var prevState = modal.style.display\n modal.style.minHeight = ''\n show(modal)\n modal.style.minHeight = (modal.scrollHeight + 1) + 'px'\n modal.style.display = prevState\n }, 50)\n\n // Show block with validation error\n sweetAlert.showValidationError = function (error) {\n var validationError = getValidationError()\n validationError.innerHTML = error\n show(validationError)\n\n var input = getInput()\n focusInput(input)\n addClass(input, swalClasses.inputerror)\n }\n\n // Hide block with validation error\n sweetAlert.resetValidationError = function () {\n var validationError = getValidationError()\n hide(validationError)\n sweetAlert.recalculateHeight()\n\n var input = getInput()\n if (input) {\n removeClass(input, swalClasses.inputerror)\n }\n }\n\n sweetAlert.getProgressSteps = function () {\n return params.progressSteps\n }\n\n sweetAlert.setProgressSteps = function (progressSteps) {\n params.progressSteps = progressSteps\n setParameters(params)\n }\n\n sweetAlert.showProgressSteps = function () {\n show(getProgressSteps())\n }\n\n sweetAlert.hideProgressSteps = function () {\n hide(getProgressSteps())\n }\n\n sweetAlert.enableButtons()\n sweetAlert.hideLoading()\n sweetAlert.resetValidationError()\n\n // inputs\n var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']\n var input\n for (i = 0; i < inputTypes.length; i++) {\n var inputClass = swalClasses[inputTypes[i]]\n var inputContainer = getChildByClass(modal, inputClass)\n input = getInput(inputTypes[i])\n\n // set attributes\n if (input) {\n for (var j in input.attributes) {\n if (input.attributes.hasOwnProperty(j)) {\n var attrName = input.attributes[j].name\n if (attrName !== 'type' && attrName !== 'value') {\n input.removeAttribute(attrName)\n }\n }\n }\n for (var attr in params.inputAttributes) {\n input.setAttribute(attr, params.inputAttributes[attr])\n }\n }\n\n // set class\n inputContainer.className = inputClass\n if (params.inputClass) {\n addClass(inputContainer, params.inputClass)\n }\n\n hide(inputContainer)\n }\n\n var populateInputOptions\n switch (params.input) {\n case 'text':\n case 'email':\n case 'password':\n case 'number':\n case 'tel':\n input = getChildByClass(modal, swalClasses.input)\n input.value = params.inputValue\n input.placeholder = params.inputPlaceholder\n input.type = params.input\n show(input)\n break\n case 'file':\n input = getChildByClass(modal, swalClasses.file)\n input.placeholder = params.inputPlaceholder\n input.type = params.input\n show(input)\n break\n case 'range':\n var range = getChildByClass(modal, swalClasses.range)\n var rangeInput = range.querySelector('input')\n var rangeOutput = range.querySelector('output')\n rangeInput.value = params.inputValue\n rangeInput.type = params.input\n rangeOutput.value = params.inputValue\n show(range)\n break\n case 'select':\n var select = getChildByClass(modal, swalClasses.select)\n select.innerHTML = ''\n if (params.inputPlaceholder) {\n var placeholder = document.createElement('option')\n placeholder.innerHTML = params.inputPlaceholder\n placeholder.value = ''\n placeholder.disabled = true\n placeholder.selected = true\n select.appendChild(placeholder)\n }\n populateInputOptions = function (inputOptions) {\n for (var optionValue in inputOptions) {\n var option = document.createElement('option')\n option.value = optionValue\n option.innerHTML = inputOptions[optionValue]\n if (params.inputValue === optionValue) {\n option.selected = true\n }\n select.appendChild(option)\n }\n show(select)\n select.focus()\n }\n break\n case 'radio':\n var radio = getChildByClass(modal, swalClasses.radio)\n radio.innerHTML = ''\n populateInputOptions = function (inputOptions) {\n for (var radioValue in inputOptions) {\n var id = 1\n var radioInput = document.createElement('input')\n var radioLabel = document.createElement('label')\n var radioLabelSpan = document.createElement('span')\n radioInput.type = 'radio'\n radioInput.name = swalClasses.radio\n radioInput.value = radioValue\n radioInput.id = swalClasses.radio + '-' + (id++)\n if (params.inputValue === radioValue) {\n radioInput.checked = true\n }\n radioLabelSpan.innerHTML = inputOptions[radioValue]\n radioLabel.appendChild(radioInput)\n radioLabel.appendChild(radioLabelSpan)\n radioLabel.for = radioInput.id\n radio.appendChild(radioLabel)\n }\n show(radio)\n var radios = radio.querySelectorAll('input')\n if (radios.length) {\n radios[0].focus()\n }\n }\n break\n case 'checkbox':\n var checkbox = getChildByClass(modal, swalClasses.checkbox)\n var checkboxInput = getInput('checkbox')\n checkboxInput.type = 'checkbox'\n checkboxInput.value = 1\n checkboxInput.id = swalClasses.checkbox\n checkboxInput.checked = Boolean(params.inputValue)\n var label = checkbox.getElementsByTagName('span')\n if (label.length) {\n checkbox.removeChild(label[0])\n }\n label = document.createElement('span')\n label.innerHTML = params.inputPlaceholder\n checkbox.appendChild(label)\n show(checkbox)\n break\n case 'textarea':\n var textarea = getChildByClass(modal, swalClasses.textarea)\n textarea.value = params.inputValue\n textarea.placeholder = params.inputPlaceholder\n show(textarea)\n break\n case null:\n break\n default:\n console.error('SweetAlert2: Unexpected type of input! Expected \"text\" or \"email\" or \"password\", \"select\", \"checkbox\", \"textarea\" or \"file\", got \"' + params.input + '\"')\n break\n }\n\n if (params.input === 'select' || params.input === 'radio') {\n if (params.inputOptions instanceof Promise) {\n sweetAlert.showLoading()\n params.inputOptions.then(function (inputOptions) {\n sweetAlert.hideLoading()\n populateInputOptions(inputOptions)\n })\n } else if (typeof params.inputOptions === 'object') {\n populateInputOptions(params.inputOptions)\n } else {\n console.error('SweetAlert2: Unexpected type of inputOptions! Expected object or Promise, got ' + typeof params.inputOptions)\n }\n }\n\n openModal(params.animation, params.onOpen)\n\n // Focus the first element (input or button)\n setFocus(-1, 1)\n\n // fix scroll\n sweetContainer.scrollTop = 0\n\n // Observe changes inside the modal and adjust height\n if (typeof MutationObserver !== 'undefined' && !swal2Observer) {\n swal2Observer = new MutationObserver(sweetAlert.recalculateHeight)\n swal2Observer.observe(modal, {childList: true, characterData: true, subtree: true})\n }\n })\n }\n\n // SweetAlert function\n function sweetAlert () {\n // Copy arguments to the local args variable\n var args = arguments\n\n if (sweetAlert.isVisible()) {\n sweetAlert.close()\n }\n\n return modalDependant.apply(this, args)\n }\n\n /*\n * Global function to determine if swal2 modal is visible\n */\n sweetAlert.isVisible = function () {\n var modal = getModal()\n return isVisible(modal)\n }\n\n /*\n * Global function for chaining sweetAlert modals\n */\n sweetAlert.queue = function (steps) {\n queue = steps\n var modal = getModal()\n var resetQueue = function () {\n queue = []\n modal.removeAttribute('data-queue-step')\n }\n var queueResult = []\n return new Promise(function (resolve, reject) {\n (function step (i, callback) {\n if (i < queue.length) {\n modal.setAttribute('data-queue-step', i)\n\n sweetAlert(queue[i]).then(function (result) {\n queueResult.push(result)\n step(i + 1, callback)\n }, function (dismiss) {\n resetQueue()\n reject(dismiss)\n })\n } else {\n resetQueue()\n resolve(queueResult)\n }\n })(0)\n })\n }\n\n /*\n * Global function for getting the index of current modal in queue\n */\n sweetAlert.getQueueStep = function () {\n return getModal().getAttribute('data-queue-step')\n }\n\n /*\n * Global function for inserting a modal to the queue\n */\n sweetAlert.insertQueueStep = function (step, index) {\n if (index && index < queue.length) {\n return queue.splice(index, 0, step)\n }\n return queue.push(step)\n }\n\n /*\n * Global function for deleting a modal from the queue\n */\n sweetAlert.deleteQueueStep = function (index) {\n if (typeof queue[index] !== 'undefined') {\n queue.splice(index, 1)\n }\n }\n\n /*\n * Global function to close sweetAlert\n */\n sweetAlert.close = sweetAlert.closeModal = function (onComplete) {\n var modal = getModal()\n removeClass(modal, swalClasses.show)\n addClass(modal, swalClasses.hide)\n\n // Reset icon animations\n var $successIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.success)\n removeClass($successIcon, 'animate')\n removeClass($successIcon.querySelector('.tip'), 'animate-success-tip')\n removeClass($successIcon.querySelector('.long'), 'animate-success-long')\n\n var $errorIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.error)\n removeClass($errorIcon, 'animate-error-icon')\n removeClass($errorIcon.querySelector('.x-mark'), 'animate-x-mark')\n\n var $warningIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.warning)\n removeClass($warningIcon, 'pulse-warning')\n\n resetPrevState()\n\n var hideModalAndResetState = function () {\n hide(modal)\n modal.style.minHeight = ''\n removeClass(sweetContainer, swalClasses.in)\n removeClass(document.body, swalClasses.in)\n undoScrollbar()\n undoIOSfix()\n }\n\n // If animation is supported, animate\n if (animationEndEvent && !hasClass(modal, swalClasses.noanimation)) {\n modal.addEventListener(animationEndEvent, function swalCloseEventFinished () {\n modal.removeEventListener(animationEndEvent, swalCloseEventFinished)\n if (hasClass(modal, swalClasses.hide)) {\n hideModalAndResetState()\n }\n })\n } else {\n // Otherwise, hide immediately\n hideModalAndResetState()\n }\n if (onComplete !== null && typeof onComplete === 'function') {\n onComplete.call(this, modal)\n }\n }\n\n /*\n * Global function to click 'Confirm' button\n */\n sweetAlert.clickConfirm = function () {\n getConfirmButton().click()\n }\n\n /*\n * Global function to click 'Cancel' button\n */\n sweetAlert.clickCancel = function () {\n getCancelButton().click()\n }\n\n /**\n * Set default params for each popup\n * @param {Object} userParams\n */\n sweetAlert.setDefaults = function (userParams) {\n if (!userParams) {\n throw new Error('userParams is required')\n }\n if (typeof userParams !== 'object') {\n throw new Error('userParams has to be a object')\n }\n\n extend(modalParams, userParams)\n }\n\n /**\n * Reset default params for each popup\n */\n sweetAlert.resetDefaults = function () {\n modalParams = extend({}, defaultParams)\n }\n\n sweetAlert.noop = function () { }\n\n sweetAlert.version = '5.3.8'\n\n if (typeof Promise === 'function') {\n Promise.prototype.done = Promise.prototype.done || function () { // eslint-disable-line\n return this.catch(function () {\n // Catch promise rejections silently.\n // https://github.com/limonte/sweetalert2/issues/177\n })\n }\n } else {\n console.warn('SweetAlert2: Please inlude Promise polyfill BEFORE including sweetalert2.js if IE10+ support needed.')\n }\n\n return sweetAlert;\n\n}));\nif (window.Sweetalert2) window.sweetAlert = window.swal = window.Sweetalert2;","/*! nouislider - 8.5.1 - 2016-04-24 16:00:29 */\n\n(function (factory) {\n\n if ( typeof define === 'function' && define.amd ) {\n\n // AMD. Register as an anonymous module.\n define([], factory);\n\n } else if ( typeof exports === 'object' ) {\n\n // Node/CommonJS\n module.exports = factory();\n\n } else {\n\n // Browser globals\n window.noUiSlider = factory();\n }\n\n}(function( ){\n\n\t'use strict';\n\n\n\t// Removes duplicates from an array.\n\tfunction unique(array) {\n\t\treturn array.filter(function(a){\n\t\t\treturn !this[a] ? this[a] = true : false;\n\t\t}, {});\n\t}\n\n\t// Round a value to the closest 'to'.\n\tfunction closest ( value, to ) {\n\t\treturn Math.round(value / to) * to;\n\t}\n\n\t// Current position of an element relative to the document.\n\tfunction offset ( elem ) {\n\n\tvar rect = elem.getBoundingClientRect(),\n\t\tdoc = elem.ownerDocument,\n\t\tdocElem = doc.documentElement,\n\t\tpageOffset = getPageOffset();\n\n\t\t// getBoundingClientRect contains left scroll in Chrome on Android.\n\t\t// I haven't found a feature detection that proves this. Worst case\n\t\t// scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\n\t\tif ( /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) ) {\n\t\t\tpageOffset.x = 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: rect.top + pageOffset.y - docElem.clientTop,\n\t\t\tleft: rect.left + pageOffset.x - docElem.clientLeft\n\t\t};\n\t}\n\n\t// Checks whether a value is numerical.\n\tfunction isNumeric ( a ) {\n\t\treturn typeof a === 'number' && !isNaN( a ) && isFinite( a );\n\t}\n\n\t// Sets a class and removes it after [duration] ms.\n\tfunction addClassFor ( element, className, duration ) {\n\t\taddClass(element, className);\n\t\tsetTimeout(function(){\n\t\t\tremoveClass(element, className);\n\t\t}, duration);\n\t}\n\n\t// Limits a value to 0 - 100\n\tfunction limit ( a ) {\n\t\treturn Math.max(Math.min(a, 100), 0);\n\t}\n\n\t// Wraps a variable as an array, if it isn't one yet.\n\tfunction asArray ( a ) {\n\t\treturn Array.isArray(a) ? a : [a];\n\t}\n\n\t// Counts decimals\n\tfunction countDecimals ( numStr ) {\n\t\tvar pieces = numStr.split(\".\");\n\t\treturn pieces.length > 1 ? pieces[1].length : 0;\n\t}\n\n\t// http://youmightnotneedjquery.com/#add_class\n\tfunction addClass ( el, className ) {\n\t\tif ( el.classList ) {\n\t\t\tel.classList.add(className);\n\t\t} else {\n\t\t\tel.className += ' ' + className;\n\t\t}\n\t}\n\n\t// http://youmightnotneedjquery.com/#remove_class\n\tfunction removeClass ( el, className ) {\n\t\tif ( el.classList ) {\n\t\t\tel.classList.remove(className);\n\t\t} else {\n\t\t\tel.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n\t\t}\n\t}\n\n\t// https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\n\tfunction hasClass ( el, className ) {\n\t\treturn el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className);\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\n\tfunction getPageOffset ( ) {\n\n\t\tvar supportPageOffset = window.pageXOffset !== undefined,\n\t\t\tisCSS1Compat = ((document.compatMode || \"\") === \"CSS1Compat\"),\n\t\t\tx = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft,\n\t\t\ty = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n\n\t// we provide a function to compute constants instead\n\t// of accessing window.* as soon as the module needs it\n\t// so that we do not compute anything if not needed\n\tfunction getActions ( ) {\n\n\t\t// Determine the events to bind. IE11 implements pointerEvents without\n\t\t// a prefix, which breaks compatibility with the IE10 implementation.\n\t\treturn window.navigator.pointerEnabled ? {\n\t\t\tstart: 'pointerdown',\n\t\t\tmove: 'pointermove',\n\t\t\tend: 'pointerup'\n\t\t} : window.navigator.msPointerEnabled ? {\n\t\t\tstart: 'MSPointerDown',\n\t\t\tmove: 'MSPointerMove',\n\t\t\tend: 'MSPointerUp'\n\t\t} : {\n\t\t\tstart: 'mousedown touchstart',\n\t\t\tmove: 'mousemove touchmove',\n\t\t\tend: 'mouseup touchend'\n\t\t};\n\t}\n\n\n// Value calculation\n\n\t// Determine the size of a sub-range in relation to a full range.\n\tfunction subRangeRatio ( pa, pb ) {\n\t\treturn (100 / (pb - pa));\n\t}\n\n\t// (percentage) How many percent is this value of this range?\n\tfunction fromPercentage ( range, value ) {\n\t\treturn (value * 100) / ( range[1] - range[0] );\n\t}\n\n\t// (percentage) Where is this value on this range?\n\tfunction toPercentage ( range, value ) {\n\t\treturn fromPercentage( range, range[0] < 0 ?\n\t\t\tvalue + Math.abs(range[0]) :\n\t\t\t\tvalue - range[0] );\n\t}\n\n\t// (value) How much is this percentage on this range?\n\tfunction isPercentage ( range, value ) {\n\t\treturn ((value * ( range[1] - range[0] )) / 100) + range[0];\n\t}\n\n\n// Range conversion\n\n\tfunction getJ ( value, arr ) {\n\n\t\tvar j = 1;\n\n\t\twhile ( value >= arr[j] ){\n\t\t\tj += 1;\n\t\t}\n\n\t\treturn j;\n\t}\n\n\t// (percentage) Input a value, find where, on a scale of 0-100, it applies.\n\tfunction toStepping ( xVal, xPct, value ) {\n\n\t\tif ( value >= xVal.slice(-1)[0] ){\n\t\t\treturn 100;\n\t\t}\n\n\t\tvar j = getJ( value, xVal ), va, vb, pa, pb;\n\n\t\tva = xVal[j-1];\n\t\tvb = xVal[j];\n\t\tpa = xPct[j-1];\n\t\tpb = xPct[j];\n\n\t\treturn pa + (toPercentage([va, vb], value) / subRangeRatio (pa, pb));\n\t}\n\n\t// (value) Input a percentage, find where it is on the specified range.\n\tfunction fromStepping ( xVal, xPct, value ) {\n\n\t\t// There is no range group that fits 100\n\t\tif ( value >= 100 ){\n\t\t\treturn xVal.slice(-1)[0];\n\t\t}\n\n\t\tvar j = getJ( value, xPct ), va, vb, pa, pb;\n\n\t\tva = xVal[j-1];\n\t\tvb = xVal[j];\n\t\tpa = xPct[j-1];\n\t\tpb = xPct[j];\n\n\t\treturn isPercentage([va, vb], (value - pa) * subRangeRatio (pa, pb));\n\t}\n\n\t// (percentage) Get the step that applies at a certain value.\n\tfunction getStep ( xPct, xSteps, snap, value ) {\n\n\t\tif ( value === 100 ) {\n\t\t\treturn value;\n\t\t}\n\n\t\tvar j = getJ( value, xPct ), a, b;\n\n\t\t// If 'snap' is set, steps are used as fixed points on the slider.\n\t\tif ( snap ) {\n\n\t\t\ta = xPct[j-1];\n\t\t\tb = xPct[j];\n\n\t\t\t// Find the closest position, a or b.\n\t\t\tif ((value - a) > ((b-a)/2)){\n\t\t\t\treturn b;\n\t\t\t}\n\n\t\t\treturn a;\n\t\t}\n\n\t\tif ( !xSteps[j-1] ){\n\t\t\treturn value;\n\t\t}\n\n\t\treturn xPct[j-1] + closest(\n\t\t\tvalue - xPct[j-1],\n\t\t\txSteps[j-1]\n\t\t);\n\t}\n\n\n// Entry parsing\n\n\tfunction handleEntryPoint ( index, value, that ) {\n\n\t\tvar percentage;\n\n\t\t// Wrap numerical input in an array.\n\t\tif ( typeof value === \"number\" ) {\n\t\t\tvalue = [value];\n\t\t}\n\n\t\t// Reject any invalid input, by testing whether value is an array.\n\t\tif ( Object.prototype.toString.call( value ) !== '[object Array]' ){\n\t\t\tthrow new Error(\"noUiSlider: 'range' contains invalid value.\");\n\t\t}\n\n\t\t// Covert min/max syntax to 0 and 100.\n\t\tif ( index === 'min' ) {\n\t\t\tpercentage = 0;\n\t\t} else if ( index === 'max' ) {\n\t\t\tpercentage = 100;\n\t\t} else {\n\t\t\tpercentage = parseFloat( index );\n\t\t}\n\n\t\t// Check for correct input.\n\t\tif ( !isNumeric( percentage ) || !isNumeric( value[0] ) ) {\n\t\t\tthrow new Error(\"noUiSlider: 'range' value isn't numeric.\");\n\t\t}\n\n\t\t// Store values.\n\t\tthat.xPct.push( percentage );\n\t\tthat.xVal.push( value[0] );\n\n\t\t// NaN will evaluate to false too, but to keep\n\t\t// logging clear, set step explicitly. Make sure\n\t\t// not to override the 'step' setting with false.\n\t\tif ( !percentage ) {\n\t\t\tif ( !isNaN( value[1] ) ) {\n\t\t\t\tthat.xSteps[0] = value[1];\n\t\t\t}\n\t\t} else {\n\t\t\tthat.xSteps.push( isNaN(value[1]) ? false : value[1] );\n\t\t}\n\t}\n\n\tfunction handleStepPoint ( i, n, that ) {\n\n\t\t// Ignore 'false' stepping.\n\t\tif ( !n ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Factor to range ratio\n\t\tthat.xSteps[i] = fromPercentage([\n\t\t\t that.xVal[i]\n\t\t\t,that.xVal[i+1]\n\t\t], n) / subRangeRatio (\n\t\t\tthat.xPct[i],\n\t\t\tthat.xPct[i+1] );\n\t}\n\n\n// Interface\n\n\t// The interface to Spectrum handles all direction-based\n\t// conversions, so the above values are unaware.\n\n\tfunction Spectrum ( entry, snap, direction, singleStep ) {\n\n\t\tthis.xPct = [];\n\t\tthis.xVal = [];\n\t\tthis.xSteps = [ singleStep || false ];\n\t\tthis.xNumSteps = [ false ];\n\n\t\tthis.snap = snap;\n\t\tthis.direction = direction;\n\n\t\tvar index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ];\n\n\t\t// Map the object keys to an array.\n\t\tfor ( index in entry ) {\n\t\t\tif ( entry.hasOwnProperty(index) ) {\n\t\t\t\tordered.push([entry[index], index]);\n\t\t\t}\n\t\t}\n\n\t\t// Sort all entries by value (numeric sort).\n\t\tif ( ordered.length && typeof ordered[0][0] === \"object\" ) {\n\t\t\tordered.sort(function(a, b) { return a[0][0] - b[0][0]; });\n\t\t} else {\n\t\t\tordered.sort(function(a, b) { return a[0] - b[0]; });\n\t\t}\n\n\n\t\t// Convert all entries to subranges.\n\t\tfor ( index = 0; index < ordered.length; index++ ) {\n\t\t\thandleEntryPoint(ordered[index][1], ordered[index][0], this);\n\t\t}\n\n\t\t// Store the actual step values.\n\t\t// xSteps is sorted in the same order as xPct and xVal.\n\t\tthis.xNumSteps = this.xSteps.slice(0);\n\n\t\t// Convert all numeric steps to the percentage of the subrange they represent.\n\t\tfor ( index = 0; index < this.xNumSteps.length; index++ ) {\n\t\t\thandleStepPoint(index, this.xNumSteps[index], this);\n\t\t}\n\t}\n\n\tSpectrum.prototype.getMargin = function ( value ) {\n\t\treturn this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false;\n\t};\n\n\tSpectrum.prototype.toStepping = function ( value ) {\n\n\t\tvalue = toStepping( this.xVal, this.xPct, value );\n\n\t\t// Invert the value if this is a right-to-left slider.\n\t\tif ( this.direction ) {\n\t\t\tvalue = 100 - value;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\tSpectrum.prototype.fromStepping = function ( value ) {\n\n\t\t// Invert the value if this is a right-to-left slider.\n\t\tif ( this.direction ) {\n\t\t\tvalue = 100 - value;\n\t\t}\n\n\t\treturn fromStepping( this.xVal, this.xPct, value );\n\t};\n\n\tSpectrum.prototype.getStep = function ( value ) {\n\n\t\t// Find the proper step for rtl sliders by search in inverse direction.\n\t\t// Fixes issue #262.\n\t\tif ( this.direction ) {\n\t\t\tvalue = 100 - value;\n\t\t}\n\n\t\tvalue = getStep(this.xPct, this.xSteps, this.snap, value );\n\n\t\tif ( this.direction ) {\n\t\t\tvalue = 100 - value;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\tSpectrum.prototype.getApplicableStep = function ( value ) {\n\n\t\t// If the value is 100%, return the negative step twice.\n\t\tvar j = getJ(value, this.xPct), offset = value === 100 ? 2 : 1;\n\t\treturn [this.xNumSteps[j-2], this.xVal[j-offset], this.xNumSteps[j-offset]];\n\t};\n\n\t// Outside testing\n\tSpectrum.prototype.convert = function ( value ) {\n\t\treturn this.getStep(this.toStepping(value));\n\t};\n\n/*\tEvery input option is tested and parsed. This'll prevent\n\tendless validation in internal methods. These tests are\n\tstructured with an item for every option available. An\n\toption can be marked as required by setting the 'r' flag.\n\tThe testing function is provided with three arguments:\n\t\t- The provided value for the option;\n\t\t- A reference to the options object;\n\t\t- The name for the option;\n\n\tThe testing function returns false when an error is detected,\n\tor true when everything is OK. It can also modify the option\n\tobject, to make sure all values can be correctly looped elsewhere. */\n\n\tvar defaultFormatter = { 'to': function( value ){\n\t\treturn value !== undefined && value.toFixed(2);\n\t}, 'from': Number };\n\n\tfunction testStep ( parsed, entry ) {\n\n\t\tif ( !isNumeric( entry ) ) {\n\t\t\tthrow new Error(\"noUiSlider: 'step' is not numeric.\");\n\t\t}\n\n\t\t// The step option can still be used to set stepping\n\t\t// for linear sliders. Overwritten if set in 'range'.\n\t\tparsed.singleStep = entry;\n\t}\n\n\tfunction testRange ( parsed, entry ) {\n\n\t\t// Filter incorrect input.\n\t\tif ( typeof entry !== 'object' || Array.isArray(entry) ) {\n\t\t\tthrow new Error(\"noUiSlider: 'range' is not an object.\");\n\t\t}\n\n\t\t// Catch missing start or end.\n\t\tif ( entry.min === undefined || entry.max === undefined ) {\n\t\t\tthrow new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");\n\t\t}\n\n\t\t// Catch equal start or end.\n\t\tif ( entry.min === entry.max ) {\n\t\t\tthrow new Error(\"noUiSlider: 'range' 'min' and 'max' cannot be equal.\");\n\t\t}\n\n\t\tparsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep);\n\t}\n\n\tfunction testStart ( parsed, entry ) {\n\n\t\tentry = asArray(entry);\n\n\t\t// Validate input. Values aren't tested, as the public .val method\n\t\t// will always provide a valid location.\n\t\tif ( !Array.isArray( entry ) || !entry.length || entry.length > 2 ) {\n\t\t\tthrow new Error(\"noUiSlider: 'start' option is incorrect.\");\n\t\t}\n\n\t\t// Store the number of handles.\n\t\tparsed.handles = entry.length;\n\n\t\t// When the slider is initialized, the .val method will\n\t\t// be called with the start options.\n\t\tparsed.start = entry;\n\t}\n\n\tfunction testSnap ( parsed, entry ) {\n\n\t\t// Enforce 100% stepping within subranges.\n\t\tparsed.snap = entry;\n\n\t\tif ( typeof entry !== 'boolean' ){\n\t\t\tthrow new Error(\"noUiSlider: 'snap' option must be a boolean.\");\n\t\t}\n\t}\n\n\tfunction testAnimate ( parsed, entry ) {\n\n\t\t// Enforce 100% stepping within subranges.\n\t\tparsed.animate = entry;\n\n\t\tif ( typeof entry !== 'boolean' ){\n\t\t\tthrow new Error(\"noUiSlider: 'animate' option must be a boolean.\");\n\t\t}\n\t}\n\n\tfunction testAnimationDuration ( parsed, entry ) {\n\n\t\tparsed.animationDuration = entry;\n\n\t\tif ( typeof entry !== 'number' ){\n\t\t\tthrow new Error(\"noUiSlider: 'animationDuration' option must be a number.\");\n\t\t}\n\t}\n\n\tfunction testConnect ( parsed, entry ) {\n\n\t\tif ( entry === 'lower' && parsed.handles === 1 ) {\n\t\t\tparsed.connect = 1;\n\t\t} else if ( entry === 'upper' && parsed.handles === 1 ) {\n\t\t\tparsed.connect = 2;\n\t\t} else if ( entry === true && parsed.handles === 2 ) {\n\t\t\tparsed.connect = 3;\n\t\t} else if ( entry === false ) {\n\t\t\tparsed.connect = 0;\n\t\t} else {\n\t\t\tthrow new Error(\"noUiSlider: 'connect' option doesn't match handle count.\");\n\t\t}\n\t}\n\n\tfunction testOrientation ( parsed, entry ) {\n\n\t\t// Set orientation to an a numerical value for easy\n\t\t// array selection.\n\t\tswitch ( entry ){\n\t\t case 'horizontal':\n\t\t\tparsed.ort = 0;\n\t\t\tbreak;\n\t\t case 'vertical':\n\t\t\tparsed.ort = 1;\n\t\t\tbreak;\n\t\t default:\n\t\t\tthrow new Error(\"noUiSlider: 'orientation' option is invalid.\");\n\t\t}\n\t}\n\n\tfunction testMargin ( parsed, entry ) {\n\n\t\tif ( !isNumeric(entry) ){\n\t\t\tthrow new Error(\"noUiSlider: 'margin' option must be numeric.\");\n\t\t}\n\n\t\t// Issue #582\n\t\tif ( entry === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tparsed.margin = parsed.spectrum.getMargin(entry);\n\n\t\tif ( !parsed.margin ) {\n\t\t\tthrow new Error(\"noUiSlider: 'margin' option is only supported on linear sliders.\");\n\t\t}\n\t}\n\n\tfunction testLimit ( parsed, entry ) {\n\n\t\tif ( !isNumeric(entry) ){\n\t\t\tthrow new Error(\"noUiSlider: 'limit' option must be numeric.\");\n\t\t}\n\n\t\tparsed.limit = parsed.spectrum.getMargin(entry);\n\n\t\tif ( !parsed.limit ) {\n\t\t\tthrow new Error(\"noUiSlider: 'limit' option is only supported on linear sliders.\");\n\t\t}\n\t}\n\n\tfunction testDirection ( parsed, entry ) {\n\n\t\t// Set direction as a numerical value for easy parsing.\n\t\t// Invert connection for RTL sliders, so that the proper\n\t\t// handles get the connect/background classes.\n\t\tswitch ( entry ) {\n\t\t case 'ltr':\n\t\t\tparsed.dir = 0;\n\t\t\tbreak;\n\t\t case 'rtl':\n\t\t\tparsed.dir = 1;\n\t\t\tparsed.connect = [0,2,1,3][parsed.connect];\n\t\t\tbreak;\n\t\t default:\n\t\t\tthrow new Error(\"noUiSlider: 'direction' option was not recognized.\");\n\t\t}\n\t}\n\n\tfunction testBehaviour ( parsed, entry ) {\n\n\t\t// Make sure the input is a string.\n\t\tif ( typeof entry !== 'string' ) {\n\t\t\tthrow new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");\n\t\t}\n\n\t\t// Check if the string contains any keywords.\n\t\t// None are required.\n\t\tvar tap = entry.indexOf('tap') >= 0,\n\t\t\tdrag = entry.indexOf('drag') >= 0,\n\t\t\tfixed = entry.indexOf('fixed') >= 0,\n\t\t\tsnap = entry.indexOf('snap') >= 0,\n\t\t\thover = entry.indexOf('hover') >= 0;\n\n\t\t// Fix #472\n\t\tif ( drag && !parsed.connect ) {\n\t\t\tthrow new Error(\"noUiSlider: 'drag' behaviour must be used with 'connect': true.\");\n\t\t}\n\n\t\tparsed.events = {\n\t\t\ttap: tap || snap,\n\t\t\tdrag: drag,\n\t\t\tfixed: fixed,\n\t\t\tsnap: snap,\n\t\t\thover: hover\n\t\t};\n\t}\n\n\tfunction testTooltips ( parsed, entry ) {\n\n\t\tvar i;\n\n\t\tif ( entry === false ) {\n\t\t\treturn;\n\t\t} else if ( entry === true ) {\n\n\t\t\tparsed.tooltips = [];\n\n\t\t\tfor ( i = 0; i < parsed.handles; i++ ) {\n\t\t\t\tparsed.tooltips.push(true);\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparsed.tooltips = asArray(entry);\n\n\t\t\tif ( parsed.tooltips.length !== parsed.handles ) {\n\t\t\t\tthrow new Error(\"noUiSlider: must pass a formatter for all handles.\");\n\t\t\t}\n\n\t\t\tparsed.tooltips.forEach(function(formatter){\n\t\t\t\tif ( typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function') ) {\n\t\t\t\t\tthrow new Error(\"noUiSlider: 'tooltips' must be passed a formatter or 'false'.\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction testFormat ( parsed, entry ) {\n\n\t\tparsed.format = entry;\n\n\t\t// Any object with a to and from method is supported.\n\t\tif ( typeof entry.to === 'function' && typeof entry.from === 'function' ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthrow new Error(\"noUiSlider: 'format' requires 'to' and 'from' methods.\");\n\t}\n\n\tfunction testCssPrefix ( parsed, entry ) {\n\n\t\tif ( entry !== undefined && typeof entry !== 'string' && entry !== false ) {\n\t\t\tthrow new Error(\"noUiSlider: 'cssPrefix' must be a string or `false`.\");\n\t\t}\n\n\t\tparsed.cssPrefix = entry;\n\t}\n\n\tfunction testCssClasses ( parsed, entry ) {\n\n\t\tif ( entry !== undefined && typeof entry !== 'object' ) {\n\t\t\tthrow new Error(\"noUiSlider: 'cssClasses' must be an object.\");\n\t\t}\n\n\t\tif ( typeof parsed.cssPrefix === 'string' ) {\n\t\t\tparsed.cssClasses = {};\n\n\t\t\tfor ( var key in entry ) {\n\t\t\t\tif ( !entry.hasOwnProperty(key) ) { continue; }\n\n\t\t\t\tparsed.cssClasses[key] = parsed.cssPrefix + entry[key];\n\t\t\t}\n\t\t} else {\n\t\t\tparsed.cssClasses = entry;\n\t\t}\n\t}\n\n\t// Test all developer settings and parse to assumption-safe values.\n\tfunction testOptions ( options ) {\n\n\t\t// To prove a fix for #537, freeze options here.\n\t\t// If the object is modified, an error will be thrown.\n\t\t// Object.freeze(options);\n\n\t\tvar parsed = {\n\t\t\tmargin: 0,\n\t\t\tlimit: 0,\n\t\t\tanimate: true,\n\t\t\tanimationDuration: 300,\n\t\t\tformat: defaultFormatter\n\t\t}, tests;\n\n\t\t// Tests are executed in the order they are presented here.\n\t\ttests = {\n\t\t\t'step': { r: false, t: testStep },\n\t\t\t'start': { r: true, t: testStart },\n\t\t\t'connect': { r: true, t: testConnect },\n\t\t\t'direction': { r: true, t: testDirection },\n\t\t\t'snap': { r: false, t: testSnap },\n\t\t\t'animate': { r: false, t: testAnimate },\n\t\t\t'animationDuration': { r: false, t: testAnimationDuration },\n\t\t\t'range': { r: true, t: testRange },\n\t\t\t'orientation': { r: false, t: testOrientation },\n\t\t\t'margin': { r: false, t: testMargin },\n\t\t\t'limit': { r: false, t: testLimit },\n\t\t\t'behaviour': { r: true, t: testBehaviour },\n\t\t\t'format': { r: false, t: testFormat },\n\t\t\t'tooltips': { r: false, t: testTooltips },\n\t\t\t'cssPrefix': { r: false, t: testCssPrefix },\n\t\t\t'cssClasses': { r: false, t: testCssClasses }\n\t\t};\n\n\t\tvar defaults = {\n\t\t\t'connect': false,\n\t\t\t'direction': 'ltr',\n\t\t\t'behaviour': 'tap',\n\t\t\t'orientation': 'horizontal',\n\t\t\t'cssPrefix' : 'noUi-',\n\t\t\t'cssClasses': {\n\t\t\t\ttarget: 'target',\n\t\t\t\tbase: 'base',\n\t\t\t\torigin: 'origin',\n\t\t\t\thandle: 'handle',\n\t\t\t\thandleLower: 'handle-lower',\n\t\t\t\thandleUpper: 'handle-upper',\n\t\t\t\thorizontal: 'horizontal',\n\t\t\t\tvertical: 'vertical',\n\t\t\t\tbackground: 'background',\n\t\t\t\tconnect: 'connect',\n\t\t\t\tltr: 'ltr',\n\t\t\t\trtl: 'rtl',\n\t\t\t\tdraggable: 'draggable',\n\t\t\t\tdrag: 'state-drag',\n\t\t\t\ttap: 'state-tap',\n\t\t\t\tactive: 'active',\n\t\t\t\tstacking: 'stacking',\n\t\t\t\ttooltip: 'tooltip',\n\t\t\t\tpips: 'pips',\n\t\t\t\tpipsHorizontal: 'pips-horizontal',\n\t\t\t\tpipsVertical: 'pips-vertical',\n\t\t\t\tmarker: 'marker',\n\t\t\t\tmarkerHorizontal: 'marker-horizontal',\n\t\t\t\tmarkerVertical: 'marker-vertical',\n\t\t\t\tmarkerNormal: 'marker-normal',\n\t\t\t\tmarkerLarge: 'marker-large',\n\t\t\t\tmarkerSub: 'marker-sub',\n\t\t\t\tvalue: 'value',\n\t\t\t\tvalueHorizontal: 'value-horizontal',\n\t\t\t\tvalueVertical: 'value-vertical',\n\t\t\t\tvalueNormal: 'value-normal',\n\t\t\t\tvalueLarge: 'value-large',\n\t\t\t\tvalueSub: 'value-sub'\n\t\t\t}\n\t\t};\n\n\t\t// Run all options through a testing mechanism to ensure correct\n\t\t// input. It should be noted that options might get modified to\n\t\t// be handled properly. E.g. wrapping integers in arrays.\n\t\tObject.keys(tests).forEach(function( name ){\n\n\t\t\t// If the option isn't set, but it is required, throw an error.\n\t\t\tif ( options[name] === undefined && defaults[name] === undefined ) {\n\n\t\t\t\tif ( tests[name].r ) {\n\t\t\t\t\tthrow new Error(\"noUiSlider: '\" + name + \"' is required.\");\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\ttests[name].t( parsed, options[name] === undefined ? defaults[name] : options[name] );\n\t\t});\n\n\t\t// Forward pips options\n\t\tparsed.pips = options.pips;\n\n\t\t// Pre-define the styles.\n\t\tparsed.style = parsed.ort ? 'top' : 'left';\n\n\t\treturn parsed;\n\t}\n\n\nfunction closure ( target, options, originalOptions ){\n\tvar\n\t\tactions = getActions( ),\n\t\t// All variables local to 'closure' are prefixed with 'scope_'\n\t\tscope_Target = target,\n\t\tscope_Locations = [-1, -1],\n\t\tscope_Base,\n\t\tscope_Handles,\n\t\tscope_Spectrum = options.spectrum,\n\t\tscope_Values = [],\n\t\tscope_Events = {},\n\t\tscope_Self;\n\n\n\t// Delimit proposed values for handle positions.\n\tfunction getPositions ( a, b, delimit ) {\n\n\t\t// Add movement to current position.\n\t\tvar c = a + b[0], d = a + b[1];\n\n\t\t// Only alter the other position on drag,\n\t\t// not on standard sliding.\n\t\tif ( delimit ) {\n\t\t\tif ( c < 0 ) {\n\t\t\t\td += Math.abs(c);\n\t\t\t}\n\t\t\tif ( d > 100 ) {\n\t\t\t\tc -= ( d - 100 );\n\t\t\t}\n\n\t\t\t// Limit values to 0 and 100.\n\t\t\treturn [limit(c), limit(d)];\n\t\t}\n\n\t\treturn [c,d];\n\t}\n\n\t// Provide a clean event with standardized offset values.\n\tfunction fixEvent ( e, pageOffset ) {\n\n\t\t// Prevent scrolling and panning on touch events, while\n\t\t// attempting to slide. The tap event also depends on this.\n\t\te.preventDefault();\n\n\t\t// Filter the event to register the type, which can be\n\t\t// touch, mouse or pointer. Offset changes need to be\n\t\t// made on an event specific basis.\n\t\tvar touch = e.type.indexOf('touch') === 0,\n\t\t\tmouse = e.type.indexOf('mouse') === 0,\n\t\t\tpointer = e.type.indexOf('pointer') === 0,\n\t\t\tx,y, event = e;\n\n\t\t// IE10 implemented pointer events with a prefix;\n\t\tif ( e.type.indexOf('MSPointer') === 0 ) {\n\t\t\tpointer = true;\n\t\t}\n\n\t\tif ( touch ) {\n\t\t\t// noUiSlider supports one movement at a time,\n\t\t\t// so we can select the first 'changedTouch'.\n\t\t\tx = e.changedTouches[0].pageX;\n\t\t\ty = e.changedTouches[0].pageY;\n\t\t}\n\n\t\tpageOffset = pageOffset || getPageOffset();\n\n\t\tif ( mouse || pointer ) {\n\t\t\tx = e.clientX + pageOffset.x;\n\t\t\ty = e.clientY + pageOffset.y;\n\t\t}\n\n\t\tevent.pageOffset = pageOffset;\n\t\tevent.points = [x, y];\n\t\tevent.cursor = mouse || pointer; // Fix #435\n\n\t\treturn event;\n\t}\n\n\t// Append a handle to the base.\n\tfunction addHandle ( direction, index ) {\n\n\t\tvar origin = document.createElement('div'),\n\t\t\thandle = document.createElement('div'),\n\t\t\tclassModifier = [options.cssClasses.handleLower, options.cssClasses.handleUpper];\n\n\t\tif ( direction ) {\n\t\t\tclassModifier.reverse();\n\t\t}\n\n\t\taddClass(handle, options.cssClasses.handle);\n\t\taddClass(handle, classModifier[index]);\n\n\t\taddClass(origin, options.cssClasses.origin);\n\t\torigin.appendChild(handle);\n\n\t\treturn origin;\n\t}\n\n\t// Add the proper connection classes.\n\tfunction addConnection ( connect, target, handles ) {\n\n\t\t// Apply the required connection classes to the elements\n\t\t// that need them. Some classes are made up for several\n\t\t// segments listed in the class list, to allow easy\n\t\t// renaming and provide a minor compression benefit.\n\t\tswitch ( connect ) {\n\t\t\tcase 1:\taddClass(target, options.cssClasses.connect);\n\t\t\t\t\taddClass(handles[0], options.cssClasses.background);\n\t\t\t\t\tbreak;\n\t\t\tcase 3: addClass(handles[1], options.cssClasses.background);\n\t\t\t\t\t/* falls through */\n\t\t\tcase 2: addClass(handles[0], options.cssClasses.connect);\n\t\t\t\t\t/* falls through */\n\t\t\tcase 0: addClass(target, options.cssClasses.background);\n\t\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Add handles to the slider base.\n\tfunction addHandles ( nrHandles, direction, base ) {\n\n\t\tvar index, handles = [];\n\n\t\t// Append handles.\n\t\tfor ( index = 0; index < nrHandles; index += 1 ) {\n\n\t\t\t// Keep a list of all added handles.\n\t\t\thandles.push( base.appendChild(addHandle( direction, index )) );\n\t\t}\n\n\t\treturn handles;\n\t}\n\n\t// Initialize a single slider.\n\tfunction addSlider ( direction, orientation, target ) {\n\n\t\t// Apply classes and data to the target.\n\t\taddClass(target, options.cssClasses.target);\n\n\t\tif ( direction === 0 ) {\n\t\t\taddClass(target, options.cssClasses.ltr);\n\t\t} else {\n\t\t\taddClass(target, options.cssClasses.rtl);\n\t\t}\n\n\t\tif ( orientation === 0 ) {\n\t\t\taddClass(target, options.cssClasses.horizontal);\n\t\t} else {\n\t\t\taddClass(target, options.cssClasses.vertical);\n\t\t}\n\n\t\tvar div = document.createElement('div');\n\t\taddClass(div, options.cssClasses.base);\n\t\ttarget.appendChild(div);\n\t\treturn div;\n\t}\n\n\n\tfunction addTooltip ( handle, index ) {\n\n\t\tif ( !options.tooltips[index] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar element = document.createElement('div');\n\t\telement.className = options.cssClasses.tooltip;\n\t\treturn handle.firstChild.appendChild(element);\n\t}\n\n\t// The tooltips option is a shorthand for using the 'update' event.\n\tfunction tooltips ( ) {\n\n\t\tif ( options.dir ) {\n\t\t\toptions.tooltips.reverse();\n\t\t}\n\n\t\t// Tooltips are added with options.tooltips in original order.\n\t\tvar tips = scope_Handles.map(addTooltip);\n\n\t\tif ( options.dir ) {\n\t\t\ttips.reverse();\n\t\t\toptions.tooltips.reverse();\n\t\t}\n\n\t\tbindEvent('update', function(f, o, r) {\n\t\t\tif ( tips[o] ) {\n\t\t\t\ttips[o].innerHTML = options.tooltips[o] === true ? f[o] : options.tooltips[o].to(r[o]);\n\t\t\t}\n\t\t});\n\t}\n\n\n\tfunction getGroup ( mode, values, stepped ) {\n\n\t\t// Use the range.\n\t\tif ( mode === 'range' || mode === 'steps' ) {\n\t\t\treturn scope_Spectrum.xVal;\n\t\t}\n\n\t\tif ( mode === 'count' ) {\n\n\t\t\t// Divide 0 - 100 in 'count' parts.\n\t\t\tvar spread = ( 100 / (values-1) ), v, i = 0;\n\t\t\tvalues = [];\n\n\t\t\t// List these parts and have them handled as 'positions'.\n\t\t\twhile ((v=i++*spread) <= 100 ) {\n\t\t\t\tvalues.push(v);\n\t\t\t}\n\n\t\t\tmode = 'positions';\n\t\t}\n\n\t\tif ( mode === 'positions' ) {\n\n\t\t\t// Map all percentages to on-range values.\n\t\t\treturn values.map(function( value ){\n\t\t\t\treturn scope_Spectrum.fromStepping( stepped ? scope_Spectrum.getStep( value ) : value );\n\t\t\t});\n\t\t}\n\n\t\tif ( mode === 'values' ) {\n\n\t\t\t// If the value must be stepped, it needs to be converted to a percentage first.\n\t\t\tif ( stepped ) {\n\n\t\t\t\treturn values.map(function( value ){\n\n\t\t\t\t\t// Convert to percentage, apply step, return to value.\n\t\t\t\t\treturn scope_Spectrum.fromStepping( scope_Spectrum.getStep( scope_Spectrum.toStepping( value ) ) );\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t\t// Otherwise, we can simply use the values.\n\t\t\treturn values;\n\t\t}\n\t}\n\n\tfunction generateSpread ( density, mode, group ) {\n\n\t\tfunction safeIncrement(value, increment) {\n\t\t\t// Avoid floating point variance by dropping the smallest decimal places.\n\t\t\treturn (value + increment).toFixed(7) / 1;\n\t\t}\n\n\t\tvar originalSpectrumDirection = scope_Spectrum.direction,\n\t\t\tindexes = {},\n\t\t\tfirstInRange = scope_Spectrum.xVal[0],\n\t\t\tlastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1],\n\t\t\tignoreFirst = false,\n\t\t\tignoreLast = false,\n\t\t\tprevPct = 0;\n\n\t\t// This function loops the spectrum in an ltr linear fashion,\n\t\t// while the toStepping method is direction aware. Trick it into\n\t\t// believing it is ltr.\n\t\tscope_Spectrum.direction = 0;\n\n\t\t// Create a copy of the group, sort it and filter away all duplicates.\n\t\tgroup = unique(group.slice().sort(function(a, b){ return a - b; }));\n\n\t\t// Make sure the range starts with the first element.\n\t\tif ( group[0] !== firstInRange ) {\n\t\t\tgroup.unshift(firstInRange);\n\t\t\tignoreFirst = true;\n\t\t}\n\n\t\t// Likewise for the last one.\n\t\tif ( group[group.length - 1] !== lastInRange ) {\n\t\t\tgroup.push(lastInRange);\n\t\t\tignoreLast = true;\n\t\t}\n\n\t\tgroup.forEach(function ( current, index ) {\n\n\t\t\t// Get the current step and the lower + upper positions.\n\t\t\tvar step, i, q,\n\t\t\t\tlow = current,\n\t\t\t\thigh = group[index+1],\n\t\t\t\tnewPct, pctDifference, pctPos, type,\n\t\t\t\tsteps, realSteps, stepsize;\n\n\t\t\t// When using 'steps' mode, use the provided steps.\n\t\t\t// Otherwise, we'll step on to the next subrange.\n\t\t\tif ( mode === 'steps' ) {\n\t\t\t\tstep = scope_Spectrum.xNumSteps[ index ];\n\t\t\t}\n\n\t\t\t// Default to a 'full' step.\n\t\t\tif ( !step ) {\n\t\t\t\tstep = high-low;\n\t\t\t}\n\n\t\t\t// Low can be 0, so test for false. If high is undefined,\n\t\t\t// we are at the last subrange. Index 0 is already handled.\n\t\t\tif ( low === false || high === undefined ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Find all steps in the subrange.\n\t\t\tfor ( i = low; i <= high; i = safeIncrement(i, step) ) {\n\n\t\t\t\t// Get the percentage value for the current step,\n\t\t\t\t// calculate the size for the subrange.\n\t\t\t\tnewPct = scope_Spectrum.toStepping( i );\n\t\t\t\tpctDifference = newPct - prevPct;\n\n\t\t\t\tsteps = pctDifference / density;\n\t\t\t\trealSteps = Math.round(steps);\n\n\t\t\t\t// This ratio represents the ammount of percentage-space a point indicates.\n\t\t\t\t// For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided.\n\t\t\t\t// Round the percentage offset to an even number, then divide by two\n\t\t\t\t// to spread the offset on both sides of the range.\n\t\t\t\tstepsize = pctDifference/realSteps;\n\n\t\t\t\t// Divide all points evenly, adding the correct number to this subrange.\n\t\t\t\t// Run up to <= so that 100% gets a point, event if ignoreLast is set.\n\t\t\t\tfor ( q = 1; q <= realSteps; q += 1 ) {\n\n\t\t\t\t\t// The ratio between the rounded value and the actual size might be ~1% off.\n\t\t\t\t\t// Correct the percentage offset by the number of points\n\t\t\t\t\t// per subrange. density = 1 will result in 100 points on the\n\t\t\t\t\t// full range, 2 for 50, 4 for 25, etc.\n\t\t\t\t\tpctPos = prevPct + ( q * stepsize );\n\t\t\t\t\tindexes[pctPos.toFixed(5)] = ['x', 0];\n\t\t\t\t}\n\n\t\t\t\t// Determine the point type.\n\t\t\t\ttype = (group.indexOf(i) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 );\n\n\t\t\t\t// Enforce the 'ignoreFirst' option by overwriting the type for 0.\n\t\t\t\tif ( !index && ignoreFirst ) {\n\t\t\t\t\ttype = 0;\n\t\t\t\t}\n\n\t\t\t\tif ( !(i === high && ignoreLast)) {\n\t\t\t\t\t// Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\n\t\t\t\t\tindexes[newPct.toFixed(5)] = [i, type];\n\t\t\t\t}\n\n\t\t\t\t// Update the percentage count.\n\t\t\t\tprevPct = newPct;\n\t\t\t}\n\t\t});\n\n\t\t// Reset the spectrum.\n\t\tscope_Spectrum.direction = originalSpectrumDirection;\n\n\t\treturn indexes;\n\t}\n\n\tfunction addMarking ( spread, filterFunc, formatter ) {\n\n\t\tvar element = document.createElement('div'),\n\t\t\tout = '',\n\t\t\tvalueSizeClasses = [\n\t\t\t\toptions.cssClasses.valueNormal,\n\t\t\t\toptions.cssClasses.valueLarge,\n\t\t\t\toptions.cssClasses.valueSub\n\t\t\t],\n\t\t\tmarkerSizeClasses = [\n\t\t\t\toptions.cssClasses.markerNormal,\n\t\t\t\toptions.cssClasses.markerLarge,\n\t\t\t\toptions.cssClasses.markerSub\n\t\t\t],\n\t\t\tvalueOrientationClasses = [\n\t\t\t\toptions.cssClasses.valueHorizontal,\n\t\t\t\toptions.cssClasses.valueVertical\n\t\t\t],\n\t\t\tmarkerOrientationClasses = [\n\t\t\t\toptions.cssClasses.markerHorizontal,\n\t\t\t\toptions.cssClasses.markerVertical\n\t\t\t];\n\n\t\taddClass(element, options.cssClasses.pips);\n\t\taddClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\n\n\t\tfunction getClasses( type, source ){\n\t\t\tvar a = source === options.cssClasses.value,\n\t\t\t\torientationClasses = a ? valueOrientationClasses : markerOrientationClasses,\n\t\t\t\tsizeClasses = a ? valueSizeClasses : markerSizeClasses;\n\n\t\t\treturn source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type];\n\t\t}\n\n\t\tfunction getTags( offset, source, values ) {\n\t\t\treturn 'class=\"' + getClasses(values[1], source) + '\" style=\"' + options.style + ': ' + offset + '%\"';\n\t\t}\n\n\t\tfunction addSpread ( offset, values ){\n\n\t\t\tif ( scope_Spectrum.direction ) {\n\t\t\t\toffset = 100 - offset;\n\t\t\t}\n\n\t\t\t// Apply the filter function, if it is set.\n\t\t\tvalues[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1];\n\n\t\t\t// Add a marker for every point\n\t\t\tout += '<div ' + getTags(offset, options.cssClasses.marker, values) + '></div>';\n\n\t\t\t// Values are only appended for points marked '1' or '2'.\n\t\t\tif ( values[1] ) {\n\t\t\t\tout += '<div ' + getTags(offset, options.cssClasses.value, values) + '>' + formatter.to(values[0]) + '</div>';\n\t\t\t}\n\t\t}\n\n\t\t// Append all points.\n\t\tObject.keys(spread).forEach(function(a){\n\t\t\taddSpread(a, spread[a]);\n\t\t});\n\n\t\telement.innerHTML = out;\n\n\t\treturn element;\n\t}\n\n\tfunction pips ( grid ) {\n\n\tvar mode = grid.mode,\n\t\tdensity = grid.density || 1,\n\t\tfilter = grid.filter || false,\n\t\tvalues = grid.values || false,\n\t\tstepped = grid.stepped || false,\n\t\tgroup = getGroup( mode, values, stepped ),\n\t\tspread = generateSpread( density, mode, group ),\n\t\tformat = grid.format || {\n\t\t\tto: Math.round\n\t\t};\n\n\t\treturn scope_Target.appendChild(addMarking(\n\t\t\tspread,\n\t\t\tfilter,\n\t\t\tformat\n\t\t));\n\t}\n\n\n\t// Shorthand for base dimensions.\n\tfunction baseSize ( ) {\n\t\tvar rect = scope_Base.getBoundingClientRect(), alt = 'offset' + ['Width', 'Height'][options.ort];\n\t\treturn options.ort === 0 ? (rect.width||scope_Base[alt]) : (rect.height||scope_Base[alt]);\n\t}\n\n\t// External event handling\n\tfunction fireEvent ( event, handleNumber, tap ) {\n\n\t\tvar i;\n\n\t\t// During initialization, do not fire events.\n\t\tfor ( i = 0; i < options.handles; i++ ) {\n\t\t\tif ( scope_Locations[i] === -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( handleNumber !== undefined && options.handles !== 1 ) {\n\t\t\thandleNumber = Math.abs(handleNumber - options.dir);\n\t\t}\n\n\t\tObject.keys(scope_Events).forEach(function( targetEvent ) {\n\n\t\t\tvar eventType = targetEvent.split('.')[0];\n\n\t\t\tif ( event === eventType ) {\n\t\t\t\tscope_Events[targetEvent].forEach(function( callback ) {\n\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\t// Use the slider public API as the scope ('this')\n\t\t\t\t\t\tscope_Self,\n\t\t\t\t\t\t// Return values as array, so arg_1[arg_2] is always valid.\n\t\t\t\t\t\tasArray(valueGet()),\n\t\t\t\t\t\t// Handle index, 0 or 1\n\t\t\t\t\t\thandleNumber,\n\t\t\t\t\t\t// Unformatted slider values\n\t\t\t\t\t\tasArray(inSliderOrder(Array.prototype.slice.call(scope_Values))),\n\t\t\t\t\t\t// Event is fired by tap, true or false\n\t\t\t\t\t\ttap || false,\n\t\t\t\t\t\t// Left offset of the handle, in relation to the slider\n\t\t\t\t\t\tscope_Locations\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t// Returns the input array, respecting the slider direction configuration.\n\tfunction inSliderOrder ( values ) {\n\n\t\t// If only one handle is used, return a single value.\n\t\tif ( values.length === 1 ){\n\t\t\treturn values[0];\n\t\t}\n\n\t\tif ( options.dir ) {\n\t\t\treturn values.reverse();\n\t\t}\n\n\t\treturn values;\n\t}\n\n\n\t// Handler for attaching events trough a proxy.\n\tfunction attach ( events, element, callback, data ) {\n\n\t\t// This function can be used to 'filter' events to the slider.\n\t\t// element is a node, not a nodeList\n\n\t\tvar method = function ( e ){\n\n\t\t\tif ( scope_Target.hasAttribute('disabled') ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Stop if an active 'tap' transition is taking place.\n\t\t\tif ( hasClass(scope_Target, options.cssClasses.tap) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\te = fixEvent(e, data.pageOffset);\n\n\t\t\t// Ignore right or middle clicks on start #454\n\t\t\tif ( events === actions.start && e.buttons !== undefined && e.buttons > 1 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Ignore right or middle clicks on start #454\n\t\t\tif ( data.hover && e.buttons ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\te.calcPoint = e.points[ options.ort ];\n\n\t\t\t// Call the event handler with the event [ and additional data ].\n\t\t\tcallback ( e, data );\n\n\t\t}, methods = [];\n\n\t\t// Bind a closure on the target for every event type.\n\t\tevents.split(' ').forEach(function( eventName ){\n\t\t\telement.addEventListener(eventName, method, false);\n\t\t\tmethods.push([eventName, method]);\n\t\t});\n\n\t\treturn methods;\n\t}\n\n\t// Handle movement on document for handle and range drag.\n\tfunction move ( event, data ) {\n\n\t\t// Fix #498\n\t\t// Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\n\t\t// https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\n\t\t// IE9 has .buttons and .which zero on mousemove.\n\t\t// Firefox breaks the spec MDN defines.\n\t\tif ( navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0 ) {\n\t\t\treturn end(event, data);\n\t\t}\n\n\t\tvar handles = data.handles || scope_Handles, positions, state = false,\n\t\t\tproposal = ((event.calcPoint - data.start) * 100) / data.baseSize,\n\t\t\thandleNumber = handles[0] === scope_Handles[0] ? 0 : 1, i;\n\n\t\t// Calculate relative positions for the handles.\n\t\tpositions = getPositions( proposal, data.positions, handles.length > 1);\n\n\t\tstate = setHandle ( handles[0], positions[handleNumber], handles.length === 1 );\n\n\t\tif ( handles.length > 1 ) {\n\n\t\t\tstate = setHandle ( handles[1], positions[handleNumber?0:1], false ) || state;\n\n\t\t\tif ( state ) {\n\t\t\t\t// fire for both handles\n\t\t\t\tfor ( i = 0; i < data.handles.length; i++ ) {\n\t\t\t\t\tfireEvent('slide', i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( state ) {\n\t\t\t// Fire for a single handle\n\t\t\tfireEvent('slide', handleNumber);\n\t\t}\n\t}\n\n\t// Unbind move events on document, call callbacks.\n\tfunction end ( event, data ) {\n\n\t\t// The handle is no longer active, so remove the class.\n\t\tvar active = scope_Base.querySelector( '.' + options.cssClasses.active ),\n\t\t\thandleNumber = data.handles[0] === scope_Handles[0] ? 0 : 1;\n\n\t\tif ( active !== null ) {\n\t\t\tremoveClass(active, options.cssClasses.active);\n\t\t}\n\n\t\t// Remove cursor styles and text-selection events bound to the body.\n\t\tif ( event.cursor ) {\n\t\t\tdocument.body.style.cursor = '';\n\t\t\tdocument.body.removeEventListener('selectstart', document.body.noUiListener);\n\t\t}\n\n\t\tvar d = document.documentElement;\n\n\t\t// Unbind the move and end events, which are added on 'start'.\n\t\td.noUiListeners.forEach(function( c ) {\n\t\t\td.removeEventListener(c[0], c[1]);\n\t\t});\n\n\t\t// Remove dragging class.\n\t\tremoveClass(scope_Target, options.cssClasses.drag);\n\n\t\t// Fire the change and set events.\n\t\tfireEvent('set', handleNumber);\n\t\tfireEvent('change', handleNumber);\n\n\t\t// If this is a standard handle movement, fire the end event.\n\t\tif ( data.handleNumber !== undefined ) {\n\t\t\tfireEvent('end', data.handleNumber);\n\t\t}\n\t}\n\n\t// Fire 'end' when a mouse or pen leaves the document.\n\tfunction documentLeave ( event, data ) {\n\t\tif ( event.type === \"mouseout\" && event.target.nodeName === \"HTML\" && event.relatedTarget === null ){\n\t\t\tend ( event, data );\n\t\t}\n\t}\n\n\t// Bind move events on document.\n\tfunction start ( event, data ) {\n\n\t\tvar d = document.documentElement;\n\n\t\t// Mark the handle as 'active' so it can be styled.\n\t\tif ( data.handles.length === 1 ) {\n\t\t\t// Support 'disabled' handles\n\t\t\tif ( data.handles[0].hasAttribute('disabled') ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\taddClass(data.handles[0].children[0], options.cssClasses.active);\n\t\t}\n\n\t\t// Fix #551, where a handle gets selected instead of dragged.\n\t\tevent.preventDefault();\n\n\t\t// A drag should never propagate up to the 'tap' event.\n\t\tevent.stopPropagation();\n\n\t\t// Attach the move and end events.\n\t\tvar moveEvent = attach(actions.move, d, move, {\n\t\t\tstart: event.calcPoint,\n\t\t\tbaseSize: baseSize(),\n\t\t\tpageOffset: event.pageOffset,\n\t\t\thandles: data.handles,\n\t\t\thandleNumber: data.handleNumber,\n\t\t\tbuttonsProperty: event.buttons,\n\t\t\tpositions: [\n\t\t\t\tscope_Locations[0],\n\t\t\t\tscope_Locations[scope_Handles.length - 1]\n\t\t\t]\n\t\t}), endEvent = attach(actions.end, d, end, {\n\t\t\thandles: data.handles,\n\t\t\thandleNumber: data.handleNumber\n\t\t});\n\n\t\tvar outEvent = attach(\"mouseout\", d, documentLeave, {\n\t\t\thandles: data.handles,\n\t\t\thandleNumber: data.handleNumber\n\t\t});\n\n\t\td.noUiListeners = moveEvent.concat(endEvent, outEvent);\n\n\t\t// Text selection isn't an issue on touch devices,\n\t\t// so adding cursor styles can be skipped.\n\t\tif ( event.cursor ) {\n\n\t\t\t// Prevent the 'I' cursor and extend the range-drag cursor.\n\t\t\tdocument.body.style.cursor = getComputedStyle(event.target).cursor;\n\n\t\t\t// Mark the target with a dragging state.\n\t\t\tif ( scope_Handles.length > 1 ) {\n\t\t\t\taddClass(scope_Target, options.cssClasses.drag);\n\t\t\t}\n\n\t\t\tvar f = function(){\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t\tdocument.body.noUiListener = f;\n\n\t\t\t// Prevent text selection when dragging the handles.\n\t\t\tdocument.body.addEventListener('selectstart', f, false);\n\t\t}\n\n\t\tif ( data.handleNumber !== undefined ) {\n\t\t\tfireEvent('start', data.handleNumber);\n\t\t}\n\t}\n\n\t// Move closest handle to tapped location.\n\tfunction tap ( event ) {\n\n\t\tvar location = event.calcPoint, total = 0, handleNumber, to;\n\n\t\t// The tap event shouldn't propagate up and cause 'edge' to run.\n\t\tevent.stopPropagation();\n\n\t\t// Add up the handle offsets.\n\t\tscope_Handles.forEach(function(a){\n\t\t\ttotal += offset(a)[ options.style ];\n\t\t});\n\n\t\t// Find the handle closest to the tapped position.\n\t\thandleNumber = ( location < total/2 || scope_Handles.length === 1 ) ? 0 : 1;\n\n\t\t// Check if handler is not disablet if yes set number to the next handler\n\t\tif (scope_Handles[handleNumber].hasAttribute('disabled')) {\n\t\t\thandleNumber = handleNumber ? 0 : 1;\n\t\t}\n\n\t\tlocation -= offset(scope_Base)[ options.style ];\n\n\t\t// Calculate the new position.\n\t\tto = ( location * 100 ) / baseSize();\n\n\t\tif ( !options.events.snap ) {\n\t\t\t// Flag the slider as it is now in a transitional state.\n\t\t\t// Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\n\t\t\taddClassFor( scope_Target, options.cssClasses.tap, options.animationDuration );\n\t\t}\n\n\t\t// Support 'disabled' handles\n\t\tif ( scope_Handles[handleNumber].hasAttribute('disabled') ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Find the closest handle and calculate the tapped point.\n\t\t// The set handle to the new position.\n\t\tsetHandle( scope_Handles[handleNumber], to );\n\n\t\tfireEvent('slide', handleNumber, true);\n\t\tfireEvent('set', handleNumber, true);\n\t\tfireEvent('change', handleNumber, true);\n\n\t\tif ( options.events.snap ) {\n\t\t\tstart(event, { handles: [scope_Handles[handleNumber]] });\n\t\t}\n\t}\n\n\t// Fires a 'hover' event for a hovered mouse/pen position.\n\tfunction hover ( event ) {\n\n\t\tvar location = event.calcPoint - offset(scope_Base)[ options.style ],\n\t\t\tto = scope_Spectrum.getStep(( location * 100 ) / baseSize()),\n\t\t\tvalue = scope_Spectrum.fromStepping( to );\n\n\t\tObject.keys(scope_Events).forEach(function( targetEvent ) {\n\t\t\tif ( 'hover' === targetEvent.split('.')[0] ) {\n\t\t\t\tscope_Events[targetEvent].forEach(function( callback ) {\n\t\t\t\t\tcallback.call( scope_Self, value );\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t// Attach events to several slider parts.\n\tfunction events ( behaviour ) {\n\n\t\t// Attach the standard drag event to the handles.\n\t\tif ( !behaviour.fixed ) {\n\n\t\t\tscope_Handles.forEach(function( handle, index ){\n\n\t\t\t\t// These events are only bound to the visual handle\n\t\t\t\t// element, not the 'real' origin element.\n\t\t\t\tattach ( actions.start, handle.children[0], start, {\n\t\t\t\t\thandles: [ handle ],\n\t\t\t\t\thandleNumber: index\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t// Attach the tap event to the slider base.\n\t\tif ( behaviour.tap ) {\n\n\t\t\tattach ( actions.start, scope_Base, tap, {\n\t\t\t\thandles: scope_Handles\n\t\t\t});\n\t\t}\n\n\t\t// Fire hover events\n\t\tif ( behaviour.hover ) {\n\t\t\tattach ( actions.move, scope_Base, hover, { hover: true } );\n\t\t}\n\n\t\t// Make the range draggable.\n\t\tif ( behaviour.drag ){\n\n\t\t\tvar drag = [scope_Base.querySelector( '.' + options.cssClasses.connect )];\n\t\t\taddClass(drag[0], options.cssClasses.draggable);\n\n\t\t\t// When the range is fixed, the entire range can\n\t\t\t// be dragged by the handles. The handle in the first\n\t\t\t// origin will propagate the start event upward,\n\t\t\t// but it needs to be bound manually on the other.\n\t\t\tif ( behaviour.fixed ) {\n\t\t\t\tdrag.push(scope_Handles[(drag[0] === scope_Handles[0] ? 1 : 0)].children[0]);\n\t\t\t}\n\n\t\t\tdrag.forEach(function( element ) {\n\t\t\t\tattach ( actions.start, element, start, {\n\t\t\t\t\thandles: scope_Handles\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\n\t// Test suggested values and apply margin, step.\n\tfunction setHandle ( handle, to, noLimitOption ) {\n\n\t\tvar trigger = handle !== scope_Handles[0] ? 1 : 0,\n\t\t\tlowerMargin = scope_Locations[0] + options.margin,\n\t\t\tupperMargin = scope_Locations[1] - options.margin,\n\t\t\tlowerLimit = scope_Locations[0] + options.limit,\n\t\t\tupperLimit = scope_Locations[1] - options.limit;\n\n\t\t// For sliders with multiple handles,\n\t\t// limit movement to the other handle.\n\t\t// Apply the margin option by adding it to the handle positions.\n\t\tif ( scope_Handles.length > 1 ) {\n\t\t\tto = trigger ? Math.max( to, lowerMargin ) : Math.min( to, upperMargin );\n\t\t}\n\n\t\t// The limit option has the opposite effect, limiting handles to a\n\t\t// maximum distance from another. Limit must be > 0, as otherwise\n\t\t// handles would be unmoveable. 'noLimitOption' is set to 'false'\n\t\t// for the .val() method, except for pass 4/4.\n\t\tif ( noLimitOption !== false && options.limit && scope_Handles.length > 1 ) {\n\t\t\tto = trigger ? Math.min ( to, lowerLimit ) : Math.max( to, upperLimit );\n\t\t}\n\n\t\t// Handle the step option.\n\t\tto = scope_Spectrum.getStep( to );\n\n\t\t// Limit percentage to the 0 - 100 range\n\t\tto = limit(to);\n\n\t\t// Return false if handle can't move\n\t\tif ( to === scope_Locations[trigger] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Set the handle to the new position.\n\t\t// Use requestAnimationFrame for efficient painting.\n\t\t// No significant effect in Chrome, Edge sees dramatic\n\t\t// performace improvements.\n\t\tif ( window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame(function(){\n\t\t\t\thandle.style[options.style] = to + '%';\n\t\t\t});\n\t\t} else {\n\t\t\thandle.style[options.style] = to + '%';\n\t\t}\n\n\t\t// Force proper handle stacking\n\t\tif ( !handle.previousSibling ) {\n\t\t\tremoveClass(handle, options.cssClasses.stacking);\n\t\t\tif ( to > 50 ) {\n\t\t\t\taddClass(handle, options.cssClasses.stacking);\n\t\t\t}\n\t\t}\n\n\t\t// Update locations.\n\t\tscope_Locations[trigger] = to;\n\n\t\t// Convert the value to the slider stepping/range.\n\t\tscope_Values[trigger] = scope_Spectrum.fromStepping( to );\n\n\t\tfireEvent('update', trigger);\n\n\t\treturn true;\n\t}\n\n\t// Loop values from value method and apply them.\n\tfunction setValues ( count, values ) {\n\n\t\tvar i, trigger, to;\n\n\t\t// With the limit option, we'll need another limiting pass.\n\t\tif ( options.limit ) {\n\t\t\tcount += 1;\n\t\t}\n\n\t\t// If there are multiple handles to be set run the setting\n\t\t// mechanism twice for the first handle, to make sure it\n\t\t// can be bounced of the second one properly.\n\t\tfor ( i = 0; i < count; i += 1 ) {\n\n\t\t\ttrigger = i%2;\n\n\t\t\t// Get the current argument from the array.\n\t\t\tto = values[trigger];\n\n\t\t\t// Setting with null indicates an 'ignore'.\n\t\t\t// Inputting 'false' is invalid.\n\t\t\tif ( to !== null && to !== false ) {\n\n\t\t\t\t// If a formatted number was passed, attemt to decode it.\n\t\t\t\tif ( typeof to === 'number' ) {\n\t\t\t\t\tto = String(to);\n\t\t\t\t}\n\n\t\t\t\tto = options.format.from( to );\n\n\t\t\t\t// Request an update for all links if the value was invalid.\n\t\t\t\t// Do so too if setting the handle fails.\n\t\t\t\tif ( to === false || isNaN(to) || setHandle( scope_Handles[trigger], scope_Spectrum.toStepping( to ), i === (3 - options.dir) ) === false ) {\n\t\t\t\t\tfireEvent('update', trigger);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the slider value.\n\tfunction valueSet ( input, fireSetEvent ) {\n\n\t\tvar count, values = asArray( input ), i;\n\n\t\t// Event fires by default\n\t\tfireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent);\n\n\t\t// The RTL settings is implemented by reversing the front-end,\n\t\t// internal mechanisms are the same.\n\t\tif ( options.dir && options.handles > 1 ) {\n\t\t\tvalues.reverse();\n\t\t}\n\n\t\t// Animation is optional.\n\t\t// Make sure the initial values where set before using animated placement.\n\t\tif ( options.animate && scope_Locations[0] !== -1 ) {\n\t\t\taddClassFor( scope_Target, options.cssClasses.tap, options.animationDuration );\n\t\t}\n\n\t\t// Determine how often to set the handles.\n\t\tcount = scope_Handles.length > 1 ? 3 : 1;\n\n\t\tif ( values.length === 1 ) {\n\t\t\tcount = 1;\n\t\t}\n\n\t\tsetValues ( count, values );\n\n\t\t// Fire the 'set' event for both handles.\n\t\tfor ( i = 0; i < scope_Handles.length; i++ ) {\n\n\t\t\t// Fire the event only for handles that received a new value, as per #579\n\t\t\tif ( values[i] !== null && fireSetEvent ) {\n\t\t\t\tfireEvent('set', i);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Get the slider value.\n\tfunction valueGet ( ) {\n\n\t\tvar i, retour = [];\n\n\t\t// Get the value from all handles.\n\t\tfor ( i = 0; i < options.handles; i += 1 ){\n\t\t\tretour[i] = options.format.to( scope_Values[i] );\n\t\t}\n\n\t\treturn inSliderOrder( retour );\n\t}\n\n\t// Removes classes from the root and empties it.\n\tfunction destroy ( ) {\n\n\t\tfor ( var key in options.cssClasses ) {\n\t\t\tif ( !options.cssClasses.hasOwnProperty(key) ) { continue; }\n\t\t\tremoveClass(scope_Target, options.cssClasses[key]);\n\t\t}\n\n\t\twhile (scope_Target.firstChild) {\n\t\t\tscope_Target.removeChild(scope_Target.firstChild);\n\t\t}\n\n\t\tdelete scope_Target.noUiSlider;\n\t}\n\n\t// Get the current step size for the slider.\n\tfunction getCurrentStep ( ) {\n\n\t\t// Check all locations, map them to their stepping point.\n\t\t// Get the step point, then find it in the input list.\n\t\tvar retour = scope_Locations.map(function( location, index ){\n\n\t\t\tvar step = scope_Spectrum.getApplicableStep( location ),\n\n\t\t\t\t// As per #391, the comparison for the decrement step can have some rounding issues.\n\t\t\t\t// Round the value to the precision used in the step.\n\t\t\t\tstepDecimals = countDecimals(String(step[2])),\n\n\t\t\t\t// Get the current numeric value\n\t\t\t\tvalue = scope_Values[index],\n\n\t\t\t\t// To move the slider 'one step up', the current step value needs to be added.\n\t\t\t\t// Use null if we are at the maximum slider value.\n\t\t\t\tincrement = location === 100 ? null : step[2],\n\n\t\t\t\t// Going 'one step down' might put the slider in a different sub-range, so we\n\t\t\t\t// need to switch between the current or the previous step.\n\t\t\t\tprev = Number((value - step[2]).toFixed(stepDecimals)),\n\n\t\t\t\t// If the value fits the step, return the current step value. Otherwise, use the\n\t\t\t\t// previous step. Return null if the slider is at its minimum value.\n\t\t\t\tdecrement = location === 0 ? null : (prev >= step[1]) ? step[2] : (step[0] || false);\n\n\t\t\treturn [decrement, increment];\n\t\t});\n\n\t\t// Return values in the proper order.\n\t\treturn inSliderOrder( retour );\n\t}\n\n\t// Attach an event to this slider, possibly including a namespace\n\tfunction bindEvent ( namespacedEvent, callback ) {\n\t\tscope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\n\t\tscope_Events[namespacedEvent].push(callback);\n\n\t\t// If the event bound is 'update,' fire it immediately for all handles.\n\t\tif ( namespacedEvent.split('.')[0] === 'update' ) {\n\t\t\tscope_Handles.forEach(function(a, index){\n\t\t\t\tfireEvent('update', index);\n\t\t\t});\n\t\t}\n\t}\n\n\t// Undo attachment of event\n\tfunction removeEvent ( namespacedEvent ) {\n\n\t\tvar event = namespacedEvent && namespacedEvent.split('.')[0],\n\t\t\tnamespace = event && namespacedEvent.substring(event.length);\n\n\t\tObject.keys(scope_Events).forEach(function( bind ){\n\n\t\t\tvar tEvent = bind.split('.')[0],\n\t\t\t\ttNamespace = bind.substring(tEvent.length);\n\n\t\t\tif ( (!event || event === tEvent) && (!namespace || namespace === tNamespace) ) {\n\t\t\t\tdelete scope_Events[bind];\n\t\t\t}\n\t\t});\n\t}\n\n\t// Updateable: margin, limit, step, range, animate, snap\n\tfunction updateOptions ( optionsToUpdate, fireSetEvent ) {\n\n\t\t// Spectrum is created using the range, snap, direction and step options.\n\t\t// 'snap' and 'step' can be updated, 'direction' cannot, due to event binding.\n\t\t// If 'snap' and 'step' are not passed, they should remain unchanged.\n\t\tvar v = valueGet(), newOptions = testOptions({\n\t\t\tstart: [0, 0],\n\t\t\tmargin: optionsToUpdate.margin,\n\t\t\tlimit: optionsToUpdate.limit,\n\t\t\tstep: optionsToUpdate.step === undefined ? options.singleStep : optionsToUpdate.step,\n\t\t\trange: optionsToUpdate.range,\n\t\t\tanimate: optionsToUpdate.animate,\n\t\t\tsnap: optionsToUpdate.snap === undefined ? options.snap : optionsToUpdate.snap\n\t\t});\n\n\t\t['margin', 'limit', 'range', 'animate'].forEach(function(name){\n\n\t\t\t// Only change options that we're actually passed to update.\n\t\t\tif ( optionsToUpdate[name] !== undefined ) {\n\t\t\t\toptions[name] = optionsToUpdate[name];\n\t\t\t}\n\t\t});\n\n\t\t// Save current spectrum direction as testOptions in testRange call\n\t\t// doesn't rely on current direction\n\t\tnewOptions.spectrum.direction = scope_Spectrum.direction;\n\t\tscope_Spectrum = newOptions.spectrum;\n\n\t\t// Invalidate the current positioning so valueSet forces an update.\n\t\tscope_Locations = [-1, -1];\n\t\tvalueSet(optionsToUpdate.start || v, fireSetEvent);\n\t}\n\n\n\t// Throw an error if the slider was already initialized.\n\tif ( scope_Target.noUiSlider ) {\n\t\tthrow new Error('Slider was already initialized.');\n\t}\n\n\t// Create the base element, initialise HTML and set classes.\n\t// Add handles and links.\n\tscope_Base = addSlider( options.dir, options.ort, scope_Target );\n\tscope_Handles = addHandles( options.handles, options.dir, scope_Base );\n\n\t// Set the connect classes.\n\taddConnection ( options.connect, scope_Target, scope_Handles );\n\n\tif ( options.pips ) {\n\t\tpips(options.pips);\n\t}\n\n\tif ( options.tooltips ) {\n\t\ttooltips();\n\t}\n\n\tscope_Self = {\n\t\tdestroy: destroy,\n\t\tsteps: getCurrentStep,\n\t\ton: bindEvent,\n\t\toff: removeEvent,\n\t\tget: valueGet,\n\t\tset: valueSet,\n\t\tupdateOptions: updateOptions,\n\t\toptions: originalOptions, // Issue #600\n\t\ttarget: scope_Target, // Issue #597\n\t\tpips: pips // Issue #594\n\t};\n\n\t// Attach user events.\n\tevents( options.events );\n\n\treturn scope_Self;\n\n}\n\n\n\t// Run the standard initializer\n\tfunction initialize ( target, originalOptions ) {\n\n\t\tif ( !target.nodeName ) {\n\t\t\tthrow new Error('noUiSlider.create requires a single element.');\n\t\t}\n\n\t\t// Test the options and create the slider environment;\n\t\tvar options = testOptions( originalOptions, target ),\n\t\t\tslider = closure( target, options, originalOptions );\n\n\t\t// Use the public value method to set the start values.\n\t\tslider.set(options.start);\n\n\t\ttarget.noUiSlider = slider;\n\t\treturn slider;\n\t}\n\n\t// Use an object instead of a function for future expansibility;\n\treturn {\n\t\tcreate: initialize\n\t};\n\n}));","/*global define:false */\n/**\n * Copyright 2016 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.0\n * @url craig.is/killing/mice\n */\n(function(window, document, undefined) {\n\n // Check if mousetrap is used inside browser, if not, return\n if (!window) {\n return;\n }\n\n /**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n *\n * @type {Object}\n */\n var _MAP = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta'\n };\n\n /**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n *\n * @type {Object}\n */\n var _KEYCODE_MAP = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111 : '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: '\\''\n };\n\n /**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivelents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n *\n * @type {Object}\n */\n var _SHIFT_MAP = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n '$': '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n '_': '-',\n '+': '=',\n ':': ';',\n '\\\"': '\\'',\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\'\n };\n\n /**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n *\n * @type {Object}\n */\n var _SPECIAL_ALIASES = {\n 'option': 'alt',\n 'command': 'meta',\n 'return': 'enter',\n 'escape': 'esc',\n 'plus': '+',\n 'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'\n };\n\n /**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n *\n * @type {Object|undefined}\n */\n var _REVERSE_MAP;\n\n /**\n * loop through the f keys, f1 to f19 and add them to the map\n * programatically\n */\n for (var i = 1; i < 20; ++i) {\n _MAP[111 + i] = 'f' + i;\n }\n\n /**\n * loop through to map numbers on the numeric keypad\n */\n for (i = 0; i <= 9; ++i) {\n _MAP[i + 96] = i;\n }\n\n /**\n * cross browser add event method\n *\n * @param {Element|HTMLDocument} object\n * @param {string} type\n * @param {Function} callback\n * @returns void\n */\n function _addEvent(object, type, callback) {\n if (object.addEventListener) {\n object.addEventListener(type, callback, false);\n return;\n }\n\n object.attachEvent('on' + type, callback);\n }\n\n /**\n * takes the event and returns the key character\n *\n * @param {Event} e\n * @return {string}\n */\n function _characterFromEvent(e) {\n\n // for keypress events we should return the character as is\n if (e.type == 'keypress') {\n var character = String.fromCharCode(e.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!e.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (_MAP[e.which]) {\n return _MAP[e.which];\n }\n\n if (_KEYCODE_MAP[e.which]) {\n return _KEYCODE_MAP[e.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(e.which).toLowerCase();\n }\n\n /**\n * checks if two arrays are equal\n *\n * @param {Array} modifiers1\n * @param {Array} modifiers2\n * @returns {boolean}\n */\n function _modifiersMatch(modifiers1, modifiers2) {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n }\n\n /**\n * takes a key event and figures out what the modifiers are\n *\n * @param {Event} e\n * @returns {Array}\n */\n function _eventModifiers(e) {\n var modifiers = [];\n\n if (e.shiftKey) {\n modifiers.push('shift');\n }\n\n if (e.altKey) {\n modifiers.push('alt');\n }\n\n if (e.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (e.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n }\n\n /**\n * prevents default for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n return;\n }\n\n e.returnValue = false;\n }\n\n /**\n * stops propogation for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n return;\n }\n\n e.cancelBubble = true;\n }\n\n /**\n * determines if the keycode specified is a modifier key or not\n *\n * @param {string} key\n * @returns {boolean}\n */\n function _isModifier(key) {\n return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\n }\n\n /**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n *\n * @return {Object}\n */\n function _getReverseMap() {\n if (!_REVERSE_MAP) {\n _REVERSE_MAP = {};\n for (var key in _MAP) {\n\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (key > 95 && key < 112) {\n continue;\n }\n\n if (_MAP.hasOwnProperty(key)) {\n _REVERSE_MAP[_MAP[key]] = key;\n }\n }\n }\n return _REVERSE_MAP;\n }\n\n /**\n * picks the best action based on the key combination\n *\n * @param {string} key - character for key\n * @param {Array} modifiers\n * @param {string=} action passed in\n */\n function _pickBestAction(key, modifiers, action) {\n\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = _getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action == 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n }\n\n /**\n * Converts from a string key combination to an array\n *\n * @param {string} combination like \"command+shift+l\"\n * @return {Array}\n */\n function _keysFromString(combination) {\n if (combination === '+') {\n return ['+'];\n }\n\n combination = combination.replace(/\\+{2}/g, '+plus');\n return combination.split('+');\n }\n\n /**\n * Gets info for a specific key combination\n *\n * @param {string} combination key combination (\"command+s\" or \"a\" or \"*\")\n * @param {string=} action\n * @returns {Object}\n */\n function _getKeyInfo(combination, action) {\n var keys;\n var key;\n var i;\n var modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = _keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (_SPECIAL_ALIASES[key]) {\n key = _SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n key = _SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (_isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = _pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action\n };\n }\n\n function _belongsTo(element, ancestor) {\n if (element === null || element === document) {\n return false;\n }\n\n if (element === ancestor) {\n return true;\n }\n\n return _belongsTo(element.parentNode, ancestor);\n }\n\n function Mousetrap(targetElement) {\n var self = this;\n\n targetElement = targetElement || document;\n\n if (!(self instanceof Mousetrap)) {\n return new Mousetrap(targetElement);\n }\n\n /**\n * element to attach key events to\n *\n * @type {Element}\n */\n self.target = targetElement;\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n *\n * @type {Object}\n */\n self._callbacks = {};\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n *\n * @type {Object}\n */\n self._directMap = {};\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n *\n * @type {Object}\n */\n var _sequenceLevels = {};\n\n /**\n * variable to store the setTimeout call\n *\n * @type {null|number}\n */\n var _resetTimer;\n\n /**\n * temporary state where we will ignore the next keyup\n *\n * @type {boolean|string}\n */\n var _ignoreNextKeyup = false;\n\n /**\n * temporary state where we will ignore the next keypress\n *\n * @type {boolean}\n */\n var _ignoreNextKeypress = false;\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n *\n * @type {boolean|string}\n */\n var _nextExpectedAction = false;\n\n /**\n * resets all sequence counters except for the ones passed in\n *\n * @param {Object} doNotReset\n * @returns void\n */\n function _resetSequences(doNotReset) {\n doNotReset = doNotReset || {};\n\n var activeSequences = false,\n key;\n\n for (key in _sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n _sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n _nextExpectedAction = false;\n }\n }\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event|Object} e\n * @param {string=} sequenceName - name of the sequence we are looking for\n * @param {string=} combination\n * @param {number=} level\n * @returns {Array}\n */\n function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n var i;\n var callback;\n var matches = [];\n var action = e.type;\n\n // if there are no events related to this keycode\n if (!self._callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action == 'keyup' && _isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < self._callbacks[character].length; ++i) {\n callback = self._callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action != callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {\n\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n var deleteCombo = !sequenceName && callback.combo == combination;\n var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;\n if (deleteCombo || deleteSequence) {\n self._callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n }\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propogation on the event\n *\n * @param {Function} callback\n * @param {Event} e\n * @returns void\n */\n function _fireCallback(callback, e, combo, sequence) {\n\n // if this event should not happen stop here\n if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n _preventDefault(e);\n _stopPropagation(e);\n }\n }\n\n /**\n * handles a character key event\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event} e\n * @returns void\n */\n self._handleKey = function(character, modifiers, e) {\n var callbacks = _getMatches(character, modifiers, e);\n var i;\n var doNotReset = {};\n var maxLevel = 0;\n var processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n if (callbacks[i].seq) {\n\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level != maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[callbacks[i].seq] = 1;\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n _resetSequences(doNotReset);\n }\n\n _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n };\n\n /**\n * handles a keydown event\n *\n * @param {Event} e\n * @returns void\n */\n function _handleKeyEvent(e) {\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof e.which !== 'number') {\n e.which = e.keyCode;\n }\n\n var character = _characterFromEvent(e);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n _ignoreNextKeyup = false;\n return;\n }\n\n self.handleKey(character, _eventModifiers(e), e);\n }\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n *\n * @returns void\n */\n function _resetSequenceTimer() {\n clearTimeout(_resetTimer);\n _resetTimer = setTimeout(_resetSequences, 1000);\n }\n\n /**\n * binds a key sequence to an event\n *\n * @param {string} combo - combo specified in bind call\n * @param {Array} keys\n * @param {Function} callback\n * @param {string=} action\n * @returns void\n */\n function _bindSequence(combo, keys, callback, action) {\n\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n _sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n *\n * @param {string} nextAction\n * @returns {Function}\n */\n function _increaseSequence(nextAction) {\n return function() {\n _nextExpectedAction = nextAction;\n ++_sequenceLevels[combo];\n _resetSequenceTimer();\n };\n }\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n *\n * @param {Event} e\n * @returns void\n */\n function _callbackAndReset(e) {\n _fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n _ignoreNextKeyup = _characterFromEvent(e);\n }\n\n // weird race condition if a sequence ends with the key\n // another sequence begins with\n setTimeout(_resetSequences, 10);\n }\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (var i = 0; i < keys.length; ++i) {\n var isFinal = i + 1 === keys.length;\n var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);\n _bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n }\n\n /**\n * binds a single keyboard combination\n *\n * @param {string} combination\n * @param {Function} callback\n * @param {string=} action\n * @param {string=} sequenceName - name of sequence if part of sequence\n * @param {number=} level - what part of the sequence the command is\n * @returns void\n */\n function _bindSingle(combination, callback, action, sequenceName, level) {\n\n // store a direct mapped reference for use with Mousetrap.trigger\n self._directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n var sequence = combination.split(' ');\n var info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n _bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = _getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n self._callbacks[info.key] = self._callbacks[info.key] || [];\n\n // remove an existing match if there is one\n _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination\n });\n }\n\n /**\n * binds multiple combinations to the same callback\n *\n * @param {Array} combinations\n * @param {Function} callback\n * @param {string|undefined} action\n * @returns void\n */\n self._bindMultiple = function(combinations, callback, action) {\n for (var i = 0; i < combinations.length; ++i) {\n _bindSingle(combinations[i], callback, action);\n }\n };\n\n // start!\n _addEvent(targetElement, 'keypress', _handleKeyEvent);\n _addEvent(targetElement, 'keydown', _handleKeyEvent);\n _addEvent(targetElement, 'keyup', _handleKeyEvent);\n }\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n *\n * @param {string|Array} keys\n * @param {Function} callback\n * @param {string=} action - 'keypress', 'keydown', or 'keyup'\n * @returns void\n */\n Mousetrap.prototype.bind = function(keys, callback, action) {\n var self = this;\n keys = keys instanceof Array ? keys : [keys];\n self._bindMultiple.call(self, keys, callback, action);\n return self;\n };\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n *\n * @param {string|Array} keys\n * @param {string} action\n * @returns void\n */\n Mousetrap.prototype.unbind = function(keys, action) {\n var self = this;\n return self.bind.call(self, keys, function() {}, action);\n };\n\n /**\n * triggers an event that has already been bound\n *\n * @param {string} keys\n * @param {string=} action\n * @returns void\n */\n Mousetrap.prototype.trigger = function(keys, action) {\n var self = this;\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n return self;\n };\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n *\n * @returns void\n */\n Mousetrap.prototype.reset = function() {\n var self = this;\n self._callbacks = {};\n self._directMap = {};\n return self;\n };\n\n /**\n * should we stop this event before firing off callbacks\n *\n * @param {Event} e\n * @param {Element} element\n * @return {boolean}\n */\n Mousetrap.prototype.stopCallback = function(e, element) {\n var self = this;\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (_belongsTo(element, self.target)) {\n return false;\n }\n\n // stop for input, select, and textarea\n return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n };\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n Mousetrap.prototype.handleKey = function() {\n var self = this;\n return self._handleKey.apply(self, arguments);\n };\n\n /**\n * allow custom key mappings\n */\n Mousetrap.addKeycodes = function(object) {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n _MAP[key] = object[key];\n }\n }\n _REVERSE_MAP = null;\n };\n\n /**\n * Init the global mousetrap functions\n *\n * This method is needed to allow the global mousetrap functions to work\n * now that mousetrap is a constructor function.\n */\n Mousetrap.init = function() {\n var documentMousetrap = Mousetrap(document);\n for (var method in documentMousetrap) {\n if (method.charAt(0) !== '_') {\n Mousetrap[method] = (function(method) {\n return function() {\n return documentMousetrap[method].apply(documentMousetrap, arguments);\n };\n } (method));\n }\n }\n };\n\n Mousetrap.init();\n\n // expose mousetrap to the global object\n window.Mousetrap = Mousetrap;\n\n // expose as a common js module\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Mousetrap;\n }\n\n // expose mousetrap as an AMD module\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return Mousetrap;\n });\n }\n}) (typeof window !== 'undefined' ? window : null, typeof window !== 'undefined' ? document : null);\n","/**\n * @license\n * Fuse - Lightweight fuzzy-search\n *\n * Copyright (c) 2012-2016 Kirollos Risk <kirollos@gmail.com>.\n * All Rights Reserved. Apache Software License 2.0\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n;(function (global) {\n 'use strict'\n\n function log () {\n console.log.apply(console, arguments)\n }\n\n var MULTI_CHAR_REGEX = / +/g\n\n var defaultOptions = {\n // The name of the identifier property. If specified, the returned result will be a list\n // of the items' dentifiers, otherwise it will be a list of the items.\n id: null,\n\n // Indicates whether comparisons should be case sensitive.\n\n caseSensitive: false,\n\n // A list of values to be passed from the searcher to the result set.\n // If include is set to ['score', 'highlight'], each result in the list will be\n // of the form: `{ item: ..., score: ... }`\n include: [],\n\n // Whether to sort the result list, by score\n shouldSort: true,\n\n // The search function to use\n // Note that the default search function ([[Function]]) must conform to the following API:\n //\n // @param pattern The pattern string to search\n // @param options The search option\n // [[Function]].constructor = function(pattern, options)\n //\n // @param text: the string to search in for the pattern\n // @return Object in the form of:\n // - isMatch: boolean\n // - score: Int\n // [[Function]].prototype.search = function(text)\n searchFn: BitapSearcher,\n\n // Default sort function\n sortFn: function (a, b) {\n return a.score - b.score\n },\n\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: deepValue,\n\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n\n // Will print to the console. Useful for debugging.\n verbose: false,\n\n // When true, the search algorithm will search individual words **and** the full string,\n // computing the final score as a function of both. Note that when `tokenize` is `true`,\n // the `threshold`, `distance`, and `location` are inconsequential for individual tokens.\n tokenize: false\n }\n\n function Fuse (list, options) {\n var i\n var len\n var key\n var keys\n\n this.list = list\n this.options = options = options || {}\n\n // Add boolean type options\n for (i = 0, keys = ['sort', 'shouldSort', 'verbose', 'tokenize'], len = keys.length; i < len; i++) {\n key = keys[i]\n this.options[key] = key in options ? options[key] : defaultOptions[key]\n }\n // Add all other options\n for (i = 0, keys = ['searchFn', 'sortFn', 'keys', 'getFn', 'include'], len = keys.length; i < len; i++) {\n key = keys[i]\n this.options[key] = options[key] || defaultOptions[key]\n }\n }\n\n Fuse.VERSION = '2.0.1'\n\n /**\n * Sets a new list for Fuse to match against.\n * @param {Array} list\n * @return {Array} The newly set list\n * @public\n */\n Fuse.prototype.set = function (list) {\n this.list = list\n return list\n }\n\n Fuse.prototype.search = function (pattern) {\n if (this.options.verbose) log('=====================\\n', 'Search term:', pattern)\n\n this.pattern = pattern\n this.results = []\n this.resultMap = {}\n\n this._prepareSearchers()\n this._startSearch()\n this._computeScore()\n this._sort()\n\n var output = this._format()\n return output\n }\n\n Fuse.prototype._prepareSearchers = function () {\n var options = this.options\n var pattern = this.pattern\n var searchFn = options.searchFn\n var tokens = pattern.split(MULTI_CHAR_REGEX)\n var i = 0\n var len = tokens.length\n\n if (this.options.tokenize) {\n this.tokenSearchers = []\n for (; i < len; i++) {\n this.tokenSearchers.push(new searchFn(tokens[i], options))\n }\n }\n this.fullSeacher = new searchFn(pattern, options)\n }\n\n Fuse.prototype._startSearch = function () {\n var options = this.options\n var getFn = options.getFn\n var list = this.list\n var listLen = list.length\n var keys = this.options.keys\n var keysLen = keys.length\n var item = null\n var i\n var j\n\n // Check the first item in the list, if it's a string, then we assume\n // that every item in the list is also a string, and thus it's a flattened array.\n if (typeof list[0] === 'string') {\n // Iterate over every item\n for (i = 0; i < listLen; i++) {\n this._analyze(list[i], i, i)\n }\n } else {\n // Otherwise, the first item is an Object (hopefully), and thus the searching\n // is done on the values of the keys of each item.\n // Iterate over every item\n for (i = 0; i < listLen; i++) {\n item = list[i]\n // Iterate over every key\n for (j = 0; j < keysLen; j++) {\n this._analyze(getFn(item, keys[j], []), item, i)\n }\n }\n }\n }\n\n Fuse.prototype._analyze = function (text, entity, index) {\n var options = this.options\n var words\n var scores\n var exists = false\n var tokenSearchers\n var tokenSearchersLen\n var existingResult\n var averageScore\n var finalScore\n var scoresLen\n var mainSearchResult\n var tokenSearcher\n var termScores\n var word\n var tokenSearchResult\n var i\n var j\n\n // Check if the text can be searched\n if (text === undefined || text === null) {\n return\n }\n\n scores = []\n\n if (typeof text === 'string') {\n words = text.split(MULTI_CHAR_REGEX)\n\n if (options.verbose) log('---------\\n', 'Record:', words)\n\n if (this.options.tokenize) {\n tokenSearchers = this.tokenSearchers\n tokenSearchersLen = tokenSearchers.length\n\n for (i = 0; i < this.tokenSearchers.length; i++) {\n tokenSearcher = this.tokenSearchers[i]\n termScores = []\n for (j = 0; j < words.length; j++) {\n word = words[j]\n tokenSearchResult = tokenSearcher.search(word)\n if (tokenSearchResult.isMatch) {\n exists = true\n termScores.push(tokenSearchResult.score)\n scores.push(tokenSearchResult.score)\n } else {\n termScores.push(1)\n scores.push(1)\n }\n }\n if (options.verbose) log('Score for \"' + tokenSearcher.pattern + '\":', termScores)\n }\n\n averageScore = scores[0]\n scoresLen = scores.length\n for (i = 1; i < scoresLen; i++) {\n averageScore += scores[i]\n }\n averageScore = averageScore / scoresLen\n\n if (options.verbose) log('Individual word score average:', averageScore)\n\n }\n\n // Get the result\n mainSearchResult = this.fullSeacher.search(text)\n if (options.verbose) log('Full text score:', mainSearchResult.score)\n\n finalScore = mainSearchResult.score\n if (averageScore !== undefined) {\n finalScore = (finalScore + averageScore) / 2\n }\n\n if (options.verbose) log('Average', finalScore)\n\n // If a match is found, add the item to <rawResults>, including its score\n if (exists || mainSearchResult.isMatch) {\n // Check if the item already exists in our results\n existingResult = this.resultMap[index]\n if (existingResult) {\n // Use the lowest score\n // existingResult.score, bitapResult.score\n existingResult.scores.push(finalScore)\n } else {\n // Add it to the raw result list\n this.resultMap[index] = {\n item: entity,\n scores: [finalScore]\n }\n this.results.push(this.resultMap[index])\n }\n }\n } else if (isArray(text)) {\n for (i = 0; i < text.length; i++) {\n this._analyze(text[i], entity, index)\n }\n }\n }\n\n Fuse.prototype._computeScore = function () {\n var i\n var j\n var totalScore\n var currScore\n var scoreLen\n var results = this.results\n\n for (i = 0; i < results.length; i++) {\n totalScore = 0\n currScore = results[i].scores\n scoreLen = currScore.length\n for (j = 0; j < scoreLen; j++) {\n totalScore += currScore[j]\n }\n results[i].score = totalScore / scoreLen\n }\n }\n\n Fuse.prototype._sort = function () {\n var options = this.options\n if (options.shouldSort) {\n if (options.verbose) log('Sorting....')\n this.results.sort(options.sortFn)\n }\n }\n\n Fuse.prototype._format = function () {\n var options = this.options\n var getFn = options.getFn\n var output = []\n var item\n var i\n var len\n var results = this.results\n var replaceValue\n var getItemAtIndex\n\n if (options.verbose) log('------------\\n', 'Output:\\n', results)\n\n // Helper function, here for speed-up, which replaces the item with its value,\n // if the options specifies it,\n replaceValue = options.id ? function (index) {\n results[index].item = getFn(results[index].item, options.id, [])[0]\n } : function () {}\n\n getItemAtIndex = function (index) {\n var resultItem\n var includeVal\n var j\n\n // If `include` has values, put the item under result.item\n if (options.include.length > 0) {\n resultItem = {\n item: results[index].item,\n }\n // Then include the `includes`\n for (j = 0; j < options.include.length; j++) {\n includeVal = options.include[j]\n resultItem[includeVal] = results[index][includeVal]\n }\n } else {\n resultItem = results[index].item\n }\n\n return resultItem\n }\n\n // From the results, push into a new array only the item identifier (if specified)\n // of the entire item. This is because we don't want to return the <results>,\n // since it contains other metadata\n for (i = 0, len = results.length; i < len; i++) {\n replaceValue(i)\n item = getItemAtIndex(i)\n output.push(item)\n }\n\n return output\n }\n\n // Helpers\n\n function deepValue (obj, path, list) {\n var firstSegment\n var remaining\n var dotIndex\n var value\n var i\n var len\n\n if (!path) {\n // If there's no path left, we've gotten to the object we care about.\n list.push(obj)\n } else {\n dotIndex = path.indexOf('.')\n\n if (dotIndex !== -1) {\n firstSegment = path.slice(0, dotIndex)\n remaining = path.slice(dotIndex + 1)\n } else {\n firstSegment = path\n }\n\n value = obj[firstSegment]\n if (value !== null && value !== undefined) {\n if (!remaining && (typeof value === 'string' || typeof value === 'number')) {\n list.push(value)\n } else if (isArray(value)) {\n // Search each item in the array.\n for (i = 0, len = value.length; i < len; i++) {\n deepValue(value[i], remaining, list)\n }\n } else if (remaining) {\n // An object. Recurse further.\n deepValue(value, remaining, list)\n }\n }\n }\n\n return list\n }\n\n function isArray (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]'\n }\n\n /**\n * Adapted from \"Diff, Match and Patch\", by Google\n *\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Modified by: Kirollos Risk <kirollos@gmail.com>\n * -----------------------------------------------\n * Details: the algorithm and structure was modified to allow the creation of\n * <Searcher> instances with a <search> method which does the actual\n * bitap search. The <pattern> (the string that is searched for) is only defined\n * once per instance and thus it eliminates redundant re-creation when searching\n * over a list of strings.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n * you may not use this file except in compliance with the License.\n */\n function BitapSearcher (pattern, options) {\n options = options || {}\n this.options = options\n this.options.location = options.location || BitapSearcher.defaultOptions.location\n this.options.distance = 'distance' in options ? options.distance : BitapSearcher.defaultOptions.distance\n this.options.threshold = 'threshold' in options ? options.threshold : BitapSearcher.defaultOptions.threshold\n this.options.maxPatternLength = options.maxPatternLength || BitapSearcher.defaultOptions.maxPatternLength\n\n this.pattern = options.caseSensitive ? pattern : pattern.toLowerCase()\n this.patternLen = pattern.length\n\n if (this.patternLen <= this.options.maxPatternLength) {\n this.matchmask = 1 << (this.patternLen - 1)\n this.patternAlphabet = this._calculatePatternAlphabet()\n }\n }\n\n BitapSearcher.defaultOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100,\n\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n\n // Machine word size\n maxPatternLength: 32\n }\n\n /**\n * Initialize the alphabet for the Bitap algorithm.\n * @return {Object} Hash of character locations.\n * @private\n */\n BitapSearcher.prototype._calculatePatternAlphabet = function () {\n var mask = {},\n i = 0\n\n for (i = 0; i < this.patternLen; i++) {\n mask[this.pattern.charAt(i)] = 0\n }\n\n for (i = 0; i < this.patternLen; i++) {\n mask[this.pattern.charAt(i)] |= 1 << (this.pattern.length - i - 1)\n }\n\n return mask\n }\n\n /**\n * Compute and return the score for a match with `e` errors and `x` location.\n * @param {number} errors Number of errors in match.\n * @param {number} location Location of match.\n * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n * @private\n */\n BitapSearcher.prototype._bitapScore = function (errors, location) {\n var accuracy = errors / this.patternLen,\n proximity = Math.abs(this.options.location - location)\n\n if (!this.options.distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n return accuracy + (proximity / this.options.distance)\n }\n\n /**\n * Compute and return the result of the search\n * @param {String} text The text to search in\n * @return {Object} Literal containing:\n * {Boolean} isMatch Whether the text is a match or not\n * {Decimal} score Overall score for the match\n * @public\n */\n BitapSearcher.prototype.search = function (text) {\n var options = this.options\n var i\n var j\n var textLen\n var location\n var threshold\n var bestLoc\n var binMin\n var binMid\n var binMax\n var start, finish\n var bitArr\n var lastBitArr\n var charMatch\n var score\n var locations\n var matches\n var isMatched\n\n text = options.caseSensitive ? text : text.toLowerCase()\n\n if (this.pattern === text) {\n // console.log(\"EXACT\")\n // Exact match\n return {\n isMatch: true,\n score: 0\n }\n }\n\n // When pattern length is greater than the machine word length, just do a\n // a reject comparison\n if (this.patternLen > options.maxPatternLength) {\n matches = text.match(new RegExp(this.pattern.replace(MULTI_CHAR_REGEX, '|')))\n isMatched = !!matches\n return {\n isMatch: isMatched,\n // TODO: revisit this score\n score: isMatched ? 0.5 : 1\n }\n }\n\n location = options.location\n // Set starting location at beginning text and initialize the alphabet.\n textLen = text.length\n // Highest score beyond which we give up.\n threshold = options.threshold\n // Is there a nearby exact match? (speedup)\n bestLoc = text.indexOf(this.pattern, location)\n\n if (bestLoc != -1) {\n threshold = Math.min(this._bitapScore(0, bestLoc), threshold)\n // What about in the other direction? (speed up)\n bestLoc = text.lastIndexOf(this.pattern, location + this.patternLen)\n\n if (bestLoc != -1) {\n threshold = Math.min(this._bitapScore(0, bestLoc), threshold)\n }\n }\n\n bestLoc = -1\n score = 1\n locations = []\n binMax = this.patternLen + textLen\n\n for (i = 0; i < this.patternLen; i++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n binMin = 0\n binMid = binMax\n while (binMin < binMid) {\n if (this._bitapScore(i, location + binMid) <= threshold) {\n binMin = binMid\n } else {\n binMax = binMid\n }\n binMid = Math.floor((binMax - binMin) / 2 + binMin)\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid\n start = Math.max(1, location - binMid + 1)\n finish = Math.min(location + binMid, textLen) + this.patternLen\n\n // Initialize the bit array\n bitArr = Array(finish + 2)\n\n bitArr[finish + 1] = (1 << i) - 1\n\n for (j = finish; j >= start; j--) {\n charMatch = this.patternAlphabet[text.charAt(j - 1)]\n // console.log('charMatch', charMatch, text.charAt(j - 1))\n\n if (i === 0) {\n // First pass: exact match.\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch\n } else {\n // Subsequent passes: fuzzy match.\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch | (((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1) | lastBitArr[j + 1]\n }\n if (bitArr[j] & this.matchmask) {\n score = this._bitapScore(i, j - 1)\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (score <= threshold) {\n // Indeed it is\n threshold = score\n bestLoc = j - 1\n locations.push(bestLoc)\n\n if (bestLoc > location) {\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * location - bestLoc)\n } else {\n // Already passed loc, downhill from here on in.\n break\n }\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n if (this._bitapScore(i + 1, location) > threshold) {\n break\n }\n lastBitArr = bitArr\n }\n\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n return {\n isMatch: bestLoc >= 0,\n score: score === 0 ? 0.001 : score\n }\n }\n\n // Export to Common JS Loader\n if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = Fuse\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function () {\n return Fuse\n })\n } else {\n // Browser globals (root is window)\n global.Fuse = Fuse\n }\n\n})(this)\n","/* =============================================================\n * bootstrap-combobox.js v1.1.5\n * =============================================================\n * Copyright 2012 Daniel Farrell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============================================================ */\n\n!function( $ ) {\n\n \"use strict\";\n\n /* COMBOBOX PUBLIC CLASS DEFINITION\n * ================================ */\n\n var Combobox = function ( element, options ) {\n this.options = $.extend({}, $.fn.combobox.defaults, options);\n this.$source = $(element);\n this.$container = this.setup();\n this.$element = this.$container.find('input[type=text]');\n this.$target = this.$container.find('input[type=hidden]');\n this.$button = this.$container.find('.dropdown-toggle');\n this.$menu = $(this.options.menu).appendTo('body');\n this.matcher = this.options.matcher || this.matcher;\n this.sorter = this.options.sorter || this.sorter;\n this.highlighter = this.options.highlighter || this.highlighter;\n this.shown = false;\n this.selected = false;\n this.refresh();\n this.transferAttributes();\n this.listen();\n };\n\n Combobox.prototype = {\n\n constructor: Combobox\n\n , setup: function () {\n var combobox = $(this.options.template);\n this.$source.before(combobox);\n this.$source.hide();\n return combobox;\n }\n\n , parse: function () {\n var that = this\n , map = {}\n , source = []\n , selected = false\n , selectedValue = '';\n this.$source.find('option').each(function() {\n var option = $(this);\n if (option.val() === '') {\n that.options.placeholder = option.text();\n return;\n }\n map[option.text()] = option.val();\n source.push(option.text());\n if (option.prop('selected')) {\n selected = option.text();\n selectedValue = option.val();\n }\n })\n this.map = map;\n if (selected) {\n this.$element.val(selected);\n this.$target.val(selectedValue);\n this.$container.addClass('combobox-selected');\n this.selected = true;\n }\n return source;\n }\n\n , transferAttributes: function() {\n this.options.placeholder = this.$source.attr('data-placeholder') || this.options.placeholder;\n this.$element.attr('placeholder', this.options.placeholder);\n this.$target.prop('name', this.$source.prop('name'));\n this.$target.val(this.$source.val());\n this.$source.removeAttr('name'); // Remove from source otherwise form will pass parameter twice.\n this.$element.attr('required', this.$source.attr('required'));\n this.$element.attr('rel', this.$source.attr('rel'));\n this.$element.attr('title', this.$source.attr('title'));\n this.$element.attr('class', this.$source.attr('class'));\n this.$element.attr('tabindex', this.$source.attr('tabindex'));\n this.$source.removeAttr('tabindex');\n this.$source.removeAttr('required');\n }\n\n , setSelected: function() {\n this.selected = true;\n }\n\n , select: function () {\n var val = this.$menu.find('.active').attr('data-value');\n this.$element.val(this.updater(val));\n this.$target.val(this.map[val]);\n this.$source.val(this.map[val]);\n this.$element.trigger('change');\n this.$target.trigger('change');\n this.$source.trigger('change');\n this.$container.addClass('combobox-selected');\n this.selected = true;\n return this.hide();\n }\n\n , updater: function (item) {\n return item;\n }\n\n , show: function () {\n var pos = $.extend({}, this.$element.position(), {\n height: this.$element[0].offsetHeight\n });\n\n this.$menu\n .insertAfter(this.$element)\n .css({\n top: pos.top + pos.height\n , left: pos.left\n })\n .show();\n\n this.shown = true;\n return this;\n }\n\n , hide: function () {\n this.$menu.hide();\n this.shown = false;\n return this;\n }\n\n , lookup: function (event) {\n this.query = this.$element.val();\n return this.process(this.source);\n }\n\n , process: function (items) {\n var that = this;\n\n items = $.grep(items, function (item) {\n return that.matcher(item);\n })\n\n items = this.sorter(items);\n\n if (!items.length) {\n return this.shown ? this.hide() : this;\n }\n\n return this.render(items.slice(0, this.options.items)).show();\n }\n\n , matcher: function (item) {\n return ~item.toLowerCase().indexOf(this.query.toLowerCase());\n }\n\n , sorter: function (items) {\n var beginswith = []\n , caseSensitive = []\n , caseInsensitive = []\n , item;\n\n while (item = items.shift()) {\n if (!item.toLowerCase().indexOf(this.query.toLowerCase())) {beginswith.push(item);}\n else if (~item.indexOf(this.query)) {caseSensitive.push(item);}\n else {caseInsensitive.push(item);}\n }\n\n return beginswith.concat(caseSensitive, caseInsensitive);\n }\n\n , highlighter: function (item) {\n var query = this.query.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {\n return '<strong>' + match + '</strong>';\n })\n }\n\n , render: function (items) {\n var that = this;\n\n items = $(items).map(function (i, item) {\n i = $(that.options.item).attr('data-value', item);\n i.find('a').html(that.highlighter(item));\n return i[0];\n })\n\n items.first().addClass('active');\n this.$menu.html(items);\n return this;\n }\n\n , next: function (event) {\n var active = this.$menu.find('.active').removeClass('active')\n , next = active.next();\n\n if (!next.length) {\n next = $(this.$menu.find('li')[0]);\n }\n\n next.addClass('active');\n }\n\n , prev: function (event) {\n var active = this.$menu.find('.active').removeClass('active')\n , prev = active.prev();\n\n if (!prev.length) {\n prev = this.$menu.find('li').last();\n }\n\n prev.addClass('active');\n }\n\n , toggle: function () {\n if (this.$container.hasClass('combobox-selected')) {\n this.clearTarget();\n this.triggerChange();\n this.clearElement();\n } else {\n if (this.shown) {\n this.hide();\n } else {\n this.clearElement();\n this.lookup();\n }\n }\n\n this.$element.trigger('change');\n this.$target.trigger('change');\n this.$source.trigger('change'); \n }\n\n , clearElement: function () {\n this.$element.val('').focus();\n }\n\n , clearTarget: function () {\n this.$source.val('');\n this.$target.val('');\n this.$container.removeClass('combobox-selected');\n this.selected = false;\n }\n\n , triggerChange: function () {\n this.$source.trigger('change');\n }\n\n , refresh: function () {\n this.source = this.parse();\n this.options.items = this.source.length;\n }\n\n , listen: function () {\n this.$element\n .on('focus', $.proxy(this.focus, this))\n .on('blur', $.proxy(this.blur, this))\n .on('keypress', $.proxy(this.keypress, this))\n .on('keyup', $.proxy(this.keyup, this));\n\n if (this.eventSupported('keydown')) {\n this.$element.on('keydown', $.proxy(this.keydown, this));\n }\n\n this.$menu\n .on('click', $.proxy(this.click, this))\n .on('mouseenter', 'li', $.proxy(this.mouseenter, this))\n .on('mouseleave', 'li', $.proxy(this.mouseleave, this));\n\n this.$button\n .on('click', $.proxy(this.toggle, this));\n }\n\n , eventSupported: function(eventName) {\n var isSupported = eventName in this.$element;\n if (!isSupported) {\n this.$element.setAttribute(eventName, 'return;');\n isSupported = typeof this.$element[eventName] === 'function';\n }\n return isSupported;\n }\n\n , move: function (e) {\n if (!this.shown) {return;}\n\n switch(e.keyCode) {\n case 9: // tab\n case 13: // enter\n case 27: // escape\n e.preventDefault();\n break;\n\n case 38: // up arrow\n e.preventDefault();\n this.prev();\n break;\n\n case 40: // down arrow\n e.preventDefault();\n this.next();\n break;\n }\n\n e.stopPropagation();\n }\n\n , keydown: function (e) {\n this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]);\n this.move(e);\n }\n\n , keypress: function (e) {\n if (this.suppressKeyPressRepeat) {return;}\n this.move(e);\n }\n\n , keyup: function (e) {\n switch(e.keyCode) {\n case 40: // down arrow\n case 39: // right arrow\n case 38: // up arrow\n case 37: // left arrow\n case 36: // home\n case 35: // end\n case 33: // page up\n case 34: // page down\n case 16: // shift\n case 17: // ctrl\n case 18: // alt\n case 20: // cap lock\n break;\n\n case 9: // tab\n case 13: // enter\n if (!this.shown) {return;}\n this.select();\n break;\n\n case 27: // escape\n if (!this.shown) {return;}\n this.hide();\n break;\n\n default:\n this.clearTarget();\n this.lookup();\n }\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n , focus: function (e) {\n this.focused = true;\n }\n\n , blur: function (e) {\n var that = this;\n this.focused = false;\n var val = this.$element.val();\n if (!this.selected && val !== '' ) {\n this.$element.val('');\n this.$source.val('').trigger('change');\n this.$target.val('').trigger('change');\n }\n if (!this.mousedover && this.shown) {setTimeout(function () { that.hide(); }, 200);}\n }\n\n , click: function (e) {\n e.stopPropagation();\n e.preventDefault();\n this.select();\n this.$element.focus();\n }\n\n , mouseenter: function (e) {\n this.mousedover = true;\n this.$menu.find('.active').removeClass('active');\n $(e.currentTarget).addClass('active');\n }\n\n , mouseleave: function (e) {\n this.mousedover = false;\n }\n };\n\n /* COMBOBOX PLUGIN DEFINITION\n * =========================== */\n\n $.fn.combobox = function ( option ) {\n return this.each(function () {\n var $this = $(this)\n , data = $this.data('combobox')\n , options = typeof option == 'object' && option;\n if(!data) {$this.data('combobox', (data = new Combobox(this, options)));}\n if (typeof option == 'string') {data[option]();}\n });\n };\n\n $.fn.combobox.defaults = {\n template: '<div class=\"combobox-container\"> <input type=\"hidden\" /> <div class=\"input-group\"> <input type=\"text\" autocomplete=\"off\" /> <span class=\"input-group-addon dropdown-toggle\" data-dropdown=\"dropdown\"> <span class=\"caret\" /> <i class=\"fa fa-times\"></i> </span> </div> </div> '\n , menu: '<ul class=\"typeahead typeahead-long dropdown-menu\"></ul>'\n , item: '<li><a href=\"#\"></a></li>'\n };\n\n $.fn.combobox.Constructor = Combobox;\n\n}( window.jQuery );\n"]} |