{"version":3,"sources":["app.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","__esModule","bbcode_1","easter_egg_1","navigation_1","passed_time_monitor_1","smiley_selector_1","reaction_selector_1","whos_online_monitor_1","topic_index_1","topic_display_1","manage_boards_1","message_create_1","event_edit_1","account_details_1","process_1","SignalR","window","onload","App","boot","_this","this","baseUrl","hub","undefined","establishHubConnection","HubConnectionBuilder","withUrl","build","start","err","console","log","location","protocol","host","bbCode","BBCode","document","easterEgg","EasterEgg","navigation","Navigation","smileySelector","SmileySelector","reactionSelector","ReactionSelector","passedTimeMonitor","PassedTimeMonitor","whosOnlineMonitor","WhosOnlineMonitor","prototype","init","pageActions","Process","ManageBoards","MessageCreate","EventEdit","TopicDisplay","TopicIndex","AccountDetails","./pages/account-details","./pages/event-edit","./pages/manage-boards","./pages/message-create","./pages/process","./pages/topic-display","./pages/topic-index","./services/bbcode","./services/easter-egg","./services/navigation","./services/passed-time-monitor","./services/reaction-selector","./services/smiley-selector","./services/whos-online-monitor","@aspnet/signalr","2","HttpMethod","3","util_1","throwIfNull","value","name","isString","trim","warning","message","querySelectorAll","forEach","element","innerHTML","postToPath","path","parameters","antiForgeryTokenValue","antiForgeryTokenElements","form","createElement","method","action","antiForgeryToken","type","appendChild","Object","keys","key","field","body","submit","insertAtCaret","areaElement","text","selectionStart","startPos","endPos","selectionEnd","front","substring","replaced","back","focus","scrollTop","textContent","isEmpty","isFirefox","navigator","userAgent","indexOf","queryify","map","encodeURIComponent","join","hide","elem","Element","classList","contains","add","show","remove","toggle","clear","firstChild","removeChild","insertAfter","newNode","referenceNode","parentNode","insertBefore","nextSibling","util","4","AccountDetailsSettings","imgurClientId","assign","5","ProcessSettings","stages","currentAction","currentStep","currentStage","take","totalSteps","totalRecords","lastRecordId","6","ReactionSelectorSettings","imgurName","reactionImages","7","TopicDisplayPartialSettings","latest","firstMessageId","newMessages","8","TopicDisplaySettings","assignedBoards","bookmarked","currentPage","messages","showFavicons","togglePath","topicId","totalPages","9","TopicIndexSettings","boardId","unreadFilter","10","WhosOnlineMonitorSettings","users","11","XhrException","ClassName","Message","StackTraceString","12","http_method_1","XhrOptions","url","timeout","Get","query","headers","Cache-Control","responseType","../definitions/http-method","13","XhrResult","status","statusText","response","responseText","14","helpers_1","account_details_settings_1","app","genericWindow","bindEvents","addEventListener","eventToggleBirthdaySelectors","eventLinkImgurAccount","event","birthdayToggle","currentTarget","checked","self","settings","popup","open","checkConnect","setInterval","hash","clearInterval","accessToken","find","expiresIn","refreshToken","accountUsername","accountId","close","id","username","results","RegExp","exec","../helpers","../models/page-settings/account-details-settings","15","flatpickr_1","timeEnabled","initializePickers","allDayCheckbox","querySelector","allowInput","clickOpens","enableTime","dateFormat","wrap","flatpickr","16","mergeFromBoardId","mergeFromCategoryId","eventMergeBoard","target","getAttribute","closest","style","backgroundColor","mergeToBoardId","FromId","ToId","eventMergeCategory","mergeToCategoryId","17","toggleLock","eventToggleBoard","stopPropagation","boardFlagElement","imgSrc","assignedBoardIndex","checkbox","splice","replace","push","setAttribute","incomingBoards","18","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","__generator","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","process_settings_1","xhr_options_1","xhr_1","xhr_exception_1","eventUpdateTake","takeInput","currentStepInput","skip","parseInt","Math","floor","ceil","toString","eventUpdateStage","stageInput","eventStartButtonClick","togglePauseOnError","togglePauseAfterNext","currentStageInput","requestOptions","xhrResult","_a","loadCurrentAction","Post","Xhr","request","stop","updateProgress","eventShowSettingsButtonClick","showSettingsButton","settingsPane","eventHideSettingsButtonClick","progressBar","bar","percent","width","round","logSuccessInput","responseStatus","responseException","JSON","parse","responseDescription","addLogItem","logElement","statusDescription","date","Date","logItemHtml","getHours","getMinutes","getSeconds","parsedResult","actionName","actionNote","stage","startButton","disabled","../models/page-settings/process-settings","../models/xhr-exception","../models/xhr-options","../services/xhr","19","signalr_1","topic_display_settings_1","topic_display_partial_settings_1","getSettings","submitting","thoughtSelectorMessageId","thoughtTarget","hubNewReply","data","getLatestReplies","hubUpdatedMessage","resultDocument","resultBody","resultBodyElements","targetArticle_1","time","passedTime","messageId","documentElement","childNodes","node","tagName","toLowerCase","after","bindMessageButtonHandlers","showScriptFunctionality","convertToPassedTime","hubDeletedMessage","targetArticle","userAvatar","messageContents","hubDeletedTopic","eventShowEditForm","button","workingDots","saveButton","cancelButton","state","HubConnectionState","Disconnected","preventDefault","removeEventListener","eventHideEditForm","loadView","eventSaveEditForm","onSuccess","onFail","saveMessage","eventShowReplyForm","eventHideReplyForm","eventSaveReplyForm","bodyElement","resetMessageReplyForms","eventSaveTopicReplyForm","eventShowThoughtSelector","setTimeout","eventHideThoughtSelector","eventSaveThought","smileyId","Connected","href","eventDeleteMessage","targetButton","confirm","eventShowFullReply","eventHideFullReply","boardFlag","removeAttribute","eventToggleBookmarkImage","bookmarkImage","status_1","src","includes","eventPageClick","eventTarget","page","Number","loadPage","eventPopState","history","replaceState","title","onpopstate","on","getElementsByTagName","bindPageButtons","bindGlobalButtonHandlers","hideFavIcons","setupPageNavigators","addListenerClickableLinkParent","pushState","mainElement","topicReplyForm","scrollTo","imgElement","messageList","partialSettings","eval","insertAdjacentElement","success","fail","idElement","topicIdElement","disableMergingElement","requestBodyValues","submitRequestOptions","_b","xhrResult_1","modelErrors","modelErrorField","exception_1","_c","disableMerging","getToken","propertyName","errorMessage","_d","tokenElement","returnToken","tokenRequestOptions","tokenRequestResponse","token","../models/page-settings/topic-display-partial-settings","../models/page-settings/topic-display-settings","20","topic_index_settings_1","hubRefreshIndex","../models/page-settings/topic-index-settings","21","bbCodes","bold","italics","quote","spoiler","img","reaction","underline","strike","color","list","numlist","size","doc","addBBCodeListener","addSpoilerListener","insertBBCode","showSpoiler","targetCode","targetTextArea","22","dangerSign","23","eventUnhidePages","parentElement","eventOpenLink","eventStopPropagation","targetElement","which","shiftKey","ctrlKey","win","eventOpenMenu","eventCloseMenu","menuWrapperElement","dropDownMenuElement","selectorLeftOffset","screenFalloff","getBoundingClientRect","left","pageXOffset","clientLeft","clientWidth","innerWidth","dropDownMenuElements","eventToggleCheckBox","getElementById","htmlFor","eventPreventDefault","defaultView","addListenerOpenMenu","addListenerUnhidePages","pageNavigatorElement","linkParents","linkParent","link","updateMorePageBeforeAfterControlsVisibility","updatePageControlsVisibility","pageElements","24","timers_1","updateTags","datetime","now","difference","getTime","differenceSeconds","differenceMinutes","differenceHours","differenceDays","returnText","years","getFullYear","nowMonth","getMonth","months","timers","25","reaction_selector_settings_1","eventToggleSelector","selectorElement","imageList","image","eventInsertReaction","eventCloseSelector","../models/page-settings/reaction-selector-settings","26","eventInsertSmileyCode","smileyCode","27","whos_online_monitor_settings_1","recentRequest","hubWhosOnline","updateChicletTimes","bindChicletMonitor","bindHubActions","chicletTimeValue","chicletTime","user","../models/page-settings/whos-online-monitor-settings","./xhr","28","xhr_result_1","options","xhr","XMLHttpRequest","setRequestHeader","ontimeout","logRejected","onerror","createXhrResult","send","targetDoc","importResultDocument","reason","isFormMethod","currentDoc","responseDocument","newElement","targetId","replaceWith","../models/xhr-result","29","defineProperty","AbortController","isAborted","onabort","abort","get","enumerable","configurable","30","extendStatics","__extends","setPrototypeOf","__proto__","Array","d","b","hasOwnProperty","__","constructor","create","Errors_1","HttpClient_1","NodeHttpClient_1","XhrHttpClient_1","DefaultHttpClient","_super","logger","httpClient","XhrHttpClient","NodeHttpClient","abortSignal","aborted","AbortError","getCookieString","HttpClient","./Errors","./HttpClient","./NodeHttpClient","./XhrHttpClient","31","HttpError","statusCode","trueProto","TimeoutError","32","Buffer","TextMessageFormat_1","Utils_1","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","TextMessageFormat","write","stringify","parseHandshakeResponse","messageData","remainingData","isArrayBuffer","binaryData","Uint8Array","separatorIndex","RecordSeparatorCode","responseLength","String","fromCharCode","slice","byteLength","buffer","textData","RecordSeparator","./TextMessageFormat","./Utils","33","__assign","s","arguments","HttpResponse","content","post","delete","34","DefaultHttpClient_1","ILogger_1","ITransport_1","LongPollingTransport_1","ServerSentEventsTransport_1","WebSocketTransport_1","WebSocketModule","EventSourceModule","requireFunc","__webpack_require__","__non_webpack_require__","HttpConnection","features","Arg","isRequired","createLogger","resolveUrl","logMessageContent","isNode","WebSocket","EventSource","connectionState","onreceive","onclose","transferFormat","TransferFormat","Binary","isIn","LogLevel","Debug","startPromise","startInternal","transport","error","stopError","negotiateResponse","redirects","_loop_1","this_1","state_1","e_2","accessTokenFactory","skipNegotiation","HttpTransportType","WebSockets","constructTransport","connect","accessToken_1","getNegotiationResponse","ProtocolVersion","createTransport","LongPollingTransport","inherentKeepAlive","stopConnection","changeState","negotiateUrl","e_3","resolveNegotiateUrl","createConnectUrl","connectionId","requestedTransport","requestedTransferFormat","connectUrl","transports","_i","transports_1","endpoint","ex_1","isITransport","availableTransports","resolveTransport","WebSocketTransport","ServerSentEvents","ServerSentEventsTransport","LongPolling","transferFormats","actualTransport","transportMatches","from","to","Information","lastIndexOf","aTag","index","./DefaultHttpClient","./ILogger","./ITransport","./LongPollingTransport","./ServerSentEventsTransport","./WebSocketTransport","35","HandshakeProtocol_1","IHubProtocol_1","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HubConnection","connection","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","handshakeProtocol","processIncomingData","connectionClosed","callbacks","methods","closedCallbacks","receivedHandshakeResponse","cachedPingMessage","writeMessage","MessageType","Ping","handshakePromise","version","handshakeResolver","handshakeRejecter","sendMessage","cleanupTimeout","resetTimeoutPeriod","resetKeepAliveInterval","cleanupPingTimer","stream","methodName","args","promiseQueue","invocationDescriptor","createStreamInvocation","subject","Subject","cancelCallback","cancelInvocation","createCancelInvocation","invocationId","cancelMessage","invocationEvent","Completion","complete","catch","createInvocation","invoke","newMethod","off","handlers","removeIdx","callback","processHandshakeResponse","messages_1","parseMessages","Invocation","invokeClientMethod","StreamItem","Close","Warning","responseMessage","pingServerHandle","timeoutHandle","serverTimeout","invocationMessage","m","clearTimeout","nonblocking","StreamInvocation","CancelInvocation","./HandshakeProtocol","./IHubProtocol","36","HttpConnection_1","HubConnection_1","JsonHubProtocol_1","Loggers_1","configureLogging","logging","ConsoleLogger","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","NullLogger","instance","JsonHubProtocol","./HttpConnection","./HubConnection","./JsonHubProtocol","./Loggers","37","38","39","40","JSON_HUB_PROTOCOL_NAME","Text","input","hubMessages","parsedMessage","isInvocationMessage","isStreamItemMessage","isCompletionMessage","assertNotEmptyString","item","41","_logLevel","_message","42","AbortController_1","pollAbort","running","pollOptions","pollUrl","Trace","signal","getAccessToken","updateHeaderToken","closeError","receiving","poll","e_1","getDataDetail","pollAborted","raiseOnClose","deleteOptions","logMessage","./AbortController","43","requestModule","cookieJar","jar","defaults","httpRequest","requestBody","currentRequest","encoding","X-Requested-With","statusMessage","44","eventSourceConstructor","opened","eventSource","withCredentials","cookies","Cookie","onmessage","onopen","45","output","split","46","val","values","includeContent","detail","formatArrayBuffer","view","str","num","substr","ArrayBuffer","transportName","observers","observer","subscribe","SubjectSubscription","dispose","minimumLogLevel","logLevel","Critical","toISOString","warn","info","47","webSocketConstructor","webSocket","binaryType","_event","ErrorEvent","readyState","OPEN","wasClean","48","header","49","VERSION","HubConnectionBuilder_1","./HubConnectionBuilder","50","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","len2","encodeChunk","lookup","end","51","base64","ieee754","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","arg","encodingOrOffset","allocUnsafe","string","isEncoding","actual","fromString","isView","fromArrayLike","isInstance","array","byteOffset","fromArrayBuffer","valueOf","obj","isBuffer","copy","numberIsNaN","isArray","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","utf8Slice","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","species","writable","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","x","concat","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","toLocaleString","equals","inspect","max","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","set","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","dst","base64-js","52","global","factory","HOOKS","_disable","_enable","altFormat","altInput","altInputClass","animate","ariaDateFormat","closeOnSelect","conjunction","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enable","enableSeconds","errorHandler","getWeek","givenDate","setHours","setDate","getDate","getDay","week1","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","mode","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","pad","number","int","bool","debounce","func","wait","immediate","context","arrayify","toggleClass","className","tag","clearNode","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","pattern","do_nothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","parseFloat","H","J","day","K","test","M","shortMonth","S","seconds","setSeconds","U","unixSeconds","W","weekNum","weekNumber","Y","year","setFullYear","Z","ISODate","h","minutes","setMinutes","l","month","unixMillSeconds","w","tokenRegex","formats","createDateFormatter","config","l10n","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","date_orig","toFixed","format","datestr","parseDate","matched","matchIndex","regexStr","token_1","isBackSlash","escaped","match","fn","isNaN","compareDates","date1","date2","isBetween","ts","ts1","ts2","duration","DAY","source","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","defaultConfig","bindToInstance","bind","setCalendarWidth","requestAnimationFrame","calendarContainer","visibility","display","daysContainer","daysWidth","days","offsetWidth","weekWrapper","removeProperty","updateTime","selectedDates","setDefaultTime","isKeyDown","curValue","delta","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","hours","secondElement","limitMinHours","minTime","minDate","minDateHasTime","latestSelectedDateObj","maxTime","maxDate","maxDateHasTime","setHoursFromDate","setDefaultHours","min_hr","min_minutes","max_hr","max_minutes","isMobile","onYearInput","changeYear","handler","ev","el","_handlers","onClick","evt","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","currentYear","currentMonth","redraw","timeIncrement","inputElem","createEvent","dispatchEvent","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","onMouseOver","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","current","dayFocused","isInView","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","buildDays","frag","buildMonth","container","monthNavFragment","monthElement","yearInput","tabindex","yearElement","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","is_offset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","appendTo","documentClick","isOpen","eventTarget_1","composedPath","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","some","newYear","newYearNum","isNewYear","dateToCheck","allowKeydown","allowInlineKeydown","keyCode","blur","isTimeObj","timeContainer","focusAndClose","selectDate","delta_1","elems","filter","charAt","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","lastDate","lastChild","containsDisabled","minRange","maxRange","prevMonth","dayElem","timestamp","outOfRange","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","currentYearElement","setupLocale","l10ns","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","right","rightMost","centerMost","styleSheets","bodyWidth","centerLeft","centerIndex","cssRules","centerStyle","insertRule","centerBefore","msMaxTouchPoints","findParent","condition","selectedDate","shouldChangeMonth","selectedIndex","sort","showTimeInput","single","range","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","destroy","_type","k","click","wasOpen","select","option","CALLBACKS","setSelectedDate","inputDate","dates","parseDateRules","rule","hooks","initEvent","getDateStr","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","dataset","timeMode","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","nodeName","placeholder","required","preloadedDate","defaultDate","_showTimeInput","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","rContainer","separator","hourInput","minuteInput","military2ampm","secondInput","buildTime","customAppend","nodeType","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","isSafari","_flatpickr","nodeList","nodes","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","default","localize","setDefaults","jQuery","fp_incr","define","amd","53","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","54","ctor","superCtor","super_","TempCtor","55","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","browser","env","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","56","setImmediate","clearImmediate","Function","immediateIds","nextImmediateId","Timeout","clearFn","_id","_clearFn","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","process/browser.js","57","58","formatRegExp","objects","isNull","isObject","deprecate","msg","isUndefined","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","isFunction","primitive","simple","isNumber","formatPrimitive","visibleKeys","idx","arrayToHash","getOwnPropertyNames","isError","formatError","isRegExp","isDate","base","braces","toUTCString","formatProperty","formatArray","prev","cur","numLinesEst","reduceToSingleString","desc","getOwnPropertyDescriptor","line","ar","re","objectToString","debuglog","NODE_DEBUG","toUpperCase","pid","italic","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","regexp","isNullOrUndefined","isSymbol","isPrimitive","prop","inherits","origin","./support/isBuffer","_process"],"mappings":"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","file":"app.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i${message}`);\r\n });\r\n}\r\nexports.warning = warning;\r\nfunction postToPath(path, parameters) {\r\n throwIfNull(path, 'path');\r\n throwIfNull(parameters, 'parameters');\r\n var antiForgeryTokenElements = document.querySelectorAll('input[name=__RequestVerificationToken]');\r\n var antiForgeryTokenValue;\r\n if (antiForgeryTokenElements && antiForgeryTokenElements.length > 0) {\r\n var antiForgeryTokenElement = antiForgeryTokenElements[0];\r\n antiForgeryTokenValue = antiForgeryTokenElement.value;\r\n }\r\n else {\r\n return;\r\n }\r\n var form = document.createElement('FORM');\r\n form.method = \"post\";\r\n form.action = path;\r\n var antiForgeryToken = document.createElement('INPUT');\r\n antiForgeryToken.type = \"hidden\";\r\n antiForgeryToken.name = \"__RequestVerificationToken\";\r\n antiForgeryToken.value = antiForgeryTokenValue;\r\n form.appendChild(antiForgeryToken);\r\n Object.keys(parameters).forEach(function (key) {\r\n var field = document.createElement('INPUT');\r\n field.type = \"hidden\";\r\n field.name = key;\r\n field.value = parameters[key];\r\n form.appendChild(field);\r\n });\r\n document.body.appendChild(form);\r\n form.submit();\r\n}\r\nexports.postToPath = postToPath;\r\n// for inserting text into textareas at the cursor location\r\nfunction insertAtCaret(areaElement, text) {\r\n throwIfNull(areaElement, 'areaElement');\r\n throwIfNull(text, 'text');\r\n var compatible = areaElement.selectionStart || areaElement.selectionStart == 0;\r\n if (!compatible) {\r\n areaElement.textContent += text;\r\n return;\r\n }\r\n var startPos = areaElement.selectionStart;\r\n var endPos = areaElement.selectionEnd;\r\n var front = (areaElement.value).substring(0, startPos);\r\n var replaced = (areaElement.value).substring(startPos, endPos);\r\n var back = (areaElement.value).substring(endPos, areaElement.value.length);\r\n areaElement.value = front + text + replaced + back;\r\n areaElement.selectionStart = startPos + text.length;\r\n areaElement.selectionEnd = startPos + text.length + replaced.length;\r\n areaElement.focus();\r\n areaElement.scrollTop = endPos;\r\n}\r\nexports.insertAtCaret = insertAtCaret;\r\nfunction throwIfNull(value, name) {\r\n if (!value) {\r\n throw new Error(\"value of \\\"\" + name + \"\\\" is invalid\");\r\n }\r\n // I prefer to treat empty strings as null due to my time with C#\r\n if (util_1.isString(value)) {\r\n value = value.trim();\r\n if (value.length == 0) {\r\n throw new Error(\"value of \\\"\" + name + \"\\\" is invalid\");\r\n }\r\n }\r\n}\r\nexports.throwIfNull = throwIfNull;\r\nfunction isEmpty(value) {\r\n // I prefer to treat whitespace as empty.\r\n value = value.trim();\r\n if (value.length == 0) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isEmpty = isEmpty;\r\nfunction isFirefox() {\r\n // https://stackoverflow.com/a/26358856/2621693\r\n if (navigator && navigator.userAgent && navigator.userAgent.indexOf(\"Firefox\") != -1) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isFirefox = isFirefox;\r\nfunction queryify(parameters) {\r\n if (parameters === void 0) { parameters = {}; }\r\n return Object\r\n .keys(parameters)\r\n .map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(parameters[key]); })\r\n .join('&');\r\n}\r\nexports.queryify = queryify;\r\nfunction hide(element) {\r\n if (!element) {\r\n return;\r\n }\r\n if (util_1.isString(element)) {\r\n document.querySelectorAll(element).forEach(function (elem) {\r\n hide(elem);\r\n });\r\n }\r\n if (element instanceof Element) {\r\n if (!element.classList) {\r\n throw new Error('Element does not contain a class list.');\r\n }\r\n if (!element.classList.contains('hidden')) {\r\n element.classList.add('hidden');\r\n }\r\n }\r\n}\r\nexports.hide = hide;\r\n;\r\nfunction show(element) {\r\n if (!element) {\r\n return;\r\n }\r\n if (util_1.isString(element)) {\r\n document.querySelectorAll(element).forEach(function (elem) {\r\n show(elem);\r\n });\r\n }\r\n if (element instanceof Element) {\r\n if (!element.classList) {\r\n throw new Error('Element does not contain a class list.');\r\n }\r\n if (element.classList.contains('hidden')) {\r\n element.classList.remove('hidden');\r\n }\r\n }\r\n}\r\nexports.show = show;\r\n;\r\nfunction toggle(element) {\r\n if (!element) {\r\n return;\r\n }\r\n if (element instanceof Element) {\r\n if (!element.classList) {\r\n throw new Error('Element does not contain a class list.');\r\n }\r\n if (element.classList.contains('hidden')) {\r\n element.classList.remove('hidden');\r\n }\r\n else {\r\n element.classList.add('hidden');\r\n }\r\n }\r\n}\r\nexports.toggle = toggle;\r\nfunction clear(element) {\r\n if (util_1.isString(element)) {\r\n document.querySelectorAll(element).forEach(function (elem) {\r\n clear(elem);\r\n });\r\n }\r\n if (element instanceof Element) {\r\n while (element.firstChild) {\r\n element.removeChild(element.firstChild);\r\n }\r\n }\r\n}\r\nexports.clear = clear;\r\n// Source: https://stackoverflow.com/a/4793630/2621693\r\nfunction insertAfter(newNode, referenceNode) {\r\n if (referenceNode && referenceNode.parentNode) {\r\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n }\r\n}\r\nexports.insertAfter = insertAfter;\r\n\n},{\"util\":58}],4:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar AccountDetailsSettings = /** @class */ (function () {\r\n function AccountDetailsSettings(init) {\r\n this.imgurClientId = '';\r\n Object.assign(this, init);\r\n }\r\n return AccountDetailsSettings;\r\n}());\r\nexports.AccountDetailsSettings = AccountDetailsSettings;\r\n\n},{}],5:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar ProcessSettings = /** @class */ (function () {\r\n function ProcessSettings(init) {\r\n this.stages = [];\r\n this.currentAction = '';\r\n this.currentStep = 0;\r\n this.currentStage = 0;\r\n this.take = 0;\r\n this.totalSteps = 0;\r\n this.totalRecords = 0;\r\n this.lastRecordId = -1;\r\n Object.assign(this, init);\r\n }\r\n return ProcessSettings;\r\n}());\r\nexports.ProcessSettings = ProcessSettings;\r\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar ReactionSelectorSettings = /** @class */ (function () {\r\n function ReactionSelectorSettings(init) {\r\n this.imgurName = '';\r\n this.reactionImages = [];\r\n Object.assign(this, init);\r\n }\r\n return ReactionSelectorSettings;\r\n}());\r\nexports.ReactionSelectorSettings = ReactionSelectorSettings;\r\n\n},{}],7:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar TopicDisplayPartialSettings = /** @class */ (function () {\r\n function TopicDisplayPartialSettings(init) {\r\n this.latest = 0;\r\n this.firstMessageId = 0;\r\n this.newMessages = [];\r\n Object.assign(this, init);\r\n }\r\n return TopicDisplayPartialSettings;\r\n}());\r\nexports.TopicDisplayPartialSettings = TopicDisplayPartialSettings;\r\n\n},{}],8:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar TopicDisplaySettings = /** @class */ (function () {\r\n function TopicDisplaySettings(init) {\r\n this.assignedBoards = [];\r\n this.bookmarked = false;\r\n this.currentPage = 0;\r\n this.latest = 0;\r\n this.messages = [];\r\n this.pageActions = '';\r\n this.showFavicons = false;\r\n this.togglePath = '';\r\n this.topicId = 0;\r\n this.firstMessageId = 0;\r\n this.totalPages = 0;\r\n Object.assign(this, init);\r\n }\r\n return TopicDisplaySettings;\r\n}());\r\nexports.TopicDisplaySettings = TopicDisplaySettings;\r\n\n},{}],9:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar TopicIndexSettings = /** @class */ (function () {\r\n function TopicIndexSettings(init) {\r\n this.boardId = 0;\r\n this.currentPage = 0;\r\n this.totalPages = 0;\r\n this.unreadFilter = 0;\r\n Object.assign(this, init);\r\n }\r\n return TopicIndexSettings;\r\n}());\r\nexports.TopicIndexSettings = TopicIndexSettings;\r\n\n},{}],10:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar WhosOnlineMonitorSettings = /** @class */ (function () {\r\n function WhosOnlineMonitorSettings(init) {\r\n this.users = [];\r\n Object.assign(this, init);\r\n }\r\n return WhosOnlineMonitorSettings;\r\n}());\r\nexports.WhosOnlineMonitorSettings = WhosOnlineMonitorSettings;\r\n\n},{}],11:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar XhrException = /** @class */ (function () {\r\n function XhrException(init) {\r\n this.ClassName = \"\";\r\n this.Message = \"\";\r\n this.StackTraceString = \"\";\r\n Object.assign(this, init);\r\n }\r\n return XhrException;\r\n}());\r\nexports.XhrException = XhrException;\r\n\n},{}],12:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar http_method_1 = require(\"../definitions/http-method\");\r\nvar XhrOptions = /** @class */ (function () {\r\n function XhrOptions(init) {\r\n this.url = \"\";\r\n this.timeout = 10000;\r\n this.method = http_method_1.HttpMethod.Get;\r\n this.query = {};\r\n this.headers = {\r\n 'Cache-Control': 'no-cache'\r\n };\r\n this.responseType = 'text';\r\n this.body = null;\r\n Object.assign(this, init);\r\n }\r\n return XhrOptions;\r\n}());\r\nexports.XhrOptions = XhrOptions;\r\n\n},{\"../definitions/http-method\":2}],13:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar XhrResult = /** @class */ (function () {\r\n function XhrResult(init) {\r\n this.status = -1;\r\n this.statusText = \"\";\r\n this.response = null;\r\n this.responseText = \"\";\r\n Object.assign(this, init);\r\n }\r\n return XhrResult;\r\n}());\r\nexports.XhrResult = XhrResult;\r\n\n},{}],14:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar account_details_settings_1 = require(\"../models/page-settings/account-details-settings\");\r\nfunction getSettings() {\r\n var genericWindow = window;\r\n return new account_details_settings_1.AccountDetailsSettings({\r\n imgurClientId: genericWindow.imgurClientId\r\n });\r\n}\r\nvar AccountDetails = /** @class */ (function () {\r\n function AccountDetails(app) {\r\n var _this = this;\r\n this.app = app;\r\n this.bindEvents = function () {\r\n document.querySelectorAll('.birthday-toggle').forEach(function (element) {\r\n element.addEventListener('click', _this.eventToggleBirthdaySelectors);\r\n });\r\n document.querySelectorAll('#link-imgur-account-button').forEach(function (element) {\r\n element.addEventListener('click', _this.eventLinkImgurAccount);\r\n });\r\n };\r\n this.eventToggleBirthdaySelectors = function (event) {\r\n var birthdayToggle = event.currentTarget;\r\n document.querySelectorAll('.birthday-selectors').forEach(function (element) {\r\n if (birthdayToggle.checked) {\r\n helpers_1.show(element);\r\n }\r\n else {\r\n helpers_1.hide(element);\r\n }\r\n });\r\n };\r\n this.eventLinkImgurAccount = function () {\r\n var self = _this;\r\n var url = \"https://api.imgur.com/oauth2/authorize?client_id=\" + self.settings.imgurClientId + \"&response_type=token\";\r\n var popup = window.open(url, \"Imgur\", 'toolbar=0,status=0,width=942,height=559,modal=yes,alwaysRaised=yes');\r\n var checkConnect = setInterval(function () {\r\n if (!popup) {\r\n return;\r\n }\r\n if (!popup.document.location.hash) {\r\n return;\r\n }\r\n var hash = popup.document.location.hash;\r\n console.log('hash found');\r\n console.log(popup.document.location.hash);\r\n if (hash.indexOf('access_token') != -1) {\r\n console.log('access_token found');\r\n clearInterval(checkConnect);\r\n var accessToken = self.find(hash, 'access_token');\r\n var expiresIn = self.find(hash, 'expires_in');\r\n var refreshToken = self.find(hash, 'refresh_token');\r\n var accountUsername = self.find(hash, 'account_username');\r\n var accountId = self.find(hash, 'account_id');\r\n popup.close();\r\n console.log('posting to path');\r\n console.log(self.app.baseUrl + \"/Account/LinkImgur\");\r\n helpers_1.postToPath(self.app.baseUrl + \"/Account/LinkImgur\", {\r\n id: accountId,\r\n username: accountUsername,\r\n accessToken: accessToken,\r\n expiresIn: expiresIn,\r\n refreshToken: refreshToken\r\n });\r\n }\r\n }, 100);\r\n };\r\n helpers_1.throwIfNull(app, 'app');\r\n this.settings = getSettings();\r\n }\r\n AccountDetails.prototype.init = function () {\r\n this.bindEvents();\r\n };\r\n AccountDetails.prototype.find = function (hash, name) {\r\n var results = new RegExp(\"[#&]\" + name + \"=([^&]*)\").exec(hash);\r\n if (results) {\r\n return results[1];\r\n }\r\n return '';\r\n };\r\n return AccountDetails;\r\n}());\r\nexports.AccountDetails = AccountDetails;\r\n\n},{\"../helpers\":3,\"../models/page-settings/account-details-settings\":4}],15:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar flatpickr_1 = require(\"flatpickr\");\r\nvar EventEdit = /** @class */ (function () {\r\n function EventEdit() {\r\n this.timeEnabled = true;\r\n }\r\n EventEdit.prototype.init = function () {\r\n var self = this;\r\n self.initializePickers();\r\n var allDayCheckbox = document.querySelector('#AllDay');\r\n if (allDayCheckbox) {\r\n allDayCheckbox.addEventListener('click', function () {\r\n self.initializePickers();\r\n });\r\n }\r\n };\r\n EventEdit.prototype.initializePickers = function () {\r\n var self = this;\r\n var allDayCheckbox = document.querySelector('#AllDay');\r\n self.timeEnabled = !allDayCheckbox.checked;\r\n flatpickr_1[\"default\"]('#startPicker', {\r\n allowInput: true,\r\n clickOpens: false,\r\n enableTime: self.timeEnabled,\r\n dateFormat: self.timeEnabled ? 'Y-m-d H:i' : 'Y-m-d',\r\n wrap: true\r\n });\r\n flatpickr_1[\"default\"]('#endPicker', {\r\n allowInput: true,\r\n clickOpens: false,\r\n enableTime: self.timeEnabled,\r\n dateFormat: self.timeEnabled ? 'Y-m-d H:i' : 'Y-m-d',\r\n wrap: true\r\n });\r\n };\r\n return EventEdit;\r\n}());\r\nexports.EventEdit = EventEdit;\r\n\n},{\"flatpickr\":52}],16:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar ManageBoards = /** @class */ (function () {\r\n function ManageBoards() {\r\n var _this = this;\r\n this.mergeFromBoardId = \"\";\r\n this.mergeFromCategoryId = \"\";\r\n this.eventMergeBoard = function (event) {\r\n var target = event.currentTarget;\r\n if (helpers_1.isEmpty(_this.mergeFromBoardId)) {\r\n _this.mergeFromBoardId = target.getAttribute('board-id') || \"\";\r\n target.closest('.table-row').querySelectorAll('.table-cell').forEach(function (element) {\r\n element.style.backgroundColor = \"#ACD\";\r\n });\r\n }\r\n else {\r\n var mergeToBoardId = target.getAttribute('board-id');\r\n if (mergeToBoardId == _this.mergeFromBoardId) {\r\n return;\r\n }\r\n helpers_1.postToPath(\"/Boards/MergeBoard\", {\r\n \"FromId\": _this.mergeFromBoardId,\r\n \"ToId\": mergeToBoardId\r\n });\r\n }\r\n };\r\n this.eventMergeCategory = function (event) {\r\n var target = event.currentTarget;\r\n if (helpers_1.isEmpty(_this.mergeFromCategoryId)) {\r\n _this.mergeFromCategoryId = target.getAttribute('category-id') || '';\r\n target.closest('h3').style.backgroundColor = \"#ACD\";\r\n }\r\n else {\r\n var mergeToCategoryId = target.getAttribute('category-id');\r\n if (mergeToCategoryId == _this.mergeFromCategoryId) {\r\n return;\r\n }\r\n helpers_1.postToPath(\"/Boards/MergeCategory\", {\r\n \"FromId\": _this.mergeFromCategoryId,\r\n \"ToId\": mergeToCategoryId\r\n });\r\n }\r\n };\r\n }\r\n ManageBoards.prototype.init = function () {\r\n var _this = this;\r\n document.querySelectorAll('.merge-board').forEach(function (element) {\r\n element.addEventListener('click', _this.eventMergeBoard);\r\n });\r\n document.querySelectorAll('.merge-category').forEach(function (element) {\r\n element.addEventListener('click', _this.eventMergeCategory);\r\n });\r\n };\r\n return ManageBoards;\r\n}());\r\nexports.ManageBoards = ManageBoards;\r\n\n},{\"../helpers\":3}],17:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar MessageCreate = /** @class */ (function () {\r\n function MessageCreate() {\r\n var _this = this;\r\n this.toggleLock = false;\r\n this.assignedBoards = [];\r\n this.eventToggleBoard = function (event) {\r\n event.stopPropagation();\r\n if (_this.toggleLock) {\r\n return;\r\n }\r\n _this.toggleLock = true;\r\n var target = event.currentTarget;\r\n var boardId = target.getAttribute('board-id');\r\n var boardFlagElement = document.querySelector(\"[board-flag=\\\"\" + boardId + \"\\\"]\");\r\n var imgSrc = boardFlagElement.getAttribute('src');\r\n var assignedBoardIndex = _this.assignedBoards.indexOf(boardId, 0);\r\n var checkbox = document.querySelector(\"input[name=\\\"Selected_\" + boardId + \"\\\"]\");\r\n if (assignedBoardIndex > -1) {\r\n _this.assignedBoards.splice(assignedBoardIndex, 1);\r\n imgSrc = imgSrc.replace('checked', 'unchecked');\r\n checkbox.value = \"False\";\r\n }\r\n else {\r\n _this.assignedBoards.push(boardId);\r\n imgSrc = imgSrc.replace('unchecked', 'checked');\r\n checkbox.value = \"True\";\r\n }\r\n boardFlagElement.setAttribute('src', imgSrc);\r\n _this.toggleLock = false;\r\n };\r\n }\r\n MessageCreate.prototype.init = function () {\r\n var _this = this;\r\n var incomingBoards = window.assignedBoards;\r\n if (incomingBoards && incomingBoards.length > 0) {\r\n this.assignedBoards = incomingBoards;\r\n }\r\n document.querySelectorAll('[toggle-board]').forEach(function (element) {\r\n element.addEventListener('click', _this.eventToggleBoard);\r\n });\r\n };\r\n return MessageCreate;\r\n}());\r\nexports.MessageCreate = MessageCreate;\r\n\n},{}],18:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nexports.__esModule = true;\r\nvar process_settings_1 = require(\"../models/page-settings/process-settings\");\r\nvar xhr_options_1 = require(\"../models/xhr-options\");\r\nvar http_method_1 = require(\"../definitions/http-method\");\r\nvar xhr_1 = require(\"../services/xhr\");\r\nvar helpers_1 = require(\"../helpers\");\r\nvar xhr_exception_1 = require(\"../models/xhr-exception\");\r\nfunction getSettings() {\r\n var genericWindow = window;\r\n return new process_settings_1.ProcessSettings({\r\n stages: genericWindow.stages\r\n });\r\n}\r\nvar Process = /** @class */ (function () {\r\n function Process() {\r\n var _this = this;\r\n this.eventUpdateTake = function (event) {\r\n var takeInput = event.currentTarget;\r\n var currentStepInput = document.querySelector('#current-step');\r\n var totalSteps = document.querySelector('#total-steps');\r\n if (!takeInput.value) {\r\n return;\r\n }\r\n var skip = _this.settings.take * _this.settings.currentStep;\r\n _this.settings.take = parseInt(takeInput.value);\r\n _this.settings.currentStep = skip > 0 ? Math.floor(skip / _this.settings.take) : 0;\r\n _this.settings.totalSteps = Math.ceil(_this.settings.totalRecords / _this.settings.take);\r\n currentStepInput.value = (_this.settings.currentStep + 1).toString();\r\n totalSteps.innerHTML = (_this.settings.totalSteps + 1).toString();\r\n };\r\n this.eventUpdateStage = function (event) {\r\n var stageInput = event.currentTarget;\r\n var currentStepInput = document.querySelector('#current-step');\r\n var takeInput = document.querySelector('#take');\r\n var totalSteps = document.querySelector('#total-steps');\r\n if (!stageInput.value) {\r\n return;\r\n }\r\n _this.settings.currentStage = parseInt(stageInput.value) - 1;\r\n _this.settings.take = 0;\r\n _this.settings.currentStep = 0;\r\n _this.settings.totalSteps = 0;\r\n takeInput.value = \"\";\r\n currentStepInput.value = \"\";\r\n totalSteps.innerHTML = \"\";\r\n };\r\n this.eventStartButtonClick = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var togglePauseOnError, togglePauseAfterNext, currentStageInput, i, requestOptions, xhrResult, currentStepInput;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n togglePauseOnError = document.querySelector('#pause-on-error');\r\n togglePauseAfterNext = document.querySelector('#pause-after-next');\r\n currentStageInput = document.querySelector('#current-stage');\r\n if (currentStageInput.value) {\r\n this.settings.currentStage = parseInt(currentStageInput.value) - 1;\r\n }\r\n i = this.settings.currentStage;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < this.settings.stages.length)) return [3 /*break*/, 7];\r\n this.start(i);\r\n this.settings.currentAction = this.settings.stages[i];\r\n if (!(this.settings.totalSteps == 0)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, this.loadCurrentAction()];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n if (!(this.settings.currentStep < this.settings.totalSteps)) return [3 /*break*/, 5];\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Post,\r\n url: this.settings.currentAction,\r\n body: helpers_1.queryify({\r\n currentStep: this.settings.currentStep,\r\n take: this.settings.take,\r\n lastRecordId: this.settings.lastRecordId\r\n }),\r\n timeout: 120000\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.request(requestOptions)];\r\n case 4:\r\n xhrResult = _a.sent();\r\n this.log(xhrResult);\r\n if (xhrResult.status != 200 && togglePauseOnError.checked) {\r\n this.stop();\r\n return [2 /*return*/];\r\n }\r\n if (xhrResult.responseText) {\r\n this.settings.lastRecordId = parseInt(xhrResult.responseText);\r\n if (!this.settings.lastRecordId) {\r\n this.settings.lastRecordId = -1;\r\n }\r\n }\r\n this.updateProgress();\r\n this.settings.currentStep++;\r\n currentStepInput = document.querySelector('#current-step');\r\n currentStepInput.value = this.settings.currentStep.toString();\r\n if (togglePauseAfterNext.checked) {\r\n togglePauseAfterNext.checked = false;\r\n this.stop();\r\n return [2 /*return*/];\r\n }\r\n return [3 /*break*/, 3];\r\n case 5:\r\n this.stop();\r\n _a.label = 6;\r\n case 6:\r\n i++;\r\n return [3 /*break*/, 1];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.eventShowSettingsButtonClick = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var showSettingsButton, settingsPane;\r\n return __generator(this, function (_a) {\r\n showSettingsButton = document.querySelector('#show-settings');\r\n settingsPane = document.querySelector('#settings-pane');\r\n helpers_1.hide(showSettingsButton);\r\n helpers_1.show(settingsPane);\r\n return [2 /*return*/];\r\n });\r\n }); };\r\n this.eventHideSettingsButtonClick = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var showSettingsButton, settingsPane;\r\n return __generator(this, function (_a) {\r\n showSettingsButton = document.querySelector('#show-settings');\r\n settingsPane = document.querySelector('#settings-pane');\r\n helpers_1.show(showSettingsButton);\r\n helpers_1.hide(settingsPane);\r\n return [2 /*return*/];\r\n });\r\n }); };\r\n this.settings = getSettings();\r\n }\r\n Process.prototype.init = function () {\r\n var startButton = document.querySelector('#start-button');\r\n startButton.addEventListener('click', this.eventStartButtonClick);\r\n var showSettingsButton = document.querySelector('#show-settings');\r\n showSettingsButton.addEventListener('click', this.eventShowSettingsButtonClick);\r\n var hideSettingsButton = document.querySelector('#hide-settings');\r\n hideSettingsButton.addEventListener('click', this.eventHideSettingsButtonClick);\r\n var takeInput = document.querySelector('#take');\r\n takeInput.addEventListener('blur', this.eventUpdateTake);\r\n var stageInput = document.querySelector('#current-stage');\r\n stageInput.addEventListener('blur', this.eventUpdateStage);\r\n var totalStages = document.querySelector('#total-stages');\r\n totalStages.innerHTML = this.settings.stages.length.toString();\r\n };\r\n Process.prototype.updateProgress = function () {\r\n var progressBar = document.querySelector('#progress-bar');\r\n helpers_1.show(progressBar);\r\n var bar = document.querySelector('#completed-bar');\r\n var percent = 100;\r\n if (this.settings.totalSteps > 0) {\r\n percent = 100 * (this.settings.currentStep + 1) / (this.settings.totalSteps);\r\n }\r\n bar.style.width = percent + \"%\";\r\n percent = Math.round(percent);\r\n bar.innerHTML = percent + \"%\";\r\n };\r\n Process.prototype.log = function (xhrResult) {\r\n var logSuccessInput = document.querySelector('#log-success');\r\n if (!xhrResult.responseText && xhrResult.status == 200 && !logSuccessInput.checked) {\r\n return;\r\n }\r\n var log = document.querySelector('#log');\r\n if (xhrResult) {\r\n var responseStatus = xhrResult.status + \" \" + xhrResult.statusText;\r\n var responseException = null;\r\n if (xhrResult.responseText) {\r\n try {\r\n responseException = new xhr_exception_1.XhrException(JSON.parse(xhrResult.responseText));\r\n }\r\n catch (_a) { }\r\n }\r\n if (responseException) {\r\n var responseDescription = responseException.ClassName + \": \" + responseException.Message + \"\\n\" + responseException.StackTraceString;\r\n this.addLogItem(log, responseStatus, responseDescription);\r\n }\r\n else {\r\n this.addLogItem(log, responseStatus, xhrResult.responseText);\r\n }\r\n }\r\n else {\r\n this.addLogItem(log, 'Result was null');\r\n }\r\n };\r\n Process.prototype.addLogItem = function (logElement, status, statusDescription) {\r\n if (status === void 0) { status = ''; }\r\n if (statusDescription === void 0) { statusDescription = ''; }\r\n var date = new Date();\r\n var hours = date.getHours() < 10 ? \"0\" + date.getHours() : date.getHours();\r\n var mins = date.getMinutes() < 10 ? \"0\" + date.getMinutes() : date.getMinutes();\r\n var secs = date.getSeconds() < 10 ? \"0\" + date.getSeconds() : date.getSeconds();\r\n var time = hours + \":\" + mins + \":\" + secs;\r\n var logItemHtml = '
  • ';\r\n logItemHtml += \"

    \" + time + \" - \" + status + \"

    \";\r\n if (statusDescription) {\r\n logItemHtml += \"
    \" + statusDescription + \"
    \";\r\n }\r\n logItemHtml += '
  • ';\r\n logElement.innerHTML = logItemHtml + logElement.innerHTML;\r\n };\r\n Process.prototype.loadCurrentAction = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestOptions, xhrResult, parsedResult, actionName, actionNote, takeInput, totalSteps, currentStepInput;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Post,\r\n url: this.settings.currentAction\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.request(requestOptions)];\r\n case 1:\r\n xhrResult = _a.sent();\r\n if (xhrResult.status != 200) {\r\n this.log(xhrResult);\r\n }\r\n parsedResult = JSON.parse(xhrResult.responseText);\r\n if (parsedResult) {\r\n this.settings.totalSteps = parsedResult.totalSteps;\r\n this.settings.totalRecords = parsedResult.totalRecords;\r\n actionName = document.querySelector('#action-name');\r\n actionNote = document.querySelector('#action-note');\r\n actionName.innerHTML = parsedResult.actionName;\r\n actionNote.innerHTML = parsedResult.actionNote;\r\n takeInput = document.querySelector('#take');\r\n totalSteps = document.querySelector('#total-steps');\r\n currentStepInput = document.querySelector('#current-step');\r\n if (takeInput.value) {\r\n this.settings.take = parseInt(takeInput.value);\r\n }\r\n if (this.settings.take == 0) {\r\n this.settings.take = parsedResult.take;\r\n takeInput.value = this.settings.take.toString();\r\n }\r\n totalSteps.innerHTML = (this.settings.totalSteps).toString();\r\n if (currentStepInput.value) {\r\n this.settings.currentStep = parseInt(currentStepInput.value) - 1;\r\n }\r\n if (this.settings.currentStep == 0) {\r\n currentStepInput.value = \"1\";\r\n }\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Process.prototype.start = function (stage) {\r\n var startButton = document.querySelector('#start-button');\r\n var currentStepInput = document.querySelector('#current-step');\r\n var currentStageInput = document.querySelector('#current-stage');\r\n var takeInput = document.querySelector('#take');\r\n if (takeInput.value) {\r\n this.settings.take = parseInt(takeInput.value);\r\n }\r\n if (currentStepInput.value) {\r\n this.settings.currentStep = parseInt(currentStepInput.value) - 1;\r\n }\r\n currentStageInput.value = (stage + 1).toString();\r\n startButton.disabled = true;\r\n currentStepInput.disabled = true;\r\n currentStageInput.disabled = true;\r\n takeInput.disabled = true;\r\n };\r\n Process.prototype.stop = function () {\r\n var startButton = document.querySelector('#start-button');\r\n var currentStepInput = document.querySelector('#current-step');\r\n var currentStageInput = document.querySelector('#current-stage');\r\n var totalSteps = document.querySelector('#total-steps');\r\n var takeInput = document.querySelector('#take');\r\n if (this.settings.currentStep >= this.settings.totalSteps) {\r\n this.settings.lastRecordId = 0;\r\n this.settings.currentStep = 0;\r\n this.settings.totalSteps = 0;\r\n this.settings.take = 0;\r\n currentStepInput.value = \"\";\r\n totalSteps.innerHTML = \"\";\r\n takeInput.value = \"\";\r\n }\r\n startButton.disabled = false;\r\n currentStepInput.disabled = false;\r\n currentStageInput.disabled = false;\r\n takeInput.disabled = false;\r\n };\r\n return Process;\r\n}());\r\nexports.Process = Process;\r\n\n},{\"../definitions/http-method\":2,\"../helpers\":3,\"../models/page-settings/process-settings\":5,\"../models/xhr-exception\":11,\"../models/xhr-options\":12,\"../services/xhr\":28}],19:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nexports.__esModule = true;\r\nvar signalr_1 = require(\"@aspnet/signalr\");\r\nvar helpers_1 = require(\"../helpers\");\r\nvar xhr_1 = require(\"../services/xhr\");\r\nvar http_method_1 = require(\"../definitions/http-method\");\r\nvar xhr_options_1 = require(\"../models/xhr-options\");\r\nvar topic_display_settings_1 = require(\"../models/page-settings/topic-display-settings\");\r\nvar topic_display_partial_settings_1 = require(\"../models/page-settings/topic-display-partial-settings\");\r\nfunction getSettings() {\r\n var genericWindow = window;\r\n return new topic_display_settings_1.TopicDisplaySettings({\r\n assignedBoards: genericWindow.assignedBoards,\r\n bookmarked: genericWindow.bookmarked,\r\n currentPage: genericWindow.currentPage,\r\n latest: genericWindow.latest,\r\n messages: genericWindow.messages,\r\n pageActions: genericWindow.pageActions,\r\n showFavicons: genericWindow.showFavicons,\r\n togglePath: genericWindow.togglePath,\r\n topicId: genericWindow.topicId,\r\n totalPages: genericWindow.totalPages\r\n });\r\n}\r\nvar TopicDisplay = /** @class */ (function () {\r\n function TopicDisplay(app) {\r\n var _this = this;\r\n this.app = app;\r\n this.submitting = false;\r\n this.thoughtSelectorMessageId = \"\";\r\n this.thoughtTarget = undefined;\r\n this.hubNewReply = function (data) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(data.topicId == this.settings.topicId && this.settings.currentPage == this.settings.totalPages)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.getLatestReplies()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.hubUpdatedMessage = function (data) { return __awaiter(_this, void 0, void 0, function () {\r\n var self, requestOptions, xhrResult, resultDocument, resultBody, resultBodyElements, targetArticle_1, time, passedTime;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n self = this;\r\n if (!(data.topicId == self.settings.topicId\r\n && self.settings.messages.indexOf(data.messageId) >= 0)) return [3 /*break*/, 2];\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: \"/Messages/Display/\" + data.messageId,\r\n responseType: 'document'\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.request(requestOptions)];\r\n case 1:\r\n xhrResult = _a.sent();\r\n resultDocument = xhrResult.response.documentElement;\r\n resultBody = resultDocument.querySelector('body');\r\n resultBodyElements = resultBody.childNodes;\r\n targetArticle_1 = document.querySelector(\"article[message=\\\"\" + data.messageId + \"\\\"]\");\r\n resultBodyElements.forEach(function (node) {\r\n var element = node;\r\n if (element && element.tagName && element.tagName.toLowerCase() == 'article') {\r\n targetArticle_1.after(element);\r\n targetArticle_1.remove();\r\n }\r\n });\r\n self.bindMessageButtonHandlers();\r\n self.app.navigation.showScriptFunctionality();\r\n time = new Date();\r\n passedTime = this.app.passedTimeMonitor.convertToPassedTime(time);\r\n helpers_1.warning(\"A message was updated .\");\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.hubDeletedMessage = function (data) { return __awaiter(_this, void 0, void 0, function () {\r\n var self, targetArticle, userAvatar, messageContents, time, passedTime;\r\n return __generator(this, function (_a) {\r\n self = this;\r\n if (data.topicId == self.settings.topicId && self.settings.messages.indexOf(data.messageId) >= 0) {\r\n targetArticle = document.querySelector(\"article[message=\\\"\" + data.messageId + \"\\\"]\");\r\n userAvatar = targetArticle.querySelector('.user-avatar');\r\n messageContents = targetArticle.querySelector('.message-contents');\r\n userAvatar.remove();\r\n messageContents.classList.add('faded');\r\n messageContents.innerHTML = '

    This message was removed.

    ';\r\n document.querySelectorAll(\"[reply=\\\"\" + data.messageId + \"\\\"]\").forEach(function (element) {\r\n element.innerHTML = '

    This message was removed.

    ';\r\n });\r\n time = new Date();\r\n passedTime = this.app.passedTimeMonitor.convertToPassedTime(time);\r\n helpers_1.warning(\"A message was removed .\");\r\n }\r\n return [2 /*return*/];\r\n });\r\n }); };\r\n this.hubDeletedTopic = function (data) { return __awaiter(_this, void 0, void 0, function () {\r\n var targetElement;\r\n return __generator(this, function (_a) {\r\n if (data.topicId == this.settings.topicId) {\r\n targetElement = document.querySelector('main');\r\n targetElement.innerHTML = '

    This topic was removed.

    ';\r\n }\r\n return [2 /*return*/];\r\n });\r\n }); };\r\n this.eventShowEditForm = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var self, button, messageId, workingDots, requestOptions, saveButton, cancelButton;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n self = this;\r\n // make sure the user has chosen to enable the hub connection.\r\n if (!self.app.hub || self.app.hub.state == signalr_1.HubConnectionState.Disconnected) {\r\n return [2 /*return*/];\r\n }\r\n event.preventDefault();\r\n button = event.currentTarget;\r\n button.removeEventListener('click', self.eventShowEditForm);\r\n button.addEventListener('click', self.eventHideEditForm);\r\n messageId = button.getAttribute('message-id');\r\n workingDots = document.querySelector(\"#working-\" + messageId);\r\n helpers_1.show(workingDots);\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: \"/Messages/XhrEdit/\" + messageId\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.loadView(requestOptions, document)];\r\n case 1:\r\n _a.sent();\r\n helpers_1.hide(workingDots);\r\n self.app.navigation.showScriptFunctionality();\r\n self.app.bbCode.init();\r\n self.app.smileySelector.init();\r\n self.app.reactionSelector.init();\r\n saveButton = document.querySelector(\"#edit-message-\" + messageId + \" .save-button\");\r\n if (saveButton) {\r\n saveButton.addEventListener('click', self.eventSaveEditForm);\r\n }\r\n cancelButton = document.querySelector(\"#edit-message-\" + messageId + \" .cancel-button\");\r\n if (cancelButton) {\r\n cancelButton.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n button.removeEventListener('click', self.eventHideEditForm);\r\n button.addEventListener('click', self.eventShowEditForm);\r\n var form = document.querySelector(\"#edit-message-\" + messageId);\r\n helpers_1.clear(form);\r\n helpers_1.hide(form);\r\n });\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.eventHideEditForm = function (event) {\r\n event.preventDefault();\r\n var button = event.currentTarget;\r\n button.removeEventListener('click', _this.eventHideEditForm);\r\n button.addEventListener('click', _this.eventShowEditForm);\r\n var messageId = button.getAttribute('message-id');\r\n var form = document.querySelector(\"#edit-message-\" + messageId);\r\n helpers_1.clear(form);\r\n helpers_1.hide(form);\r\n };\r\n this.eventSaveEditForm = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var self, button, form, messageId, workingDots, onSuccess, onFail;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n self = this;\r\n // make sure the user has chosen to enable the hub connection.\r\n if (!self.app.hub || self.app.hub.state == signalr_1.HubConnectionState.Disconnected) {\r\n return [2 /*return*/];\r\n }\r\n event.preventDefault();\r\n button = event.currentTarget;\r\n form = button.closest('form');\r\n form.classList.add('faded');\r\n messageId = button.getAttribute('message-id');\r\n workingDots = document.querySelector(\"#working-\" + messageId);\r\n helpers_1.show(workingDots);\r\n onSuccess = function () {\r\n form.classList.remove('faded');\r\n helpers_1.clear(form);\r\n helpers_1.hide(form);\r\n helpers_1.hide(workingDots);\r\n };\r\n onFail = function () {\r\n form.classList.remove('faded');\r\n helpers_1.hide(workingDots);\r\n };\r\n return [4 /*yield*/, self.saveMessage(form, onSuccess, onFail)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.eventShowReplyForm = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var self, button, messageId, workingDots, requestOptions, saveButton, cancelButton;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n self = this;\r\n if (!self.app.hub || self.app.hub.state == signalr_1.HubConnectionState.Disconnected) {\r\n return [2 /*return*/];\r\n }\r\n event.preventDefault();\r\n button = event.currentTarget;\r\n button.removeEventListener('click', self.eventShowReplyForm);\r\n button.addEventListener('click', self.eventHideReplyForm);\r\n messageId = button.getAttribute('message-id');\r\n workingDots = document.querySelector(\"#working-\" + messageId);\r\n helpers_1.show(workingDots);\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: \"/Messages/XhrReply/\" + messageId\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.loadView(requestOptions, document)];\r\n case 1:\r\n _a.sent();\r\n helpers_1.hide(workingDots);\r\n self.app.navigation.showScriptFunctionality();\r\n self.app.bbCode.init();\r\n self.app.smileySelector.init();\r\n self.app.reactionSelector.init();\r\n saveButton = document.querySelector(\"#message-reply-\" + messageId + \" .save-button\");\r\n if (saveButton) {\r\n saveButton.addEventListener('click', self.eventSaveReplyForm);\r\n }\r\n cancelButton = document.querySelector(\"#message-reply-\" + messageId + \" .cancel-button\");\r\n if (cancelButton) {\r\n cancelButton.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n button.removeEventListener('click', self.eventHideReplyForm);\r\n button.addEventListener('click', self.eventShowReplyForm);\r\n var form = document.querySelector(\"#message-reply-\" + messageId);\r\n helpers_1.clear(form);\r\n helpers_1.hide(form);\r\n });\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.eventHideReplyForm = function (event) {\r\n event.preventDefault();\r\n var button = event.currentTarget;\r\n button.removeEventListener('click', _this.eventHideReplyForm);\r\n button.addEventListener('click', _this.eventShowReplyForm);\r\n var messageId = button.getAttribute('message-id');\r\n var form = document.querySelector(\"#message-reply-\" + messageId);\r\n helpers_1.clear(form);\r\n helpers_1.hide(form);\r\n };\r\n this.eventSaveReplyForm = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var self, button, form, bodyElement, messageId, workingDots, onSuccess, onFail;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n self = this;\r\n if (!self.app.hub || self.app.hub.state == signalr_1.HubConnectionState.Disconnected) {\r\n return [2 /*return*/];\r\n }\r\n event.preventDefault();\r\n button = event.currentTarget;\r\n form = button.closest('form');\r\n form.classList.add('faded');\r\n bodyElement = form.querySelector('[name=body]');\r\n messageId = button.getAttribute('message-id');\r\n workingDots = document.querySelector(\"#working-\" + messageId);\r\n helpers_1.show(workingDots);\r\n onSuccess = function () {\r\n helpers_1.clear(form);\r\n helpers_1.hide(form);\r\n document.querySelectorAll('.reply-button').forEach(function (element) {\r\n element.removeEventListener('click', self.resetMessageReplyForms);\r\n element.removeEventListener('click', self.eventShowReplyForm);\r\n element.addEventListener('click', self.eventShowReplyForm);\r\n });\r\n document.querySelectorAll('.reply-form').forEach(function (element) {\r\n helpers_1.hide(element);\r\n });\r\n if (bodyElement) {\r\n bodyElement.value = '';\r\n }\r\n form.classList.remove('faded');\r\n helpers_1.hide(workingDots);\r\n };\r\n onFail = function () {\r\n form.classList.remove('faded');\r\n helpers_1.hide(workingDots);\r\n };\r\n return [4 /*yield*/, self.saveMessage(form, onSuccess, onFail)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.eventSaveTopicReplyForm = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var self, button, form, workingDots, onSuccess, onFail;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n self = this;\r\n if (!self.app.hub || self.app.hub.state == signalr_1.HubConnectionState.Disconnected) {\r\n return [2 /*return*/];\r\n }\r\n event.preventDefault();\r\n button = event.currentTarget;\r\n form = button.closest('form');\r\n form.classList.add('faded');\r\n workingDots = document.querySelector('#working-topic-reply');\r\n helpers_1.show(workingDots);\r\n onSuccess = function () {\r\n var bodyElement = form.querySelector('[name=body]');\r\n if (bodyElement) {\r\n bodyElement.value = '';\r\n }\r\n form.classList.remove('faded');\r\n helpers_1.hide(workingDots);\r\n };\r\n onFail = function () {\r\n form.classList.remove('faded');\r\n helpers_1.hide(workingDots);\r\n };\r\n return [4 /*yield*/, self.saveMessage(form, onSuccess, onFail)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.eventShowThoughtSelector = function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n var target = event.currentTarget;\r\n var self = _this;\r\n self.thoughtTarget = target.closest('article');\r\n self.thoughtSelectorMessageId = target.getAttribute('message-id') || '';\r\n var smileySelector = target.querySelector('[data-component=\"smiley-selector\"]');\r\n helpers_1.show(smileySelector);\r\n setTimeout(function () {\r\n self.body.addEventListener('click', self.eventHideThoughtSelector);\r\n }, 50);\r\n };\r\n this.eventHideThoughtSelector = function (event) {\r\n document.querySelectorAll('[data-component=\"smiley-selector\"]').forEach(function (element) {\r\n helpers_1.hide(element);\r\n });\r\n var self = _this;\r\n self.body.removeEventListener('click', self.eventHideThoughtSelector);\r\n };\r\n this.eventSaveThought = function (event) {\r\n if (_this.thoughtTarget) {\r\n _this.thoughtTarget.classList.add('faded');\r\n }\r\n var smileyImg = event.currentTarget;\r\n var smileyId = smileyImg.getAttribute('smiley-id');\r\n // Only send an XHR if we anticipate the thought will be returned via the hub.\r\n if (_this.app.hub && _this.app.hub.state == signalr_1.HubConnectionState.Connected) {\r\n var requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: \"/Messages/AddThought/\" + _this.thoughtSelectorMessageId + \"?smiley=\" + smileyId\r\n });\r\n xhr_1.Xhr.request(requestOptions);\r\n }\r\n else {\r\n window.location.href = \"/Messages/AddThought/\" + _this.thoughtSelectorMessageId + \"?smiley=\" + smileyId;\r\n }\r\n };\r\n this.eventDeleteMessage = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var confirmation, targetButton, targetMessage, requestOptions;\r\n return __generator(this, function (_a) {\r\n confirmation = confirm('HEY WAIT: Do you want to delete this message?');\r\n if (!confirmation) {\r\n event.preventDefault();\r\n return [2 /*return*/];\r\n }\r\n // Only send an XHR if we anticipate the update will be posted via the hub.\r\n if (this.app.hub && this.app.hub.state == signalr_1.HubConnectionState.Connected) {\r\n event.preventDefault();\r\n targetButton = event.currentTarget;\r\n targetMessage = targetButton.closest('article');\r\n targetMessage.classList.add('faded');\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: targetButton.href\r\n });\r\n xhr_1.Xhr.request(requestOptions);\r\n }\r\n return [2 /*return*/];\r\n });\r\n }); };\r\n this.eventShowFullReply = function (event) {\r\n var target = event.currentTarget;\r\n target.removeEventListener('click', _this.eventShowFullReply);\r\n target.addEventListener('click', _this.eventHideFullReply);\r\n target.querySelectorAll('.reply-preview').forEach(function (element) { helpers_1.hide(element); });\r\n target.querySelectorAll('.reply-body').forEach(function (element) { helpers_1.show(element); });\r\n };\r\n this.eventHideFullReply = function (event) {\r\n var target = event.currentTarget;\r\n target.querySelectorAll('.reply-body').forEach(function (element) { helpers_1.hide(element); });\r\n target.querySelectorAll('.reply-preview').forEach(function (element) { helpers_1.show(element); });\r\n target.removeEventListener('click', _this.eventHideFullReply);\r\n target.addEventListener('click', _this.eventShowFullReply);\r\n };\r\n this.eventToggleBoard = function (event) { return __awaiter(_this, void 0, void 0, function () {\r\n var target, toggling, boardId, boardFlag, requestOptions;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n event.stopPropagation();\r\n target = event.currentTarget;\r\n toggling = target.getAttribute('toggling');\r\n if (toggling) {\r\n return [2 /*return*/];\r\n }\r\n target.setAttribute('toggling', 'true');\r\n if (window.assignedBoards === undefined || window.togglePath === undefined) {\r\n return [2 /*return*/];\r\n }\r\n boardId = target.getAttribute('board-id');\r\n if (!boardId) {\r\n return [2 /*return*/];\r\n }\r\n boardFlag = document.querySelector(\"[board-flag=\\\"\" + boardId + \"\\\"]\");\r\n if (!boardFlag) {\r\n return [2 /*return*/];\r\n }\r\n boardFlag.checked = boardFlag.checked ? false : true;\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n url: window.togglePath + \"&BoardId=\" + boardId\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.request(requestOptions)];\r\n case 1:\r\n _a.sent();\r\n target.removeAttribute('toggling');\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n this.eventToggleBookmarkImage = function (event) {\r\n var bookmarkImageSpan = event.currentTarget;\r\n var bookmarkImage = bookmarkImageSpan.querySelector('img');\r\n if (bookmarkImage) {\r\n var status_1 = _this.settings.bookmarked ? 'on' : 'off';\r\n if (bookmarkImage.src.includes('hover')) {\r\n bookmarkImage.src = bookmarkImage.src.replace('hover', status_1);\r\n }\r\n else {\r\n bookmarkImage.src = bookmarkImage.src.replace(status_1, 'hover');\r\n }\r\n }\r\n };\r\n this.eventPageClick = function (event) {\r\n var eventTarget = event.currentTarget;\r\n if (!eventTarget) {\r\n return;\r\n }\r\n event.preventDefault();\r\n var page = Number(eventTarget.getAttribute('data-page'));\r\n _this.loadPage(page);\r\n };\r\n this.eventPopState = function (event) {\r\n var settings = event.state;\r\n if (settings) {\r\n _this.settings = settings;\r\n _this.loadPage(_this.settings.currentPage, false);\r\n }\r\n };\r\n helpers_1.throwIfNull(app, 'app');\r\n helpers_1.throwIfNull(app.smileySelector, 'app.smileySelector');\r\n this.settings = getSettings();\r\n // Ensures the first load also has the settings state.\r\n window.history.replaceState(this.settings, document.title, window.location.href);\r\n window.onpopstate = this.eventPopState;\r\n if (this.app.hub) {\r\n this.app.hub.on('new-reply', this.hubNewReply);\r\n this.app.hub.on('updated-message', this.hubUpdatedMessage);\r\n this.app.hub.on('deleted-message', this.hubDeletedMessage);\r\n this.app.hub.on('deleted-topic', this.hubDeletedTopic);\r\n }\r\n this.body = document.getElementsByTagName('body')[0];\r\n }\r\n TopicDisplay.prototype.init = function () {\r\n this.bindPageButtons();\r\n this.bindGlobalButtonHandlers();\r\n this.bindMessageButtonHandlers();\r\n this.hideFavIcons();\r\n this.app.navigation.setupPageNavigators();\r\n this.app.navigation.addListenerClickableLinkParent();\r\n };\r\n TopicDisplay.prototype.loadPage = function (page, pushState) {\r\n if (pushState === void 0) { pushState = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var mainElement, requestOptions, topicReplyForm;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n mainElement = document.querySelector('main');\r\n mainElement.classList.add('faded');\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: \"/Topics/Display/\" + this.settings.topicId + \"/\" + page\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.loadView(requestOptions, document)];\r\n case 1:\r\n _a.sent();\r\n window.scrollTo(0, 0);\r\n mainElement.classList.remove('faded');\r\n this.settings = getSettings();\r\n if (pushState) {\r\n window.history.pushState(this.settings, document.title, \"/Topics/Display/\" + this.settings.topicId + \"/\" + this.settings.currentPage);\r\n }\r\n topicReplyForm = document.querySelector('.topic-reply-form');\r\n if (this.settings.currentPage == this.settings.totalPages) {\r\n helpers_1.show(topicReplyForm);\r\n }\r\n else {\r\n helpers_1.hide(topicReplyForm);\r\n }\r\n this.init();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n TopicDisplay.prototype.bindPageButtons = function () {\r\n var _this = this;\r\n document.querySelectorAll('.page a').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventPageClick);\r\n element.addEventListener('click', _this.eventPageClick);\r\n });\r\n };\r\n TopicDisplay.prototype.bindMessageButtonHandlers = function () {\r\n var _this = this;\r\n document.querySelectorAll('.reply-button').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventShowReplyForm);\r\n element.addEventListener('click', _this.eventShowReplyForm);\r\n });\r\n document.querySelectorAll('.thought-button').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventShowThoughtSelector);\r\n element.addEventListener('click', _this.eventShowThoughtSelector);\r\n element.querySelectorAll('[data-component=\"smiley-image\"]').forEach(function (imgElement) {\r\n imgElement.removeEventListener('click', _this.eventSaveThought);\r\n imgElement.addEventListener('click', _this.eventSaveThought);\r\n });\r\n });\r\n document.querySelectorAll('.edit-button').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventShowEditForm);\r\n element.addEventListener('click', _this.eventShowEditForm);\r\n });\r\n document.querySelectorAll('.delete-button').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventDeleteMessage);\r\n element.addEventListener('click', _this.eventDeleteMessage);\r\n });\r\n document.querySelectorAll('blockquote.reply').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventShowFullReply);\r\n element.addEventListener('click', _this.eventShowFullReply);\r\n });\r\n };\r\n TopicDisplay.prototype.bindGlobalButtonHandlers = function () {\r\n var _this = this;\r\n document.querySelectorAll('.bookmark-button').forEach(function (element) {\r\n element.removeEventListener('mouseenter', _this.eventToggleBookmarkImage);\r\n element.addEventListener('mouseenter', _this.eventToggleBookmarkImage);\r\n element.removeEventListener('mouseleave', _this.eventToggleBookmarkImage);\r\n element.addEventListener('mouseleave', _this.eventToggleBookmarkImage);\r\n });\r\n document.querySelectorAll('[toggle-board]').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventToggleBoard);\r\n element.addEventListener('click', _this.eventToggleBoard);\r\n });\r\n document.querySelectorAll('#topic-reply .save-button').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventSaveTopicReplyForm);\r\n element.addEventListener('click', _this.eventSaveTopicReplyForm);\r\n });\r\n };\r\n TopicDisplay.prototype.hideFavIcons = function () {\r\n if (!this.settings.showFavicons) {\r\n helpers_1.hide('.link-favicon');\r\n }\r\n };\r\n TopicDisplay.prototype.getLatestReplies = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var self, requestOptions, xhrResult, resultDocument, resultBody, resultBodyElements, messageList, partialSettings, firstMessageId, newMessages, i, time, passedTime;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n self = this;\r\n helpers_1.show(document.querySelector('#loading-message'));\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: \"/Topics/DisplayPartial/\" + self.settings.topicId + \"?latest=\" + self.settings.latest,\r\n responseType: 'document'\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.request(requestOptions)];\r\n case 1:\r\n xhrResult = _a.sent();\r\n resultDocument = xhrResult.response.documentElement;\r\n resultBody = resultDocument.querySelector('body');\r\n resultBodyElements = resultBody.childNodes;\r\n messageList = document.querySelector('#message-list');\r\n resultBodyElements.forEach(function (node) {\r\n var element = node;\r\n if (element && element.tagName) {\r\n if (element.tagName.toLowerCase() == 'script') {\r\n eval(element.textContent || '');\r\n }\r\n else {\r\n messageList.insertAdjacentElement('beforeend', element);\r\n }\r\n }\r\n });\r\n partialSettings = new topic_display_partial_settings_1.TopicDisplayPartialSettings(window);\r\n self.settings.latest = partialSettings.latest;\r\n firstMessageId = partialSettings.firstMessageId;\r\n newMessages = partialSettings.newMessages;\r\n for (i = 0; i < newMessages.length; i++) {\r\n self.settings.messages.push(newMessages[i]);\r\n }\r\n self.bindMessageButtonHandlers();\r\n time = new Date();\r\n passedTime = this.app.passedTimeMonitor.convertToPassedTime(time);\r\n helpers_1.hide(document.querySelector('#loading-message'));\r\n helpers_1.warning(\"New messages were posted .\");\r\n window.location.hash = \"message\" + firstMessageId;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n TopicDisplay.prototype.saveMessage = function (form, success, fail) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var self, bodyElement, idElement, topicIdElement, disableMergingElement, requestBodyValues, submitRequestOptions, _a, _b, xhrResult_1, modelErrors, i, modelErrorField, exception_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n helpers_1.throwIfNull(form, 'form');\r\n self = this;\r\n if (self.submitting) {\r\n return [2 /*return*/];\r\n }\r\n bodyElement = form.querySelector('[name=body]');\r\n if (!bodyElement || bodyElement.value == '') {\r\n return [2 /*return*/];\r\n }\r\n bodyElement.setAttribute('disabled', 'disabled');\r\n form.querySelectorAll('.button').forEach(function (element) {\r\n element.setAttribute('disabled', 'disabled');\r\n });\r\n idElement = form.querySelector('[name=Id]');\r\n topicIdElement = form.querySelector('[name=TopicId]');\r\n disableMergingElement = form.querySelector('[name=\"ReplyForm.DisableMerging\"]');\r\n requestBodyValues = {\r\n id: idElement ? idElement.value : '',\r\n topicId: topicIdElement ? topicIdElement.value : '',\r\n body: bodyElement ? bodyElement.value : '',\r\n disableMerging: disableMergingElement ? disableMergingElement.checked : false\r\n };\r\n self.submitting = true;\r\n submitRequestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Post,\r\n url: form.action,\r\n body: helpers_1.queryify(requestBodyValues)\r\n });\r\n _a = submitRequestOptions.headers;\r\n _b = 'RequestVerificationToken';\r\n return [4 /*yield*/, self.getToken(form)];\r\n case 1:\r\n _a[_b] = _c.sent();\r\n _c.label = 2;\r\n case 2:\r\n _c.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, xhr_1.Xhr.request(submitRequestOptions)];\r\n case 3:\r\n xhrResult_1 = _c.sent();\r\n if (xhrResult_1.status == 200) {\r\n success();\r\n }\r\n else {\r\n try {\r\n modelErrors = JSON.parse(xhrResult_1.responseText);\r\n for (i = 0; i < modelErrors.length; i++) {\r\n modelErrorField = form.querySelector(\"[data-valmsg-for=\\\"\" + modelErrors[i].propertyName + \"\\\"]\");\r\n if (modelErrorField) {\r\n modelErrorField.textContent = modelErrors[i].errorMessage;\r\n }\r\n }\r\n }\r\n catch (_d) {\r\n console.log(xhrResult_1.responseText);\r\n }\r\n form.querySelectorAll('.error').forEach(function (element) {\r\n element.innerHTML += \"

    \" + xhrResult_1.responseText + \"

    \";\r\n });\r\n fail();\r\n }\r\n return [3 /*break*/, 5];\r\n case 4:\r\n exception_1 = _c.sent();\r\n form.querySelectorAll('.error').forEach(function (element) {\r\n element.innerHTML += \"

    \" + exception_1 + \"

    \";\r\n });\r\n fail();\r\n return [3 /*break*/, 5];\r\n case 5:\r\n bodyElement.removeAttribute('disabled');\r\n form.querySelectorAll('.button').forEach(function (element) {\r\n element.removeAttribute('disabled');\r\n });\r\n if (disableMergingElement) {\r\n disableMergingElement.checked = false;\r\n }\r\n self.submitting = false;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n TopicDisplay.prototype.getToken = function (form) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenElement, returnToken, tokenRequestOptions, xhrResult, tokenRequestResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n tokenElement = form.querySelector('[name=__RequestVerificationToken]');\r\n returnToken = tokenElement ? tokenElement.value : '';\r\n tokenRequestOptions = new xhr_options_1.XhrOptions({\r\n url: '/Home/Token'\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.request(tokenRequestOptions)];\r\n case 1:\r\n xhrResult = _a.sent();\r\n tokenRequestResponse = JSON.parse(xhrResult.responseText);\r\n tokenElement.value = tokenRequestResponse.token;\r\n return [2 /*return*/, returnToken];\r\n }\r\n });\r\n });\r\n };\r\n TopicDisplay.prototype.resetMessageReplyForms = function () {\r\n var _this = this;\r\n document.querySelectorAll('.reply-button').forEach(function (element) {\r\n element.removeEventListener('click', _this.resetMessageReplyForms);\r\n element.removeEventListener('click', _this.eventShowReplyForm);\r\n element.addEventListener('click', _this.eventShowReplyForm);\r\n });\r\n document.querySelectorAll('.reply-form').forEach(function (element) {\r\n helpers_1.hide(element);\r\n });\r\n };\r\n return TopicDisplay;\r\n}());\r\nexports.TopicDisplay = TopicDisplay;\r\n\n},{\"../definitions/http-method\":2,\"../helpers\":3,\"../models/page-settings/topic-display-partial-settings\":7,\"../models/page-settings/topic-display-settings\":8,\"../models/xhr-options\":12,\"../services/xhr\":28,\"@aspnet/signalr\":49}],20:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar http_method_1 = require(\"../definitions/http-method\");\r\nvar xhr_1 = require(\"../services/xhr\");\r\nvar xhr_options_1 = require(\"../models/xhr-options\");\r\nvar topic_index_settings_1 = require(\"../models/page-settings/topic-index-settings\");\r\nfunction getSettings() {\r\n var genericWindow = window;\r\n return new topic_index_settings_1.TopicIndexSettings({\r\n boardId: genericWindow.boardId,\r\n currentPage: genericWindow.currentPage,\r\n totalPages: genericWindow.totalPages,\r\n unreadFilter: genericWindow.unreadFilter\r\n });\r\n}\r\nvar TopicIndex = /** @class */ (function () {\r\n function TopicIndex(app) {\r\n var _this = this;\r\n this.app = app;\r\n this.hubRefreshIndex = function () {\r\n if (_this.settings.currentPage == 1) {\r\n _this.loadPage(1);\r\n }\r\n };\r\n this.eventPageClick = function (event) {\r\n var eventTarget = event.currentTarget;\r\n if (!eventTarget) {\r\n return;\r\n }\r\n event.preventDefault();\r\n var page = Number(eventTarget.getAttribute('data-page'));\r\n _this.loadPage(page);\r\n };\r\n this.eventPopState = function (event) {\r\n var settings = event.state;\r\n if (settings) {\r\n _this.settings = settings;\r\n _this.loadPage(_this.settings.currentPage, false);\r\n }\r\n };\r\n helpers_1.throwIfNull(app, 'app');\r\n this.settings = getSettings();\r\n // Ensures the first load also has the settings state.\r\n window.history.replaceState(this.settings, document.title, window.location.href);\r\n window.onpopstate = this.eventPopState;\r\n if (this.app.hub) {\r\n this.app.hub.on('new-reply', this.hubRefreshIndex);\r\n this.app.hub.on('updated-message', this.hubRefreshIndex);\r\n this.app.hub.on('new-topic', this.hubRefreshIndex);\r\n this.app.hub.on('deleted-topic', this.hubRefreshIndex);\r\n }\r\n }\r\n TopicIndex.prototype.init = function () {\r\n this.bindPageButtons();\r\n this.app.navigation.setupPageNavigators();\r\n this.app.navigation.addListenerClickableLinkParent();\r\n };\r\n TopicIndex.prototype.bindPageButtons = function () {\r\n var _this = this;\r\n document.querySelectorAll('.page a').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventPageClick);\r\n element.addEventListener('click', _this.eventPageClick);\r\n });\r\n };\r\n TopicIndex.prototype.loadPage = function (page, pushState) {\r\n if (pushState === void 0) { pushState = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var mainElement, requestOptions;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n mainElement = document.querySelector('main');\r\n mainElement.classList.add('faded');\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: \"/Topics/Index/\" + this.settings.boardId + \"/\" + page + \"?unread=\" + this.settings.unreadFilter\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.loadView(requestOptions, document)];\r\n case 1:\r\n _a.sent();\r\n window.scrollTo(0, 0);\r\n mainElement.classList.remove('faded');\r\n this.settings = getSettings();\r\n if (pushState) {\r\n window.history.pushState(this.settings, document.title, \"/Topics/Index/\" + this.settings.boardId + \"/\" + this.settings.currentPage + \"?unread=\" + this.settings.unreadFilter);\r\n }\r\n this.init();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return TopicIndex;\r\n}());\r\nexports.TopicIndex = TopicIndex;\r\n\n},{\"../definitions/http-method\":2,\"../helpers\":3,\"../models/page-settings/topic-index-settings\":9,\"../models/xhr-options\":12,\"../services/xhr\":28}],21:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar bbCodes = {\r\n 'bold': '[b] [/b]',\r\n 'italics': '[i] [/i]',\r\n 'url': '[url=] [/url]',\r\n 'quote': '[quote]\\n\\n\\n[/quote]',\r\n 'spoiler': '[spoiler] [/spoiler]',\r\n 'img': '[img] [/img]',\r\n 'reaction': '[reaction] [/reaction]',\r\n 'underline': '[u] [/u]',\r\n 'strike': '[s] [/s]',\r\n 'color': '[color=#A335EE] [/color]',\r\n 'list': '[ul]\\n[li] [/li]\\n[li] [/li]\\n[li] [/li]\\n[/ul]',\r\n 'numlist': '[ol]\\n[li] [/li]\\n[li] [/li]\\n[li] [/li]\\n[/ol]',\r\n 'code': '[code]\\n\\n\\n[/code]',\r\n 'size': '[size=10] [/size]'\r\n};\r\nvar BBCode = /** @class */ (function () {\r\n function BBCode(doc) {\r\n this.doc = doc;\r\n }\r\n BBCode.prototype.init = function () {\r\n this.addBBCodeListener();\r\n this.addSpoilerListener();\r\n };\r\n BBCode.prototype.addBBCodeListener = function () {\r\n var _this = this;\r\n this.doc.querySelectorAll('.add-bbcode').forEach(function (element) {\r\n element.removeEventListener('click', _this.insertBBCode);\r\n element.addEventListener('click', _this.insertBBCode);\r\n });\r\n };\r\n BBCode.prototype.addSpoilerListener = function () {\r\n var _this = this;\r\n this.doc.querySelectorAll('.bbc-spoiler').forEach(function (element) {\r\n element.removeEventListener('click', _this.showSpoiler);\r\n element.addEventListener('click', _this.showSpoiler);\r\n });\r\n };\r\n BBCode.prototype.insertBBCode = function (event) {\r\n helpers_1.throwIfNull(event, 'event');\r\n event.preventDefault();\r\n var target = event.currentTarget;\r\n if (!target) {\r\n throw new Error('Event target not found');\r\n }\r\n var targetCode = target.getAttribute('bbcode');\r\n if (!targetCode) {\r\n throw new Error('Target bbcode not found');\r\n }\r\n var form = target.closest('form');\r\n if (!form) {\r\n throw new Error('Form element not found');\r\n }\r\n var targetTextArea = form.querySelector('textarea');\r\n if (!targetTextArea) {\r\n throw new Error('Textarea element not found');\r\n }\r\n helpers_1.insertAtCaret(targetTextArea, bbCodes[targetCode]);\r\n };\r\n BBCode.prototype.showSpoiler = function (event) {\r\n helpers_1.throwIfNull(event, 'event');\r\n // in case they click a link in a spoiler when revealing the spoiler.\r\n event.preventDefault();\r\n // in case they click a spoiler that is in a link\r\n event.stopPropagation();\r\n var target = event.target;\r\n helpers_1.throwIfNull(target, 'target');\r\n if (target.classList.contains('bbc-spoiler-hover')) {\r\n target.classList.remove('bbc-spoiler-hover');\r\n }\r\n else {\r\n target.classList.add('bbc-spoiler-hover');\r\n }\r\n };\r\n return BBCode;\r\n}());\r\nexports.BBCode = BBCode;\r\n\n},{\"../helpers\":3}],22:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar EasterEgg = /** @class */ (function () {\r\n function EasterEgg(doc) {\r\n this.doc = doc;\r\n }\r\n EasterEgg.prototype.init = function () {\r\n var element = this.doc.querySelector('#easter-egg');\r\n var dangerSign = this.doc.querySelector('#danger-sign');\r\n element.addEventListener('mouseenter', function () {\r\n helpers_1.show(dangerSign);\r\n });\r\n element.addEventListener('mouseleave', function () {\r\n helpers_1.hide(dangerSign);\r\n });\r\n };\r\n return EasterEgg;\r\n}());\r\nexports.EasterEgg = EasterEgg;\r\n\n},{\"../helpers\":3}],23:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar Navigation = /** @class */ (function () {\r\n function Navigation(doc) {\r\n var _this = this;\r\n this.doc = doc;\r\n this.eventUnhidePages = function (event) {\r\n var target = event.currentTarget;\r\n if (!target.parentElement) {\r\n return;\r\n }\r\n target.parentElement.querySelectorAll('.page').forEach(function (element) {\r\n helpers_1.show(element);\r\n });\r\n helpers_1.hide(target.parentElement.querySelector('.more-pages-before'));\r\n helpers_1.hide(target.parentElement.querySelector('.more-pages-after'));\r\n };\r\n this.eventOpenLink = function (event) {\r\n _this.eventStopPropagation(event);\r\n var url;\r\n var targetElement = event.currentTarget;\r\n if (targetElement.tagName == 'a') {\r\n url = targetElement.getAttribute('href');\r\n }\r\n else {\r\n url = targetElement.closest('[clickable-link-parent]').querySelector('a').getAttribute('href');\r\n }\r\n if (url) {\r\n switch (event.which) {\r\n case 1:\r\n if (event.shiftKey || event.ctrlKey) {\r\n _this.win.open(url, '_blank');\r\n }\r\n else {\r\n _this.win.location.href = url;\r\n }\r\n break;\r\n case 2:\r\n _this.win.open(url, '_blank');\r\n break;\r\n }\r\n }\r\n return true;\r\n };\r\n this.eventOpenMenu = function (event) {\r\n event.stopPropagation();\r\n var self = _this;\r\n _this.eventCloseMenu(event);\r\n var targetElement = event.currentTarget;\r\n targetElement.removeEventListener('click', self.eventOpenMenu);\r\n targetElement.addEventListener('click', self.eventCloseMenu);\r\n targetElement.querySelectorAll('.menu-wrapper').forEach(function (menuWrapperElement) {\r\n helpers_1.show(menuWrapperElement);\r\n var dropDownMenuElement = menuWrapperElement.querySelector('.drop-down-menu');\r\n if (dropDownMenuElement) {\r\n var rect = targetElement.getBoundingClientRect();\r\n var targetLeft = rect.left + self.win.pageXOffset - self.doc.documentElement.clientLeft;\r\n var selectorLeftOffset = 0;\r\n var screenFalloff = targetLeft + dropDownMenuElement.clientWidth + 20 - self.win.innerWidth;\r\n if (screenFalloff > 0) {\r\n selectorLeftOffset -= screenFalloff;\r\n }\r\n dropDownMenuElement.style.left = selectorLeftOffset + (selectorLeftOffset == 0 ? '' : 'px');\r\n }\r\n });\r\n var body = self.doc.getElementsByTagName('body')[0];\r\n setTimeout(function () {\r\n body.addEventListener('click', self.eventCloseMenu);\r\n }, 50);\r\n };\r\n this.eventCloseMenu = function (event) {\r\n var dropDownMenuElements = _this.doc.querySelectorAll('.menu-wrapper');\r\n for (var i = 0; i < dropDownMenuElements.length; i++) {\r\n helpers_1.hide(dropDownMenuElements[i]);\r\n }\r\n _this.doc.querySelectorAll('.open-menu').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventCloseMenu);\r\n element.removeEventListener('click', _this.eventOpenMenu);\r\n element.addEventListener('click', _this.eventOpenMenu);\r\n });\r\n _this.doc.getElementsByTagName('body')[0].removeEventListener('click', _this.eventCloseMenu);\r\n };\r\n this.eventToggleCheckBox = function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n var targetElement = event.currentTarget;\r\n var checkbox = document.getElementById(targetElement.htmlFor);\r\n if (checkbox) {\r\n checkbox.checked = !checkbox.checked;\r\n }\r\n };\r\n this.eventPreventDefault = function (event) {\r\n event.preventDefault();\r\n };\r\n this.eventStopPropagation = function (event) {\r\n event.stopPropagation();\r\n };\r\n this.win = doc.defaultView;\r\n }\r\n Navigation.prototype.init = function () {\r\n this.addListenerOpenMenu();\r\n this.addListenerClickableLinkParent();\r\n this.setupPageNavigators();\r\n this.showScriptFunctionality();\r\n };\r\n Navigation.prototype.showScriptFunctionality = function () {\r\n var _this = this;\r\n document.querySelectorAll('.requires-javascript').forEach(function (element) {\r\n element.classList.remove('hidden');\r\n });\r\n document.querySelectorAll('input[type=\"checkbox\"]').forEach(function (element) {\r\n if (!element.classList.contains('scripted')) {\r\n element.classList.add('scripted');\r\n var label = document.createElement('label');\r\n label.htmlFor = element.id;\r\n helpers_1.insertAfter(label, element);\r\n label.addEventListener('click', _this.eventToggleCheckBox);\r\n }\r\n });\r\n };\r\n Navigation.prototype.addListenerOpenMenu = function () {\r\n var _this = this;\r\n this.doc.querySelectorAll('.open-menu').forEach(function (element) {\r\n element.classList.remove('open-menu-hover');\r\n element.addEventListener('click', _this.eventOpenMenu);\r\n });\r\n };\r\n Navigation.prototype.addListenerUnhidePages = function (pageNavigatorElement) {\r\n var _this = this;\r\n pageNavigatorElement.querySelectorAll('.unhide-pages').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventUnhidePages);\r\n element.addEventListener('click', _this.eventUnhidePages);\r\n });\r\n };\r\n Navigation.prototype.addListenerClickableLinkParent = function () {\r\n var linkParents = document.querySelectorAll('[clickable-link-parent]');\r\n for (var i = 0; i < linkParents.length; i++) {\r\n var linkParent = linkParents[i];\r\n linkParent.classList.add('pointer');\r\n var link = linkParent.querySelector('a');\r\n if (link) {\r\n link.removeEventListener('click', this.eventPreventDefault);\r\n link.addEventListener('click', this.eventPreventDefault);\r\n }\r\n if (helpers_1.isFirefox()) {\r\n linkParent.removeEventListener('click', this.eventOpenLink);\r\n linkParent.addEventListener('click', this.eventOpenLink);\r\n }\r\n else {\r\n linkParent.removeEventListener('mousedown', this.eventOpenLink);\r\n linkParent.addEventListener('mousedown', this.eventOpenLink);\r\n }\r\n }\r\n };\r\n Navigation.prototype.setupPageNavigators = function () {\r\n var _this = this;\r\n if (!this.win.currentPage || !this.win.totalPages) {\r\n return;\r\n }\r\n this.doc.querySelectorAll('.pages').forEach(function (element) {\r\n _this.addListenerUnhidePages(element);\r\n var currentPage = _this.win.currentPage;\r\n _this.updateMorePageBeforeAfterControlsVisibility(element, currentPage);\r\n _this.updatePageControlsVisibility(element, currentPage);\r\n });\r\n };\r\n Navigation.prototype.updatePageControlsVisibility = function (pageNavigatorElement, currentPage) {\r\n var pageElements = pageNavigatorElement.querySelectorAll(\".page\");\r\n for (var i = currentPage - 2; i < currentPage; i++) {\r\n if (i < 0) {\r\n continue;\r\n }\r\n helpers_1.show(pageElements[i - 1]);\r\n }\r\n for (var i = currentPage; i <= currentPage + 2; i++) {\r\n if (i - 1 > pageElements.length) {\r\n continue;\r\n }\r\n helpers_1.show(pageElements[i - 1]);\r\n }\r\n };\r\n Navigation.prototype.updateMorePageBeforeAfterControlsVisibility = function (pageNavigatorElement, currentPage) {\r\n var totalPages = this.win.totalPages;\r\n if (currentPage - 2 > 1) {\r\n pageNavigatorElement.querySelectorAll('.more-pages-before').forEach(function (element) {\r\n helpers_1.show(element);\r\n });\r\n }\r\n if (currentPage + 2 < totalPages) {\r\n pageNavigatorElement.querySelectorAll('.more-pages-after').forEach(function (element) {\r\n helpers_1.show(element);\r\n });\r\n }\r\n };\r\n return Navigation;\r\n}());\r\nexports.Navigation = Navigation;\r\n\n},{\"../helpers\":3}],24:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar timers_1 = require(\"timers\");\r\nvar PassedTimeMonitor = /** @class */ (function () {\r\n function PassedTimeMonitor(doc) {\r\n var _this = this;\r\n this.doc = doc;\r\n this.updateTags = function () {\r\n _this.doc.querySelectorAll('time').forEach(function (element) {\r\n var datetime = element.getAttribute('datetime');\r\n var date = new Date(datetime || '');\r\n var passedTime = _this.convertToPassedTime(date);\r\n element.textContent = passedTime;\r\n });\r\n timers_1.setTimeout(_this.updateTags, 10000);\r\n };\r\n }\r\n PassedTimeMonitor.prototype.init = function () {\r\n this.updateTags();\r\n };\r\n PassedTimeMonitor.prototype.convertToPassedTime = function (date) {\r\n var now = new Date();\r\n var nowTime = now.getTime();\r\n var dateTime = date.getTime();\r\n var difference = nowTime - dateTime;\r\n var differenceSeconds = difference / 1000;\r\n var differenceMinutes = difference / 60000;\r\n var differenceHours = difference / 3600000;\r\n var differenceDays = difference / 86400000;\r\n var returnText = \"just now\";\r\n if (differenceDays >= 1) {\r\n var years = now.getFullYear() - date.getFullYear();\r\n var nowMonth = now.getMonth();\r\n var dateMonth = date.getMonth();\r\n if (nowMonth < dateMonth) {\r\n nowMonth += 11;\r\n }\r\n var months = Math.floor(differenceDays / 30);\r\n var years = Math.floor(months / 12);\r\n if (years == 1) {\r\n returnText = \"1 year ago\";\r\n }\r\n else if (years > 1) {\r\n returnText = years + \" years ago\";\r\n }\r\n else if (months == 1) {\r\n returnText = \"1 month ago\";\r\n }\r\n else if (months > 1) {\r\n returnText = months + \" months ago\";\r\n }\r\n else if (differenceDays >= 2) {\r\n returnText = Math.round(differenceDays) + \" days ago\";\r\n }\r\n else {\r\n returnText = \"1 day ago\";\r\n }\r\n }\r\n else if (differenceHours >= 1 && differenceHours < 2) {\r\n returnText = \"1 hour ago\";\r\n }\r\n else if (differenceHours >= 2) {\r\n returnText = Math.round(differenceHours) + \" hours ago\";\r\n }\r\n else if (differenceMinutes >= 1 && differenceMinutes < 2) {\r\n returnText = \"1 minute ago\";\r\n }\r\n else if (differenceMinutes >= 2) {\r\n returnText = Math.round(differenceMinutes) + \" minutes ago\";\r\n }\r\n else if (differenceSeconds >= 1 && differenceSeconds < 2) {\r\n returnText = \"1 second ago\";\r\n }\r\n else if (differenceSeconds >= 2) {\r\n returnText = Math.round(differenceSeconds) + \" seconds ago\";\r\n }\r\n return returnText;\r\n };\r\n return PassedTimeMonitor;\r\n}());\r\nexports.PassedTimeMonitor = PassedTimeMonitor;\r\n\n},{\"timers\":56}],25:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar reaction_selector_settings_1 = require(\"../models/page-settings/reaction-selector-settings\");\r\nfunction getSettings() {\r\n var genericWindow = window;\r\n return new reaction_selector_settings_1.ReactionSelectorSettings({\r\n imgurName: genericWindow.imgurName,\r\n reactionImages: genericWindow.reactionImages\r\n });\r\n}\r\nvar ReactionSelector = /** @class */ (function () {\r\n function ReactionSelector(doc) {\r\n var _this = this;\r\n this.doc = doc;\r\n this.eventToggleSelector = function (event) {\r\n event.stopPropagation();\r\n var self = _this;\r\n var target = event.currentTarget;\r\n var selectorElement = target.querySelector('[data-component=\"reaction-selector\"]');\r\n var imageList = selectorElement.querySelector('[data-component=\"reaction-image-list\"]');\r\n if (imageList && imageList.getAttribute('data-loaded') == '0') {\r\n self.settings.reactionImages.forEach(function (image) {\r\n imageList.innerHTML += \"
    \";\r\n });\r\n imageList.setAttribute('data-loaded', '1');\r\n imageList.querySelectorAll('.reaction-image').forEach(function (imgElement) {\r\n imgElement.removeEventListener('click', _this.eventInsertReaction);\r\n imgElement.addEventListener('click', _this.eventInsertReaction);\r\n });\r\n }\r\n helpers_1.toggle(selectorElement);\r\n setTimeout(function () {\r\n self.body.addEventListener('click', self.eventCloseSelector);\r\n }, 50);\r\n };\r\n this.eventCloseSelector = function () {\r\n document.querySelectorAll('[data-component=\"reaction-selector\"]').forEach(function (element) {\r\n helpers_1.hide(element);\r\n });\r\n var self = _this;\r\n self.body.removeEventListener('click', self.eventCloseSelector);\r\n };\r\n this.eventInsertReaction = function (event) {\r\n event.stopPropagation();\r\n var self = _this;\r\n var eventTarget = event.currentTarget;\r\n var result = eventTarget.getAttribute('data-id') || '';\r\n var form = eventTarget.closest('form');\r\n var targetTextArea = form.querySelector('textarea');\r\n result = \"[reaction]https://i.imgur.com/\" + result + \".gifv[/reaction]\";\r\n if (targetTextArea.value !== '') {\r\n result = \" \" + result + \" \";\r\n }\r\n helpers_1.insertAtCaret(targetTextArea, result);\r\n self.eventCloseSelector();\r\n };\r\n this.body = doc.getElementsByTagName('body')[0];\r\n this.settings = getSettings();\r\n }\r\n // Used in message forms to insert smileys into textareas.\r\n ReactionSelector.prototype.init = function () {\r\n var _this = this;\r\n this.doc.querySelectorAll('.add-reaction').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventToggleSelector);\r\n element.addEventListener('click', _this.eventToggleSelector);\r\n });\r\n };\r\n return ReactionSelector;\r\n}());\r\nexports.ReactionSelector = ReactionSelector;\r\n\n},{\"../helpers\":3,\"../models/page-settings/reaction-selector-settings\":6}],26:[function(require,module,exports){\n\"use strict\";\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar SmileySelector = /** @class */ (function () {\r\n function SmileySelector(doc) {\r\n var _this = this;\r\n this.doc = doc;\r\n this.eventToggleSelector = function (event) {\r\n event.stopPropagation();\r\n var self = _this;\r\n var target = event.currentTarget;\r\n var selectorElement = target.querySelector('[data-component=\"smiley-selector\"]');\r\n helpers_1.toggle(selectorElement);\r\n setTimeout(function () {\r\n self.body.addEventListener('click', self.eventCloseSelector);\r\n }, 50);\r\n };\r\n this.eventCloseSelector = function () {\r\n document.querySelectorAll('[data-component=\"smiley-selector\"]').forEach(function (element) {\r\n helpers_1.hide(element);\r\n });\r\n var self = _this;\r\n self.body.removeEventListener('click', self.eventCloseSelector);\r\n };\r\n this.eventInsertSmileyCode = function (event) {\r\n event.stopPropagation();\r\n var self = _this;\r\n var eventTarget = event.currentTarget;\r\n var smileyCode = eventTarget.getAttribute('code') || '';\r\n var form = eventTarget.closest('form');\r\n var targetTextArea = form.querySelector('textarea');\r\n if (targetTextArea.value !== '') {\r\n smileyCode = \" \" + smileyCode + \" \";\r\n }\r\n helpers_1.insertAtCaret(targetTextArea, smileyCode);\r\n self.eventCloseSelector();\r\n };\r\n this.body = doc.getElementsByTagName('body')[0];\r\n }\r\n // Used in message forms to insert smileys into textareas.\r\n SmileySelector.prototype.init = function () {\r\n var _this = this;\r\n this.doc.querySelectorAll('.add-smiley').forEach(function (element) {\r\n element.removeEventListener('click', _this.eventToggleSelector);\r\n element.addEventListener('click', _this.eventToggleSelector);\r\n element.querySelectorAll('[data-component=\"smiley-image\"]').forEach(function (imgElement) {\r\n imgElement.removeEventListener('click', _this.eventInsertSmileyCode);\r\n imgElement.addEventListener('click', _this.eventInsertSmileyCode);\r\n });\r\n });\r\n };\r\n return SmileySelector;\r\n}());\r\nexports.SmileySelector = SmileySelector;\r\n\n},{\"../helpers\":3}],27:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nexports.__esModule = true;\r\nvar helpers_1 = require(\"../helpers\");\r\nvar http_method_1 = require(\"../definitions/http-method\");\r\nvar xhr_1 = require(\"./xhr\");\r\nvar xhr_options_1 = require(\"../models/xhr-options\");\r\nvar whos_online_monitor_settings_1 = require(\"../models/page-settings/whos-online-monitor-settings\");\r\nfunction getSettings() {\r\n var genericWindow = window;\r\n return new whos_online_monitor_settings_1.WhosOnlineMonitorSettings({\r\n users: genericWindow.users\r\n });\r\n}\r\nvar WhosOnlineMonitor = /** @class */ (function () {\r\n function WhosOnlineMonitor(doc, app) {\r\n var _this = this;\r\n this.doc = doc;\r\n this.app = app;\r\n this.recentRequest = false;\r\n this.hubWhosOnline = function () { return __awaiter(_this, void 0, void 0, function () {\r\n var requestOptions;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.recentRequest) return [3 /*break*/, 2];\r\n this.recentRequest = true;\r\n requestOptions = new xhr_options_1.XhrOptions({\r\n method: http_method_1.HttpMethod.Get,\r\n url: '/Home/Dynamic/OnlineUsersList',\r\n responseType: 'document'\r\n });\r\n return [4 /*yield*/, xhr_1.Xhr.loadView(requestOptions, this.doc)];\r\n case 1:\r\n _a.sent();\r\n this.settings = getSettings();\r\n this.updateChicletTimes();\r\n this.bindChicletMonitor();\r\n this.app.navigation.init();\r\n setTimeout(function () {\r\n _this.recentRequest = false;\r\n }, 10000);\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n helpers_1.throwIfNull(doc, 'doc');\r\n helpers_1.throwIfNull(app, 'app');\r\n this.settings = getSettings();\r\n }\r\n WhosOnlineMonitor.prototype.init = function () {\r\n if (document.querySelector(\"#sidebar-whos-online\")) {\r\n if (this.app.hub) {\r\n this.bindHubActions();\r\n }\r\n this.bindChicletMonitor();\r\n }\r\n };\r\n WhosOnlineMonitor.prototype.bindHubActions = function () {\r\n if (!this.app.hub) {\r\n throw new Error('Hub not defined.');\r\n }\r\n this.app.hub.on('whos-online', this.hubWhosOnline);\r\n };\r\n WhosOnlineMonitor.prototype.bindChicletMonitor = function () {\r\n this.doc.querySelectorAll('.whos-online-chiclet').forEach(function (element) {\r\n var chicletTimeValue = element.getAttribute('time');\r\n if (chicletTimeValue) {\r\n var chicletTime = new Date(chicletTimeValue);\r\n // 5 minute expiration\r\n var expiration = new Date(chicletTime.getTime() + 5 * 60 * 1000);\r\n var difference = expiration.getTime() - new Date().getTime();\r\n setTimeout(function () {\r\n element.classList.remove('chiclet-green');\r\n element.classList.add('chiclet-gray');\r\n }, difference);\r\n }\r\n });\r\n };\r\n WhosOnlineMonitor.prototype.updateChicletTimes = function () {\r\n var _this = this;\r\n this.settings.users.forEach(function (user) {\r\n _this.doc.querySelectorAll(\".whos-online-chiclet[user=\\\"\" + user.id + \"\\\"]\").forEach(function (element) {\r\n element.setAttribute('time', user.time);\r\n });\r\n });\r\n };\r\n return WhosOnlineMonitor;\r\n}());\r\nexports.WhosOnlineMonitor = WhosOnlineMonitor;\r\n\n},{\"../definitions/http-method\":2,\"../helpers\":3,\"../models/page-settings/whos-online-monitor-settings\":10,\"../models/xhr-options\":12,\"./xhr\":28}],28:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nexports.__esModule = true;\r\nvar xhr_result_1 = require(\"../models/xhr-result\");\r\nvar helpers_1 = require(\"../helpers\");\r\nvar http_method_1 = require(\"../definitions/http-method\");\r\nvar Xhr;\r\n(function (Xhr) {\r\n function request(options) {\r\n helpers_1.throwIfNull(options, \"options\");\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(options.method, options.url);\r\n xhr.timeout = options.timeout;\r\n xhr.responseType = options.responseType;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n if (options.method == http_method_1.HttpMethod.Post) {\r\n options.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';\r\n }\r\n Object.keys(options.headers).forEach(function (key) { return xhr.setRequestHeader(key, options.headers[key]); });\r\n xhr.ontimeout = function () { return logRejected('Request timed out.', reject); };\r\n xhr.onerror = function () { return logRejected(xhr.statusText, reject); };\r\n xhr.onload = function () { return resolve(createXhrResult(xhr)); };\r\n xhr.send(options.body);\r\n });\r\n }\r\n Xhr.request = request;\r\n function loadView(options, targetDoc) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var xhrResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n helpers_1.throwIfNull(options, \"options\");\r\n options.responseType = 'document';\r\n return [4 /*yield*/, request(options)];\r\n case 1:\r\n xhrResult = _a.sent();\r\n importResultDocument(targetDoc, xhrResult);\r\n return [2 /*return*/, xhrResult];\r\n }\r\n });\r\n });\r\n }\r\n Xhr.loadView = loadView;\r\n function createXhrResult(xhr) {\r\n switch (xhr.responseType) {\r\n case 'document':\r\n return new xhr_result_1.XhrResult({\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n response: xhr.response\r\n });\r\n default:\r\n case 'text':\r\n return new xhr_result_1.XhrResult({\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n responseText: xhr.responseText\r\n });\r\n }\r\n }\r\n Xhr.createXhrResult = createXhrResult;\r\n function logRejected(reason, reject) {\r\n console.log('Xhr was rejected: ' + reason);\r\n reject(reason);\r\n }\r\n Xhr.logRejected = logRejected;\r\n function isFormMethod(method) { return [http_method_1.HttpMethod.Post, http_method_1.HttpMethod.Post].includes(method); }\r\n Xhr.isFormMethod = isFormMethod;\r\n function importResultDocument(currentDoc, result) {\r\n var responseDocument = result.response;\r\n var resultDocument = responseDocument.documentElement;\r\n var resultBody = resultDocument.querySelector('body');\r\n resultBody.childNodes.forEach(function (node) {\r\n var newElement = node;\r\n if (newElement && newElement.tagName) {\r\n if (newElement.tagName.toLowerCase() == 'script' && newElement.textContent) {\r\n eval(newElement.textContent);\r\n }\r\n else {\r\n var targetId = newElement.getAttribute('id');\r\n if (targetId) {\r\n var targetElement = currentDoc.querySelector(\"#\" + targetId);\r\n if (targetElement) {\r\n targetElement.replaceWith(newElement);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n Xhr.importResultDocument = importResultDocument;\r\n})(Xhr = exports.Xhr || (exports.Xhr = {}));\r\n\n},{\"../definitions/http-method\":2,\"../helpers\":3,\"../models/xhr-result\":13}],29:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nvar AbortController = /** @class */ (function () {\r\n function AbortController() {\r\n this.isAborted = false;\r\n this.onabort = null;\r\n }\r\n AbortController.prototype.abort = function () {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AbortController.prototype, \"signal\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbortController.prototype, \"aborted\", {\r\n get: function () {\r\n return this.isAborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbortController;\r\n}());\r\nexports.AbortController = AbortController;\r\n\n},{}],30:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Errors_1 = require(\"./Errors\");\r\nvar HttpClient_1 = require(\"./HttpClient\");\r\nvar NodeHttpClient_1 = require(\"./NodeHttpClient\");\r\nvar XhrHttpClient_1 = require(\"./XhrHttpClient\");\r\n/** Default implementation of {@link @aspnet/signalr.HttpClient}. */\r\nvar DefaultHttpClient = /** @class */ (function (_super) {\r\n __extends(DefaultHttpClient, _super);\r\n /** Creates a new instance of the {@link @aspnet/signalr.DefaultHttpClient}, using the provided {@link @aspnet/signalr.ILogger} to log messages. */\r\n function DefaultHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof XMLHttpRequest !== \"undefined\") {\r\n _this.httpClient = new XhrHttpClient_1.XhrHttpClient(logger);\r\n }\r\n else {\r\n _this.httpClient = new NodeHttpClient_1.NodeHttpClient(logger);\r\n }\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n DefaultHttpClient.prototype.send = function (request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new Errors_1.AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this.httpClient.send(request);\r\n };\r\n DefaultHttpClient.prototype.getCookieString = function (url) {\r\n return this.httpClient.getCookieString(url);\r\n };\r\n return DefaultHttpClient;\r\n}(HttpClient_1.HttpClient));\r\nexports.DefaultHttpClient = DefaultHttpClient;\r\n\n},{\"./Errors\":31,\"./HttpClient\":33,\"./NodeHttpClient\":43,\"./XhrHttpClient\":48}],31:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/** Error thrown when an HTTP request fails. */\r\nvar HttpError = /** @class */ (function (_super) {\r\n __extends(HttpError, _super);\r\n /** Constructs a new instance of {@link @aspnet/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n function HttpError(errorMessage, statusCode) {\r\n var _newTarget = this.constructor;\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n _this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return HttpError;\r\n}(Error));\r\nexports.HttpError = HttpError;\r\n/** Error thrown when a timeout elapses. */\r\nvar TimeoutError = /** @class */ (function (_super) {\r\n __extends(TimeoutError, _super);\r\n /** Constructs a new instance of {@link @aspnet/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function TimeoutError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"A timeout occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return TimeoutError;\r\n}(Error));\r\nexports.TimeoutError = TimeoutError;\r\n/** Error thrown when an action is aborted. */\r\nvar AbortError = /** @class */ (function (_super) {\r\n __extends(AbortError, _super);\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function AbortError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"An abort occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return AbortError;\r\n}(Error));\r\nexports.AbortError = AbortError;\r\n\n},{}],32:[function(require,module,exports){\n(function (Buffer){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TextMessageFormat_1 = require(\"./TextMessageFormat\");\r\nvar Utils_1 = require(\"./Utils\");\r\n/** @private */\r\nvar HandshakeProtocol = /** @class */ (function () {\r\n function HandshakeProtocol() {\r\n }\r\n // Handshake request is always JSON\r\n HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {\r\n return TextMessageFormat_1.TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n };\r\n HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {\r\n var responseMessage;\r\n var messageData;\r\n var remainingData;\r\n if (Utils_1.isArrayBuffer(data) || (typeof Buffer !== \"undefined\" && data instanceof Buffer)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n var binaryData = new Uint8Array(data);\r\n var separatorIndex = binaryData.indexOf(TextMessageFormat_1.TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n var textData = data;\r\n var separatorIndex = textData.indexOf(TextMessageFormat_1.TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n var messages = TextMessageFormat_1.TextMessageFormat.parse(messageData);\r\n var response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n };\r\n return HandshakeProtocol;\r\n}());\r\nexports.HandshakeProtocol = HandshakeProtocol;\r\n\n}).call(this,require(\"buffer\").Buffer)\n},{\"./TextMessageFormat\":45,\"./Utils\":46,\"buffer\":51}],33:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/** Represents an HTTP response. */\r\nvar HttpResponse = /** @class */ (function () {\r\n function HttpResponse(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n return HttpResponse;\r\n}());\r\nexports.HttpResponse = HttpResponse;\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n }\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"GET\", url: url }));\r\n };\r\n HttpClient.prototype.post = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"POST\", url: url }));\r\n };\r\n HttpClient.prototype.delete = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"DELETE\", url: url }));\r\n };\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n HttpClient.prototype.getCookieString = function (url) {\r\n return \"\";\r\n };\r\n return HttpClient;\r\n}());\r\nexports.HttpClient = HttpClient;\r\n\n},{}],34:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar DefaultHttpClient_1 = require(\"./DefaultHttpClient\");\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar ITransport_1 = require(\"./ITransport\");\r\nvar LongPollingTransport_1 = require(\"./LongPollingTransport\");\r\nvar ServerSentEventsTransport_1 = require(\"./ServerSentEventsTransport\");\r\nvar Utils_1 = require(\"./Utils\");\r\nvar WebSocketTransport_1 = require(\"./WebSocketTransport\");\r\nvar MAX_REDIRECTS = 100;\r\nvar WebSocketModule = null;\r\nvar EventSourceModule = null;\r\nif (typeof window === \"undefined\" && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n WebSocketModule = requireFunc(\"ws\");\r\n EventSourceModule = requireFunc(\"eventsource\");\r\n}\r\n/** @private */\r\nvar HttpConnection = /** @class */ (function () {\r\n function HttpConnection(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.features = {};\r\n Utils_1.Arg.isRequired(url, \"url\");\r\n this.logger = Utils_1.createLogger(options.logger);\r\n this.baseUrl = this.resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent || false;\r\n var isNode = typeof window === \"undefined\";\r\n if (!isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (isNode && !options.WebSocket) {\r\n if (WebSocketModule) {\r\n options.WebSocket = WebSocketModule;\r\n }\r\n }\r\n if (!isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (isNode && !options.EventSource) {\r\n if (typeof EventSourceModule !== \"undefined\") {\r\n options.EventSource = EventSourceModule;\r\n }\r\n }\r\n this.httpClient = options.httpClient || new DefaultHttpClient_1.DefaultHttpClient(this.logger);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n HttpConnection.prototype.start = function (transferFormat) {\r\n transferFormat = transferFormat || ITransport_1.TransferFormat.Binary;\r\n Utils_1.Arg.isIn(transferFormat, ITransport_1.TransferFormat, \"transferFormat\");\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Starting connection with transfer format '\" + ITransport_1.TransferFormat[transferFormat] + \"'.\");\r\n if (this.connectionState !== 2 /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start a connection that is not in the 'Disconnected' state.\"));\r\n }\r\n this.connectionState = 0 /* Connecting */;\r\n this.startPromise = this.startInternal(transferFormat);\r\n return this.startPromise;\r\n };\r\n HttpConnection.prototype.send = function (data) {\r\n if (this.connectionState !== 1 /* Connected */) {\r\n throw new Error(\"Cannot send data if the connection is not in the 'Connected' State.\");\r\n }\r\n // Transport will not be null if state is connected\r\n return this.transport.send(data);\r\n };\r\n HttpConnection.prototype.stop = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.connectionState = 2 /* Disconnected */;\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this.stopError = error;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startPromise];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!this.transport) return [3 /*break*/, 6];\r\n return [4 /*yield*/, this.transport.stop()];\r\n case 5:\r\n _a.sent();\r\n this.transport = undefined;\r\n _a.label = 6;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.startInternal = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, negotiateResponse, redirects, _loop_1, this_1, state_1, e_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = this.baseUrl;\r\n this.accessTokenFactory = this.options.accessTokenFactory;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 12, , 13]);\r\n if (!this.options.skipNegotiation) return [3 /*break*/, 5];\r\n if (!(this.options.transport === ITransport_1.HttpTransportType.WebSockets)) return [3 /*break*/, 3];\r\n // No need to add a connection ID in this case\r\n this.transport = this.constructTransport(ITransport_1.HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n return [4 /*yield*/, this.transport.connect(url, transferFormat)];\r\n case 2:\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3: throw Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n case 4: return [3 /*break*/, 11];\r\n case 5:\r\n negotiateResponse = null;\r\n redirects = 0;\r\n _loop_1 = function () {\r\n var accessToken_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this_1.getNegotiationResponse(url)];\r\n case 1:\r\n negotiateResponse = _a.sent();\r\n // the user tries to stop the connection when it is being started\r\n if (this_1.connectionState === 2 /* Disconnected */) {\r\n return [2 /*return*/, { value: void 0 }];\r\n }\r\n if (negotiateResponse.error) {\r\n throw Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n accessToken_1 = negotiateResponse.accessToken;\r\n this_1.accessTokenFactory = function () { return accessToken_1; };\r\n }\r\n redirects++;\r\n return [2 /*return*/];\r\n }\r\n });\r\n };\r\n this_1 = this;\r\n _a.label = 6;\r\n case 6: return [5 /*yield**/, _loop_1()];\r\n case 7:\r\n state_1 = _a.sent();\r\n if (typeof state_1 === \"object\")\r\n return [2 /*return*/, state_1.value];\r\n _a.label = 8;\r\n case 8:\r\n if (negotiateResponse.url && redirects < MAX_REDIRECTS) return [3 /*break*/, 6];\r\n _a.label = 9;\r\n case 9:\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n return [4 /*yield*/, this.createTransport(url, this.options.transport, negotiateResponse, transferFormat)];\r\n case 10:\r\n _a.sent();\r\n _a.label = 11;\r\n case 11:\r\n if (this.transport instanceof LongPollingTransport_1.LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = function (e) { return _this.stopConnection(e); };\r\n // only change the state if we were connecting to not overwrite\r\n // the state if the connection is already marked as Disconnected\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [3 /*break*/, 13];\r\n case 12:\r\n e_2 = _a.sent();\r\n this.logger.log(ILogger_1.LogLevel.Error, \"Failed to start the connection: \" + e_2);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.transport = undefined;\r\n throw e_2;\r\n case 13: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.getNegotiationResponse = function (url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, negotiateUrl, response, e_3;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Sending negotiation request: \" + negotiateUrl + \".\");\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: headers,\r\n })];\r\n case 4:\r\n response = _b.sent();\r\n if (response.statusCode !== 200) {\r\n throw Error(\"Unexpected status code returned from negotiate \" + response.statusCode);\r\n }\r\n return [2 /*return*/, JSON.parse(response.content)];\r\n case 5:\r\n e_3 = _b.sent();\r\n this.logger.log(ILogger_1.LogLevel.Error, \"Failed to complete negotiation with the server: \" + e_3);\r\n throw e_3;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.createConnectUrl = function (url, connectionId) {\r\n if (!connectionId) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + (\"id=\" + connectionId);\r\n };\r\n HttpConnection.prototype.createTransport = function (url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectUrl, transports, _i, transports_1, endpoint, transport, ex_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionId);\r\n if (!this.isITransport(requestedTransport)) return [3 /*break*/, 2];\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n return [4 /*yield*/, this.transport.connect(connectUrl, requestedTransferFormat)];\r\n case 1:\r\n _a.sent();\r\n // only change the state if we were connecting to not overwrite\r\n // the state if the connection is already marked as Disconnected\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [2 /*return*/];\r\n case 2:\r\n transports = negotiateResponse.availableTransports || [];\r\n _i = 0, transports_1 = transports;\r\n _a.label = 3;\r\n case 3:\r\n if (!(_i < transports_1.length)) return [3 /*break*/, 9];\r\n endpoint = transports_1[_i];\r\n this.connectionState = 0 /* Connecting */;\r\n transport = this.resolveTransport(endpoint, requestedTransport, requestedTransferFormat);\r\n if (!(typeof transport === \"number\")) return [3 /*break*/, 8];\r\n this.transport = this.constructTransport(transport);\r\n if (!!negotiateResponse.connectionId) return [3 /*break*/, 5];\r\n return [4 /*yield*/, this.getNegotiationResponse(url)];\r\n case 4:\r\n negotiateResponse = _a.sent();\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionId);\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.transport.connect(connectUrl, requestedTransferFormat)];\r\n case 6:\r\n _a.sent();\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [2 /*return*/];\r\n case 7:\r\n ex_1 = _a.sent();\r\n this.logger.log(ILogger_1.LogLevel.Error, \"Failed to start the transport '\" + ITransport_1.HttpTransportType[transport] + \"': \" + ex_1);\r\n this.connectionState = 2 /* Disconnected */;\r\n negotiateResponse.connectionId = undefined;\r\n return [3 /*break*/, 8];\r\n case 8:\r\n _i++;\r\n return [3 /*break*/, 3];\r\n case 9: throw new Error(\"Unable to initialize any of the available transports.\");\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.constructTransport = function (transport) {\r\n switch (transport) {\r\n case ITransport_1.HttpTransportType.WebSockets:\r\n if (!this.options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport_1.WebSocketTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket);\r\n case ITransport_1.HttpTransportType.ServerSentEvents:\r\n if (!this.options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport_1.ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource);\r\n case ITransport_1.HttpTransportType.LongPolling:\r\n return new LongPollingTransport_1.LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false);\r\n default:\r\n throw new Error(\"Unknown transport: \" + transport + \".\");\r\n }\r\n };\r\n HttpConnection.prototype.resolveTransport = function (endpoint, requestedTransport, requestedTransferFormat) {\r\n var transport = ITransport_1.HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n }\r\n else {\r\n var transferFormats = endpoint.transferFormats.map(function (s) { return ITransport_1.TransferFormat[s]; });\r\n if (transportMatches(requestedTransport, transport)) {\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === ITransport_1.HttpTransportType.WebSockets && !this.options.WebSocket) ||\r\n (transport === ITransport_1.HttpTransportType.ServerSentEvents && !this.options.EventSource)) {\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Skipping transport '\" + ITransport_1.HttpTransportType[transport] + \"' because it is not supported in your environment.'\");\r\n }\r\n else {\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Selecting transport '\" + ITransport_1.HttpTransportType[transport] + \"'.\");\r\n return transport;\r\n }\r\n }\r\n else {\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Skipping transport '\" + ITransport_1.HttpTransportType[transport] + \"' because it does not support the requested transfer format '\" + ITransport_1.TransferFormat[requestedTransferFormat] + \"'.\");\r\n }\r\n }\r\n else {\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Skipping transport '\" + ITransport_1.HttpTransportType[transport] + \"' because it was disabled by the client.\");\r\n }\r\n }\r\n return null;\r\n };\r\n HttpConnection.prototype.isITransport = function (transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n };\r\n HttpConnection.prototype.changeState = function (from, to) {\r\n if (this.connectionState === from) {\r\n this.connectionState = to;\r\n return true;\r\n }\r\n return false;\r\n };\r\n HttpConnection.prototype.stopConnection = function (error) {\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\r\n if (error) {\r\n this.logger.log(ILogger_1.LogLevel.Error, \"Connection disconnected with error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(ILogger_1.LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n this.connectionState = 2 /* Disconnected */;\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n };\r\n HttpConnection.prototype.resolveUrl = function (url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (typeof window === \"undefined\" || !window || !window.document) {\r\n throw new Error(\"Cannot resolve '\" + url + \"'.\");\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n var aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this.logger.log(ILogger_1.LogLevel.Information, \"Normalizing '\" + url + \"' to '\" + aTag.href + \"'.\");\r\n return aTag.href;\r\n };\r\n HttpConnection.prototype.resolveNegotiateUrl = function (url) {\r\n var index = url.indexOf(\"?\");\r\n var negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n return negotiateUrl;\r\n };\r\n return HttpConnection;\r\n}());\r\nexports.HttpConnection = HttpConnection;\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n\n},{\"./DefaultHttpClient\":30,\"./ILogger\":38,\"./ITransport\":39,\"./LongPollingTransport\":42,\"./ServerSentEventsTransport\":44,\"./Utils\":46,\"./WebSocketTransport\":47}],35:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar HandshakeProtocol_1 = require(\"./HandshakeProtocol\");\r\nvar IHubProtocol_1 = require(\"./IHubProtocol\");\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar Utils_1 = require(\"./Utils\");\r\nvar DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nvar DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nvar HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[HubConnectionState[\"Disconnected\"] = 0] = \"Disconnected\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[HubConnectionState[\"Connected\"] = 1] = \"Connected\";\r\n})(HubConnectionState = exports.HubConnectionState || (exports.HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nvar HubConnection = /** @class */ (function () {\r\n function HubConnection(connection, logger, protocol) {\r\n var _this = this;\r\n Utils_1.Arg.isRequired(connection, \"connection\");\r\n Utils_1.Arg.isRequired(logger, \"logger\");\r\n Utils_1.Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\r\n this.handshakeProtocol = new HandshakeProtocol_1.HandshakeProtocol();\r\n this.connection.onreceive = function (data) { return _this.processIncomingData(data); };\r\n this.connection.onclose = function (error) { return _this.connectionClosed(error); };\r\n this.callbacks = {};\r\n this.methods = {};\r\n this.closedCallbacks = [];\r\n this.id = 0;\r\n this.receivedHandshakeResponse = false;\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.cachedPingMessage = this.protocol.writeMessage({ type: IHubProtocol_1.MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n HubConnection.create = function (connection, logger, protocol) {\r\n return new HubConnection(connection, logger, protocol);\r\n };\r\n Object.defineProperty(HubConnection.prototype, \"state\", {\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get: function () {\r\n return this.connectionState;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n HubConnection.prototype.start = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var handshakeRequest, handshakePromise;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n handshakeRequest = {\r\n protocol: this.protocol.name,\r\n version: this.protocol.version,\r\n };\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Starting HubConnection.\");\r\n this.receivedHandshakeResponse = false;\r\n handshakePromise = new Promise(function (resolve, reject) {\r\n _this.handshakeResolver = resolve;\r\n _this.handshakeRejecter = reject;\r\n });\r\n return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];\r\n case 1:\r\n _a.sent();\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Sending handshake request.\");\r\n return [4 /*yield*/, this.sendMessage(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest))];\r\n case 2:\r\n _a.sent();\r\n this.logger.log(ILogger_1.LogLevel.Information, \"Using HubProtocol '\" + this.protocol.name + \"'.\");\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this.cleanupTimeout();\r\n this.resetTimeoutPeriod();\r\n this.resetKeepAliveInterval();\r\n // Wait for the handshake to complete before marking connection as connected\r\n return [4 /*yield*/, handshakePromise];\r\n case 3:\r\n // Wait for the handshake to complete before marking connection as connected\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n HubConnection.prototype.stop = function () {\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Stopping HubConnection.\");\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n return this.connection.stop();\r\n };\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n HubConnection.prototype.stream = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createStreamInvocation(methodName, args);\r\n var promiseQueue;\r\n var subject = new Utils_1.Subject();\r\n subject.cancelCallback = function () {\r\n var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);\r\n var cancelMessage = _this.protocol.writeMessage(cancelInvocation);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(function () {\r\n return _this.sendMessage(cancelMessage);\r\n });\r\n };\r\n this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === IHubProtocol_1.MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n promiseQueue = this.sendMessage(message)\r\n .catch(function (e) {\r\n subject.error(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n return subject;\r\n };\r\n HubConnection.prototype.sendMessage = function (message) {\r\n this.resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n HubConnection.prototype.send = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createInvocation(methodName, args, true);\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n return this.sendMessage(message);\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n HubConnection.prototype.invoke = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createInvocation(methodName, args, false);\r\n var p = new Promise(function (resolve, reject) {\r\n // invocationId will always have a value for a non-blocking invocation\r\n _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === IHubProtocol_1.MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(\"Unexpected message type: \" + invocationEvent.type));\r\n }\r\n }\r\n };\r\n var message = _this.protocol.writeMessage(invocationDescriptor);\r\n _this.sendMessage(message)\r\n .catch(function (e) {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n });\r\n return p;\r\n };\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n HubConnection.prototype.on = function (methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this.methods[methodName]) {\r\n this.methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this.methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this.methods[methodName].push(newMethod);\r\n };\r\n HubConnection.prototype.off = function (methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n var handlers = this.methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n var removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this.methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this.methods[methodName];\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n HubConnection.prototype.onclose = function (callback) {\r\n if (callback) {\r\n this.closedCallbacks.push(callback);\r\n }\r\n };\r\n HubConnection.prototype.processIncomingData = function (data) {\r\n this.cleanupTimeout();\r\n if (!this.receivedHandshakeResponse) {\r\n data = this.processHandshakeResponse(data);\r\n this.receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n var messages = this.protocol.parseMessages(data, this.logger);\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n switch (message.type) {\r\n case IHubProtocol_1.MessageType.Invocation:\r\n this.invokeClientMethod(message);\r\n break;\r\n case IHubProtocol_1.MessageType.StreamItem:\r\n case IHubProtocol_1.MessageType.Completion:\r\n var callback = this.callbacks[message.invocationId];\r\n if (callback != null) {\r\n if (message.type === IHubProtocol_1.MessageType.Completion) {\r\n delete this.callbacks[message.invocationId];\r\n }\r\n callback(message);\r\n }\r\n break;\r\n case IHubProtocol_1.MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case IHubProtocol_1.MessageType.Close:\r\n this.logger.log(ILogger_1.LogLevel.Information, \"Close message received from server.\");\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined);\r\n break;\r\n default:\r\n this.logger.log(ILogger_1.LogLevel.Warning, \"Invalid message type: \" + message.type + \".\");\r\n break;\r\n }\r\n }\r\n }\r\n this.resetTimeoutPeriod();\r\n };\r\n HubConnection.prototype.processHandshakeResponse = function (data) {\r\n var _a;\r\n var responseMessage;\r\n var remainingData;\r\n try {\r\n _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];\r\n }\r\n catch (e) {\r\n var message = \"Error parsing handshake response: \" + e;\r\n this.logger.log(ILogger_1.LogLevel.Error, message);\r\n var error = new Error(message);\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(error);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n var message = \"Server returned handshake error: \" + responseMessage.error;\r\n this.logger.log(ILogger_1.LogLevel.Error, message);\r\n this.handshakeRejecter(message);\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(message));\r\n throw new Error(message);\r\n }\r\n else {\r\n this.logger.log(ILogger_1.LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this.handshakeResolver();\r\n return remainingData;\r\n };\r\n HubConnection.prototype.resetKeepAliveInterval = function () {\r\n var _this = this;\r\n this.cleanupPingTimer();\r\n this.pingServerHandle = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(this.connectionState === HubConnectionState.Connected)) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.sendMessage(this.cachedPingMessage)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = _b.sent();\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this.cleanupPingTimer();\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }, this.keepAliveIntervalInMilliseconds);\r\n };\r\n HubConnection.prototype.resetTimeoutPeriod = function () {\r\n var _this = this;\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);\r\n }\r\n };\r\n HubConnection.prototype.serverTimeout = function () {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n };\r\n HubConnection.prototype.invokeClientMethod = function (invocationMessage) {\r\n var _this = this;\r\n var methods = this.methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n var message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this.logger.log(ILogger_1.LogLevel.Error, message);\r\n // We don't need to wait on this Promise.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(message));\r\n }\r\n }\r\n else {\r\n this.logger.log(ILogger_1.LogLevel.Warning, \"No client method with the name '\" + invocationMessage.target + \"' found.\");\r\n }\r\n };\r\n HubConnection.prototype.connectionClosed = function (error) {\r\n var _this = this;\r\n var callbacks = this.callbacks;\r\n this.callbacks = {};\r\n this.connectionState = HubConnectionState.Disconnected;\r\n // if handshake is in progress start will be waiting for the handshake promise, so we complete it\r\n // if it has already completed this should just noop\r\n if (this.handshakeRejecter) {\r\n this.handshakeRejecter(error);\r\n }\r\n Object.keys(callbacks)\r\n .forEach(function (key) {\r\n var callback = callbacks[key];\r\n callback(null, error ? error : new Error(\"Invocation canceled due to connection being closed.\"));\r\n });\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n };\r\n HubConnection.prototype.cleanupPingTimer = function () {\r\n if (this.pingServerHandle) {\r\n clearTimeout(this.pingServerHandle);\r\n }\r\n };\r\n HubConnection.prototype.cleanupTimeout = function () {\r\n if (this.timeoutHandle) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n };\r\n HubConnection.prototype.createInvocation = function (methodName, args, nonblocking) {\r\n if (nonblocking) {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: IHubProtocol_1.MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n var id = this.id;\r\n this.id++;\r\n return {\r\n arguments: args,\r\n invocationId: id.toString(),\r\n target: methodName,\r\n type: IHubProtocol_1.MessageType.Invocation,\r\n };\r\n }\r\n };\r\n HubConnection.prototype.createStreamInvocation = function (methodName, args) {\r\n var id = this.id;\r\n this.id++;\r\n return {\r\n arguments: args,\r\n invocationId: id.toString(),\r\n target: methodName,\r\n type: IHubProtocol_1.MessageType.StreamInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createCancelInvocation = function (id) {\r\n return {\r\n invocationId: id,\r\n type: IHubProtocol_1.MessageType.CancelInvocation,\r\n };\r\n };\r\n return HubConnection;\r\n}());\r\nexports.HubConnection = HubConnection;\r\n\n},{\"./HandshakeProtocol\":32,\"./IHubProtocol\":37,\"./ILogger\":38,\"./Utils\":46}],36:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar HttpConnection_1 = require(\"./HttpConnection\");\r\nvar HubConnection_1 = require(\"./HubConnection\");\r\nvar JsonHubProtocol_1 = require(\"./JsonHubProtocol\");\r\nvar Loggers_1 = require(\"./Loggers\");\r\nvar Utils_1 = require(\"./Utils\");\r\n/** A builder for configuring {@link @aspnet/signalr.HubConnection} instances. */\r\nvar HubConnectionBuilder = /** @class */ (function () {\r\n function HubConnectionBuilder() {\r\n }\r\n HubConnectionBuilder.prototype.configureLogging = function (logging) {\r\n Utils_1.Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else {\r\n this.logger = new Utils_1.ConsoleLogger(logging);\r\n }\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {\r\n Utils_1.Arg.isRequired(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = transportTypeOrOptions;\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n };\r\n /** Configures the {@link @aspnet/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @aspnet/signalr.IHubProtocol} implementation to use.\r\n */\r\n HubConnectionBuilder.prototype.withHubProtocol = function (protocol) {\r\n Utils_1.Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n };\r\n /** Creates a {@link @aspnet/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @aspnet/signalr.HubConnection}.\r\n */\r\n HubConnectionBuilder.prototype.build = function () {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n var httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n var connection = new HttpConnection_1.HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection_1.HubConnection.create(connection, this.logger || Loggers_1.NullLogger.instance, this.protocol || new JsonHubProtocol_1.JsonHubProtocol());\r\n };\r\n return HubConnectionBuilder;\r\n}());\r\nexports.HubConnectionBuilder = HubConnectionBuilder;\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n\n},{\"./HttpConnection\":34,\"./HubConnection\":35,\"./JsonHubProtocol\":40,\"./Loggers\":41,\"./Utils\":46}],37:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/** Defines the type of a Hub Message. */\r\nvar MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @aspnet/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @aspnet/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @aspnet/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @aspnet/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @aspnet/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @aspnet/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @aspnet/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType = exports.MessageType || (exports.MessageType = {}));\r\n\n},{}],38:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));\r\n\n},{}],39:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nvar HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType = exports.HttpTransportType || (exports.HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nvar TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat = exports.TransferFormat || (exports.TransferFormat = {}));\r\n\n},{}],40:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar IHubProtocol_1 = require(\"./IHubProtocol\");\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar ITransport_1 = require(\"./ITransport\");\r\nvar Loggers_1 = require(\"./Loggers\");\r\nvar TextMessageFormat_1 = require(\"./TextMessageFormat\");\r\nvar JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nvar JsonHubProtocol = /** @class */ (function () {\r\n function JsonHubProtocol() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = ITransport_1.TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @aspnet/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n JsonHubProtocol.prototype.parseMessages = function (input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = Loggers_1.NullLogger.instance;\r\n }\r\n // Parse the messages\r\n var messages = TextMessageFormat_1.TextMessageFormat.parse(input);\r\n var hubMessages = [];\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n var parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case IHubProtocol_1.MessageType.Invocation:\r\n this.isInvocationMessage(parsedMessage);\r\n break;\r\n case IHubProtocol_1.MessageType.StreamItem:\r\n this.isStreamItemMessage(parsedMessage);\r\n break;\r\n case IHubProtocol_1.MessageType.Completion:\r\n this.isCompletionMessage(parsedMessage);\r\n break;\r\n case IHubProtocol_1.MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case IHubProtocol_1.MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(ILogger_1.LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n };\r\n /** Writes the specified {@link @aspnet/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n JsonHubProtocol.prototype.writeMessage = function (message) {\r\n return TextMessageFormat_1.TextMessageFormat.write(JSON.stringify(message));\r\n };\r\n JsonHubProtocol.prototype.isInvocationMessage = function (message) {\r\n this.assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isStreamItemMessage = function (message) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isCompletionMessage = function (message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this.assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n };\r\n JsonHubProtocol.prototype.assertNotEmptyString = function (value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n };\r\n return JsonHubProtocol;\r\n}());\r\nexports.JsonHubProtocol = JsonHubProtocol;\r\n\n},{\"./IHubProtocol\":37,\"./ILogger\":38,\"./ITransport\":39,\"./Loggers\":41,\"./TextMessageFormat\":45}],41:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/** A logger that does nothing when log messages are sent to it. */\r\nvar NullLogger = /** @class */ (function () {\r\n function NullLogger() {\r\n }\r\n /** @inheritDoc */\r\n // tslint:disable-next-line\r\n NullLogger.prototype.log = function (_logLevel, _message) {\r\n };\r\n /** The singleton instance of the {@link @aspnet/signalr.NullLogger}. */\r\n NullLogger.instance = new NullLogger();\r\n return NullLogger;\r\n}());\r\nexports.NullLogger = NullLogger;\r\n\n},{}],42:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AbortController_1 = require(\"./AbortController\");\r\nvar Errors_1 = require(\"./Errors\");\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar ITransport_1 = require(\"./ITransport\");\r\nvar Utils_1 = require(\"./Utils\");\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nvar LongPollingTransport = /** @class */ (function () {\r\n function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.pollAbort = new AbortController_1.AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n Object.defineProperty(LongPollingTransport.prototype, \"pollAborted\", {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get: function () {\r\n return this.pollAbort.aborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LongPollingTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pollOptions, token, pollUrl, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Utils_1.Arg.isRequired(url, \"url\");\r\n Utils_1.Arg.isRequired(transferFormat, \"transferFormat\");\r\n Utils_1.Arg.isIn(transferFormat, ITransport_1.TransferFormat, \"transferFormat\");\r\n this.url = url;\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === ITransport_1.TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: {},\r\n timeout: 100000,\r\n };\r\n if (transferFormat === ITransport_1.TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 2:\r\n response = _a.sent();\r\n if (response.statusCode !== 200) {\r\n this.logger.log(ILogger_1.LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this.closeError = new Errors_1.HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n this.running = true;\r\n }\r\n this.receiving = this.poll(this.url, pollOptions);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.getAccessToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.updateHeaderToken = function (request, token) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n // tslint:disable-next-line:no-string-literal\r\n request.headers[\"Authorization\"] = \"Bearer \" + token;\r\n return;\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if (request.headers[\"Authorization\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n delete request.headers[\"Authorization\"];\r\n }\r\n };\r\n LongPollingTransport.prototype.poll = function (url, pollOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, pollUrl, response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 8, 9]);\r\n _a.label = 1;\r\n case 1:\r\n if (!this.running) return [3 /*break*/, 7];\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 2:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 4:\r\n response = _a.sent();\r\n if (response.statusCode === 204) {\r\n this.logger.log(ILogger_1.LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this.running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this.logger.log(ILogger_1.LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Unexpected status code\r\n this.closeError = new Errors_1.HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) data received. \" + Utils_1.getDataDetail(response.content, this.logMessageContent) + \".\");\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (!this.running) {\r\n // Log but disregard errors that occur after stopping\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) Poll errored after shutdown: \" + e_1.message);\r\n }\r\n else {\r\n if (e_1 instanceof Errors_1.TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this.closeError = e_1;\r\n this.running = false;\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this.raiseOnClose();\r\n }\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.running) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, Utils_1.sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deleteOptions, token;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this.running = false;\r\n this.pollAbort.abort();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 6]);\r\n return [4 /*yield*/, this.receiving];\r\n case 2:\r\n _a.sent();\r\n // Send DELETE to clean up long polling on the server\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) sending DELETE request to \" + this.url + \".\");\r\n deleteOptions = {\r\n headers: {},\r\n };\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 3:\r\n token = _a.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 4:\r\n _a.sent();\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n return [3 /*break*/, 6];\r\n case 5:\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this.raiseOnClose();\r\n return [7 /*endfinally*/];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.raiseOnClose = function () {\r\n if (this.onclose) {\r\n var logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this.closeError) {\r\n logMessage += \" Error: \" + this.closeError;\r\n }\r\n this.logger.log(ILogger_1.LogLevel.Trace, logMessage);\r\n this.onclose(this.closeError);\r\n }\r\n };\r\n return LongPollingTransport;\r\n}());\r\nexports.LongPollingTransport = LongPollingTransport;\r\n\n},{\"./AbortController\":29,\"./Errors\":31,\"./ILogger\":38,\"./ITransport\":39,\"./Utils\":46}],43:[function(require,module,exports){\n(function (Buffer){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Errors_1 = require(\"./Errors\");\r\nvar HttpClient_1 = require(\"./HttpClient\");\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar Utils_1 = require(\"./Utils\");\r\nvar requestModule;\r\nif (typeof XMLHttpRequest === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n requestModule = requireFunc(\"request\");\r\n}\r\nvar NodeHttpClient = /** @class */ (function (_super) {\r\n __extends(NodeHttpClient, _super);\r\n function NodeHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof requestModule === \"undefined\") {\r\n throw new Error(\"The 'request' module could not be loaded.\");\r\n }\r\n _this.logger = logger;\r\n _this.cookieJar = requestModule.jar();\r\n _this.request = requestModule.defaults({ jar: _this.cookieJar });\r\n return _this;\r\n }\r\n NodeHttpClient.prototype.send = function (httpRequest) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var requestBody;\r\n if (Utils_1.isArrayBuffer(httpRequest.content)) {\r\n requestBody = Buffer.from(httpRequest.content);\r\n }\r\n else {\r\n requestBody = httpRequest.content || \"\";\r\n }\r\n var currentRequest = _this.request(httpRequest.url, {\r\n body: requestBody,\r\n // If binary is expected 'null' should be used, otherwise for text 'utf8'\r\n encoding: httpRequest.responseType === \"arraybuffer\" ? null : \"utf8\",\r\n headers: __assign({ \r\n // Tell auth middleware to 401 instead of redirecting\r\n \"X-Requested-With\": \"XMLHttpRequest\" }, httpRequest.headers),\r\n method: httpRequest.method,\r\n timeout: httpRequest.timeout,\r\n }, function (error, response, body) {\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = null;\r\n }\r\n if (error) {\r\n if (error.code === \"ETIMEDOUT\") {\r\n _this.logger.log(ILogger_1.LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new Errors_1.TimeoutError());\r\n }\r\n _this.logger.log(ILogger_1.LogLevel.Warning, \"Error from HTTP request. \" + error);\r\n reject(error);\r\n return;\r\n }\r\n if (response.statusCode >= 200 && response.statusCode < 300) {\r\n resolve(new HttpClient_1.HttpResponse(response.statusCode, response.statusMessage || \"\", body));\r\n }\r\n else {\r\n reject(new Errors_1.HttpError(response.statusMessage || \"\", response.statusCode || 0));\r\n }\r\n });\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = function () {\r\n currentRequest.abort();\r\n reject(new Errors_1.AbortError());\r\n };\r\n }\r\n });\r\n };\r\n NodeHttpClient.prototype.getCookieString = function (url) {\r\n return this.cookieJar.getCookieString(url);\r\n };\r\n return NodeHttpClient;\r\n}(HttpClient_1.HttpClient));\r\nexports.NodeHttpClient = NodeHttpClient;\r\n\n}).call(this,require(\"buffer\").Buffer)\n},{\"./Errors\":31,\"./HttpClient\":33,\"./ILogger\":38,\"./Utils\":46,\"buffer\":51}],44:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar ITransport_1 = require(\"./ITransport\");\r\nvar Utils_1 = require(\"./Utils\");\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n this.eventSourceConstructor = eventSourceConstructor;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Utils_1.Arg.isRequired(url, \"url\");\r\n Utils_1.Arg.isRequired(transferFormat, \"transferFormat\");\r\n Utils_1.Arg.isIn(transferFormat, ITransport_1.TransferFormat, \"transferFormat\");\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this.url = url;\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var opened = false;\r\n if (transferFormat !== ITransport_1.TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n var eventSource;\r\n if (typeof window !== \"undefined\") {\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n var cookies = _this.httpClient.getCookieString(url);\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true, headers: { Cookie: cookies } });\r\n }\r\n try {\r\n eventSource.onmessage = function (e) {\r\n if (_this.onreceive) {\r\n try {\r\n _this.logger.log(ILogger_1.LogLevel.Trace, \"(SSE transport) data received. \" + Utils_1.getDataDetail(e.data, _this.logMessageContent) + \".\");\r\n _this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n _this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n eventSource.onerror = function (e) {\r\n var error = new Error(e.data || \"Error occurred\");\r\n if (opened) {\r\n _this.close(error);\r\n }\r\n else {\r\n reject(error);\r\n }\r\n };\r\n eventSource.onopen = function () {\r\n _this.logger.log(ILogger_1.LogLevel.Information, \"SSE connected to \" + _this.url);\r\n _this.eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.eventSource) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, Utils_1.sendMessage(this.logger, \"SSE\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.stop = function () {\r\n this.close();\r\n return Promise.resolve();\r\n };\r\n ServerSentEventsTransport.prototype.close = function (e) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n };\r\n return ServerSentEventsTransport;\r\n}());\r\nexports.ServerSentEventsTransport = ServerSentEventsTransport;\r\n\n},{\"./ILogger\":38,\"./ITransport\":39,\"./Utils\":46}],45:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// Not exported from index\r\n/** @private */\r\nvar TextMessageFormat = /** @class */ (function () {\r\n function TextMessageFormat() {\r\n }\r\n TextMessageFormat.write = function (output) {\r\n return \"\" + output + TextMessageFormat.RecordSeparator;\r\n };\r\n TextMessageFormat.parse = function (input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n var messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n };\r\n TextMessageFormat.RecordSeparatorCode = 0x1e;\r\n TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n return TextMessageFormat;\r\n}());\r\nexports.TextMessageFormat = TextMessageFormat;\r\n\n},{}],46:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar Loggers_1 = require(\"./Loggers\");\r\n/** @private */\r\nvar Arg = /** @class */ (function () {\r\n function Arg() {\r\n }\r\n Arg.isRequired = function (val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(\"The '\" + name + \"' argument is required.\");\r\n }\r\n };\r\n Arg.isIn = function (val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(\"Unknown \" + name + \" value: \" + val + \".\");\r\n }\r\n };\r\n return Arg;\r\n}());\r\nexports.Arg = Arg;\r\n/** @private */\r\nfunction getDataDetail(data, includeContent) {\r\n var detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = \"Binary data of length \" + data.byteLength;\r\n if (includeContent) {\r\n detail += \". Content: '\" + formatArrayBuffer(data) + \"'\";\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = \"String data of length \" + data.length;\r\n if (includeContent) {\r\n detail += \". Content: '\" + data + \"'\";\r\n }\r\n }\r\n return detail;\r\n}\r\nexports.getDataDetail = getDataDetail;\r\n/** @private */\r\nfunction formatArrayBuffer(data) {\r\n var view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n var str = \"\";\r\n view.forEach(function (num) {\r\n var pad = num < 16 ? \"0\" : \"\";\r\n str += \"0x\" + pad + num.toString(16) + \" \";\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\nexports.formatArrayBuffer = formatArrayBuffer;\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nfunction isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\nexports.isArrayBuffer = isArrayBuffer;\r\n/** @private */\r\nfunction sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, responseType, response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n logger.log(ILogger_1.LogLevel.Trace, \"(\" + transportName + \" transport) sending data. \" + getDataDetail(content, logMessageContent) + \".\");\r\n responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n return [4 /*yield*/, httpClient.post(url, {\r\n content: content,\r\n headers: headers,\r\n responseType: responseType,\r\n })];\r\n case 3:\r\n response = _b.sent();\r\n logger.log(ILogger_1.LogLevel.Trace, \"(\" + transportName + \" transport) request complete. Response status: \" + response.statusCode + \".\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nexports.sendMessage = sendMessage;\r\n/** @private */\r\nfunction createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(ILogger_1.LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return Loggers_1.NullLogger.instance;\r\n }\r\n if (logger.log) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\nexports.createLogger = createLogger;\r\n/** @private */\r\nvar Subject = /** @class */ (function () {\r\n function Subject() {\r\n this.observers = [];\r\n }\r\n Subject.prototype.next = function (item) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n observer.next(item);\r\n }\r\n };\r\n Subject.prototype.error = function (err) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n };\r\n Subject.prototype.complete = function () {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n };\r\n Subject.prototype.subscribe = function (observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n };\r\n return Subject;\r\n}());\r\nexports.Subject = Subject;\r\n/** @private */\r\nvar SubjectSubscription = /** @class */ (function () {\r\n function SubjectSubscription(subject, observer) {\r\n this.subject = subject;\r\n this.observer = observer;\r\n }\r\n SubjectSubscription.prototype.dispose = function () {\r\n var index = this.subject.observers.indexOf(this.observer);\r\n if (index > -1) {\r\n this.subject.observers.splice(index, 1);\r\n }\r\n if (this.subject.observers.length === 0 && this.subject.cancelCallback) {\r\n this.subject.cancelCallback().catch(function (_) { });\r\n }\r\n };\r\n return SubjectSubscription;\r\n}());\r\nexports.SubjectSubscription = SubjectSubscription;\r\n/** @private */\r\nvar ConsoleLogger = /** @class */ (function () {\r\n function ConsoleLogger(minimumLogLevel) {\r\n this.minimumLogLevel = minimumLogLevel;\r\n }\r\n ConsoleLogger.prototype.log = function (logLevel, message) {\r\n if (logLevel >= this.minimumLogLevel) {\r\n switch (logLevel) {\r\n case ILogger_1.LogLevel.Critical:\r\n case ILogger_1.LogLevel.Error:\r\n console.error(\"[\" + new Date().toISOString() + \"] \" + ILogger_1.LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case ILogger_1.LogLevel.Warning:\r\n console.warn(\"[\" + new Date().toISOString() + \"] \" + ILogger_1.LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case ILogger_1.LogLevel.Information:\r\n console.info(\"[\" + new Date().toISOString() + \"] \" + ILogger_1.LogLevel[logLevel] + \": \" + message);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n console.log(\"[\" + new Date().toISOString() + \"] \" + ILogger_1.LogLevel[logLevel] + \": \" + message);\r\n break;\r\n }\r\n }\r\n };\r\n return ConsoleLogger;\r\n}());\r\nexports.ConsoleLogger = ConsoleLogger;\r\n\n},{\"./ILogger\":38,\"./Loggers\":41}],47:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar ITransport_1 = require(\"./ITransport\");\r\nvar Utils_1 = require(\"./Utils\");\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logMessageContent = logMessageContent;\r\n this.webSocketConstructor = webSocketConstructor;\r\n this.httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n WebSocketTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Utils_1.Arg.isRequired(url, \"url\");\r\n Utils_1.Arg.isRequired(transferFormat, \"transferFormat\");\r\n Utils_1.Arg.isIn(transferFormat, ITransport_1.TransferFormat, \"transferFormat\");\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n url = url.replace(/^http/, \"ws\");\r\n var webSocket;\r\n var cookies = _this.httpClient.getCookieString(url);\r\n if (typeof window === \"undefined\" && cookies) {\r\n // Only pass cookies when in non-browser environments\r\n webSocket = new _this.webSocketConstructor(url, undefined, {\r\n headers: {\r\n Cookie: \"\" + cookies,\r\n },\r\n });\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new _this.webSocketConstructor(url);\r\n }\r\n if (transferFormat === ITransport_1.TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n // tslint:disable-next-line:variable-name\r\n webSocket.onopen = function (_event) {\r\n _this.logger.log(ILogger_1.LogLevel.Information, \"WebSocket connected to \" + url + \".\");\r\n _this.webSocket = webSocket;\r\n resolve();\r\n };\r\n webSocket.onerror = function (event) {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n reject(error);\r\n };\r\n webSocket.onmessage = function (message) {\r\n _this.logger.log(ILogger_1.LogLevel.Trace, \"(WebSockets transport) data received. \" + Utils_1.getDataDetail(message.data, _this.logMessageContent) + \".\");\r\n if (_this.onreceive) {\r\n _this.onreceive(message.data);\r\n }\r\n };\r\n webSocket.onclose = function (event) { return _this.close(event); };\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n WebSocketTransport.prototype.send = function (data) {\r\n if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(WebSockets transport) sending data. \" + Utils_1.getDataDetail(data, this.logMessageContent) + \".\");\r\n this.webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n };\r\n WebSocketTransport.prototype.stop = function () {\r\n if (this.webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this.webSocket.onclose = function () { };\r\n this.webSocket.onmessage = function () { };\r\n this.webSocket.onerror = function () { };\r\n this.webSocket.close();\r\n this.webSocket = undefined;\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this.close(undefined);\r\n }\r\n return Promise.resolve();\r\n };\r\n WebSocketTransport.prototype.close = function (event) {\r\n // webSocket will be null if the transport did not start successfully\r\n this.logger.log(ILogger_1.LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (event && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(\"WebSocket closed with status code: \" + event.code + \" (\" + event.reason + \").\"));\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n };\r\n return WebSocketTransport;\r\n}());\r\nexports.WebSocketTransport = WebSocketTransport;\r\n\n},{\"./ILogger\":38,\"./ITransport\":39,\"./Utils\":46}],48:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Errors_1 = require(\"./Errors\");\r\nvar HttpClient_1 = require(\"./HttpClient\");\r\nvar ILogger_1 = require(\"./ILogger\");\r\nvar XhrHttpClient = /** @class */ (function (_super) {\r\n __extends(XhrHttpClient, _super);\r\n function XhrHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n XhrHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new Errors_1.AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = true;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n var headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach(function (header) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n xhr.abort();\r\n reject(new Errors_1.AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = function () {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpClient_1.HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new Errors_1.HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n _this.logger.log(ILogger_1.LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText + \".\");\r\n reject(new Errors_1.HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = function () {\r\n _this.logger.log(ILogger_1.LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new Errors_1.TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n };\r\n return XhrHttpClient;\r\n}(HttpClient_1.HttpClient));\r\nexports.XhrHttpClient = XhrHttpClient;\r\n\n},{\"./Errors\":31,\"./HttpClient\":33,\"./ILogger\":38}],49:[function(require,module,exports){\n\"use strict\";\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexports.VERSION = \"1.1.4\";\r\nvar Errors_1 = require(\"./Errors\");\r\nexports.AbortError = Errors_1.AbortError;\r\nexports.HttpError = Errors_1.HttpError;\r\nexports.TimeoutError = Errors_1.TimeoutError;\r\nvar HttpClient_1 = require(\"./HttpClient\");\r\nexports.HttpClient = HttpClient_1.HttpClient;\r\nexports.HttpResponse = HttpClient_1.HttpResponse;\r\nvar DefaultHttpClient_1 = require(\"./DefaultHttpClient\");\r\nexports.DefaultHttpClient = DefaultHttpClient_1.DefaultHttpClient;\r\nvar HubConnection_1 = require(\"./HubConnection\");\r\nexports.HubConnection = HubConnection_1.HubConnection;\r\nexports.HubConnectionState = HubConnection_1.HubConnectionState;\r\nvar HubConnectionBuilder_1 = require(\"./HubConnectionBuilder\");\r\nexports.HubConnectionBuilder = HubConnectionBuilder_1.HubConnectionBuilder;\r\nvar IHubProtocol_1 = require(\"./IHubProtocol\");\r\nexports.MessageType = IHubProtocol_1.MessageType;\r\nvar ILogger_1 = require(\"./ILogger\");\r\nexports.LogLevel = ILogger_1.LogLevel;\r\nvar ITransport_1 = require(\"./ITransport\");\r\nexports.HttpTransportType = ITransport_1.HttpTransportType;\r\nexports.TransferFormat = ITransport_1.TransferFormat;\r\nvar Loggers_1 = require(\"./Loggers\");\r\nexports.NullLogger = Loggers_1.NullLogger;\r\nvar JsonHubProtocol_1 = require(\"./JsonHubProtocol\");\r\nexports.JsonHubProtocol = JsonHubProtocol_1.JsonHubProtocol;\r\n\n},{\"./DefaultHttpClient\":30,\"./Errors\":31,\"./HttpClient\":33,\"./HubConnection\":35,\"./HubConnectionBuilder\":36,\"./IHubProtocol\":37,\"./ILogger\":38,\"./ITransport\":39,\"./JsonHubProtocol\":40,\"./Loggers\":41}],50:[function(require,module,exports){\n'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n},{}],51:[function(require,module,exports){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n},{\"base64-js\":50,\"ieee754\":53}],52:[function(require,module,exports){\n/* flatpickr v4.5.7, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\"\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var do_nothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: do_nothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum) {\n var weekNumber = parseInt(weekNum);\n return new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: do_nothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: do_nothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var date_orig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + date_orig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var min_hr = self.config.minDate.getHours();\n var min_minutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, min_hr);\n if (hours === min_hr)\n minutes = Math.max(min_minutes, minutes);\n if (hours === min_hr && minutes === min_minutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var max_hr = self.config.maxDate.getHours();\n var max_minutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, max_hr);\n if (hours === max_hr)\n minutes = Math.min(max_minutes, minutes);\n if (hours === max_hr && minutes === max_minutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.static)\n bind(self._input, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"click\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n */\n function jumpToDate(jumpDate) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement = createElement(\"span\", \"cur-month\");\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\");\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\");\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, is_offset) {\n if (is_offset === void 0) { is_offset = true; }\n var delta = is_offset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else\n self.open();\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ].filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n if (target !== undefined) {\n e.preventDefault();\n target.focus();\n }\n else if (e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n }\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n triggerEvent(\"onKeyDown\", e);\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime()), lastDate = self.daysContainer.lastChild\n .lastChild.dateObj.getTime();\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < lastDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var prevMonth = self.daysContainer.children[m - 1];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate < self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (month.contains(elem) ||\n !(m > 0 &&\n prevMonth &&\n prevMonth.lastChild.dateObj.getTime() >= timestamp)) {\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), false);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : flatpickr.defaultConfig.dateFormat +\n \" H:i\" +\n (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : flatpickr.defaultConfig.altFormat +\n (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear)\n triggerEvent(\"onYearChange\");\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\")\n Object.assign(self.config, option);\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj = self.selectedDates[0];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.input.className + \" \" + self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) +\n \" \";\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.selectedDates.length === 0)\n return self.clear(triggerChange);\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n e.preventDefault();\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = defaults;\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n\n},{}],53:[function(require,module,exports){\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n},{}],54:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n},{}],55:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],56:[function(require,module,exports){\n(function (setImmediate,clearImmediate){\nvar nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n}).call(this,require(\"timers\").setImmediate,require(\"timers\").clearImmediate)\n},{\"process/browser.js\":55,\"timers\":56}],57:[function(require,module,exports){\nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n},{}],58:[function(require,module,exports){\n(function (process,global){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./support/isBuffer\":57,\"_process\":55,\"inherits\":54}]},{},[1]);\n"]}