{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./react-hawksearch/dist/esm/react-hawksearch.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./hsassets/src/js/react/util/helper.js","webpack:///./hsassets/src/js/react/widgets/hawksearch-box.tsx","webpack:///./hsassets/src/js/react/util/DynamicItemUtils.js","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/PageNode.tsx","webpack:///./hsassets/src/js/react/components/SubsequentActions.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/EnforcementDocument.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/InspectionReport.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/NewsRelease.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/OtherUpdate.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Document.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/DeniedIssuerAuditClient.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/SupportingDocumentation.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/GlobalNetworkFirm.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/StandardsAndInterpretations.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/PcaobOperationsDocument.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/SpeechAndStatement.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/RulemakingDocket.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/GlobalNetwork.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/PcaobEvent.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Biography.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/RegisteredFirms.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/Amendments.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/AuditClientAndReport.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/ResponsibilityNotDivided.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/ResponsibilityDivided.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/FormAPFilingDetails.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/ChinaBasedReferredWork.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/DeniedIssuerAuditClient.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/FormAPFiling/index.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeComponents/Default/index.tsx","webpack:///./hsassets/src/js/react/components/ContentTypeDynamicItem.tsx","webpack:///./hsassets/src/js/react/widgets/hawksearch-results.tsx","webpack:///./hsassets/src/js/react/index.tsx"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","e","Promise","resolve","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","oe","err","console","error","jsonpArray","window","oldJsonpFunction","slice","_typeof","obj","iterator","constructor","_defineProperty","configurable","writable","_objectSpread","target","arguments","source","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","forEach","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_inherits","subClass","superClass","consoleLogger","type","log","args","this","output","warn","baseLogger","Logger","concreteLogger","options","undefined","init","prefix","logger","debug","bool","_len","Array","_key","forward","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","EventEmitter","observers","events","listener","_this","split","event","cloned","observer","_cloned","defer","res","rej","promise","reject","makeString","copy","a","getLastOfPath","path","Empty","cleanKey","indexOf","replace","canNotTraverseDeeper","stack","k","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","prop","String","regexEscape","str","_entityMap","escape","isIE10","navigator","userAgent","ResourceStore","_EventEmitter","defaultNS","keySeparator","index","lng","silent","addNamespaces","emit","resources","toString","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","handle","translator","processor","process","checkedLoadedFor","Translator","services","language","interpolation","resolved","nsSeparator","namespaces","match","interpolator","nestingRegexp","parts","join","lastKey","_this2","overloadTranslationOptionHandler","isArray","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","toLowerCase","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy$$1","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","isValidLookup","defaultValue","count","suffix","pluralResolver","getSuffix","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","missingKeyHandler","backendConnector","saveMissing","needsPluralHandling","saveMissingPlurals","getPluralFormsOfKey","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","parse","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsContextHandling","context","codes","utils","hasLoadedNamespace","code","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","pop","returnNull","returnEmptyString","resourceStore","capitalize","string","charAt","toUpperCase","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","map","part","cleanCode","deprecate","isSupportedCode","load","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","find","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","Number","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","createRules","rules","set","numbers","plurals","PluralResolver","rule","getRule","ret","idx","noAbs","Math","abs","simplifyPluralSuffix","returnSuffix","prepend","compatibilityJSON","Interpolator","format","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","RegExp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","val","handleFormat","trim","f","missingInterpolationHandler","regex","safeValue","todo","exec","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","JSON","formatters","doReduce","includes","test","elem","reduce","v","Connector","backend","store","state","queue","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loaded","errors","addResourceBundle","q","_getLastOfPath2","arr","what","remove","done","fcName","tried","wait","setTimeout","read","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","initImmediate","nonExplicitWhitelist","preload","pluralSeparator","partialBundledLanguages","tDescription","_format","transformOptions","noop","i18next","I18n","external","isInitialized","isClone","createClassOnDemand","ClassOrObject","lu","on","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","changeLanguage","usedCallback","append","Error","isLanguageChangingTo","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","async","detect","fixedT","opts","rest","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","clone","membersToCopy","globalThis","global","commonjsRequire","createCommonjsModule","fn","classCallCheck","_defineProperties$1","createClass","enumerableOnly","symbols","_objectSpread$1","getOwnPropertyDescriptors","defineProperties","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","React__default","createContext","getDefaults","ReportNamespaces","usedNamespaces","getI18n","initReactI18next","setDefaults","react","setI18n","_console","alreadyWarned","warnOnce","Date","loadNamespaces","i18n","cb","initialized","off","arrayWithHoles","iterableToArrayLimit","_arr","_n","_d","_e","_s","_i","next","arrayLikeToArray","len","arr2","unsupportedIterableToArray","minLen","from","nonIterableRest","slicedToArray","ownKeys$1","_objectSpread$2","useTranslation","i18nFromProps","_ref","useContext","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","ready","i18nOptions","addUsedNamespaces","initializedStoreOnce","every","getT","getFixedT","nsMode","_useState","useState","_useState2","setT","isMounted","useRef","useEffect","boundReset","current","use","response_error_generic","ConfigContext","ConfigProvider","config","children","assetPath","startsWith","endsWith","__webpack_public_path__","createElement","Provider","useHawkConfig","_arrayLikeToArray$1","_unsupportedIterableToArray$1","_slicedToArray$1","_arrayWithHoles$1","_iterableToArrayLimit$1","_nonIterableRest$1","regenerator","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","method","arg","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","then","unwrapped","undefined$1","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","iter","reverse","skipTempReset","prev","stop","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","thisArg","isObject","isFunction","isArrayBuffer","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","document","merge","assignValue","extend","b","createError","message","request","response","enhanceError","encode","encodeURIComponent","ignoreDuplicateOf","isURLSameOrigin","originURL","msie","urlParsingNode","resolveURL","url","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","location","requestURL","parsed","cookies","write","expires","domain","secure","cookie","toGMTString","decodeURIComponent","now","xhr","requestData","requestHeaders","headers","XMLHttpRequest","auth","username","password","Authorization","btoa","open","params","paramsSerializer","serializedParams","toISOString","stringify","buildURL","timeout","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","line","substr","responseType","responseText","statusText","validateStatus","settle","onerror","ontimeout","cookies$1","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","cancel","abort","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","transformRequest","normalizedName","normalizeHeaderName","transformResponse","maxContentLength","common","defaults_1","InterceptorManager","handlers","rejected","eject","id","h","InterceptorManager_1","transformData","fns","isCancel","__CANCEL__","throwIfCancellationRequested","throwIfRequested","dispatchRequest","baseURL","relativeURL","reason","Axios","instanceConfig","interceptors","chain","interceptor","unshift","Axios_1","Cancel","Cancel_1","CancelToken","executor","resolvePromise","token","CancelToken_1","createInstance","defaultConfig","axios","all","promises","spread","axios_1","default_1","default","FacetSelectionState","axios$1","_createForOfIteratorHelper","allowArrayLike","it","_arrayLikeToArray$2","_unsupportedIterableToArray$2","F","normalCompletion","didErr","step","_e2","RuleType","RuleOperatorType","SearchStore","initial","assign","facet","facetValue","facetName","Name","facetField","selectionField","valueValue","Value","valueLabel","Label","NotSelected","facetSelections","pendingSearch","FacetSelections","selectionIdx","negationIdx","Selected","selectedValue","selectionIndex","Negated","selectionValue","facetValues","matchingValue","_step","_iterator","findMatchingValue","Children","isLoading","searchResults","_this$pendingSearch","clientSelections","SearchWithin","selections","facets","Facets","searchWithin","label","items","fieldName","selectionValues","FieldType","matchingVal","Values","HawkClient","baseUrl","apiUrl","dashboardUrl","searchUrl","autocompleteUrl","_autocomplete","_search","_callee","cancellationToken","_context","post","URL","_x","_x2","_callee2","_context2","_x3","_x4","Pagination","Items","PaginationItem","Result","field","Document","Sorting","SortingItem","Selections","selFacet","SelectionFacet","SelectionFacetValue","Swatch","Range","Facet","SwatchData","Ranges","DisplayType","TruncateThreshold","ScrollThreshold","IsSearch","SearchThreshold","ParamName","Field","Rule","Parent","Rules","BannerTrigger","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","ContentType","E_T","P_T","SuggestType","SearchType","FeaturedItems","FeaturedItem","Merchandising","MerchandisingItem","PageContentItem","Trigger","_PageContentItem","_super","_PageContentItem2","_super2","PageContent","Response","Results","ownKeys$2","_objectSpread$3","TrackEventNameMapping","Click","Cart","CopyRequestTracking","RequestTracking","Search","Sale","RecommendationImpression","RecommendationClick","Rate","PageLoad","Identify","BannerImpression","BannerClick","AutocompleteClick","Add2CartMultiple","Add2Cart","AvailableEvents","TrackingEvent","trackingURL","guid","clientGUID","getClientGUID","trackConfig","setTime","getTime","toUTCString","floor","random","nameEQ","ca","substring","expiry","pageType","documentElement","pl","EventType","pageLoad","EventData","PageTypeId","RequestPath","Qs","ViewportHeight","clientHeight","ViewportWidth","clientWidth","mr","trackingId","typeId","createGuid","Initial","setCookie","queryId","getCookie","QueryId","TrackingId","TypeId","uniqueId","click","Url","UniqueId","bannerId","campaignId","bannerClick","CampaignId","BannerId","bannerImpression","orderNo","itemList","total","subTotal","tax","currency","sale","OrderNo","ItemList","Total","Tax","SubTotal","Currency","price","quantity","addToCart","Quantity","Price","add2CartMultiple","ItemsList","rate","widgetGuid","itemIndex","requestId","recommendationClick","ItemIndex","RequestId","WidgetGuid","keyword","suggestType","autoCompleteClick","Keyword","visitId","visitorId","getVisitExpiry","getVisitorExpiry","ClientGuid","VisitId","VisitorId","fetch","body","eventName","writePageLoad","writeSearchTracking","writeClick","writeBannerClick","writeBannerImpression","writeSale","writeAdd2Cart","writeAdd2CartMultiple","writeRate","writeRecommendationClick","writeAutoCompleteClick","Boolean","TrackingEvent$1","getInstance","_createForOfIteratorHelper$1","_arrayLikeToArray$3","_unsupportedIterableToArray$3","ownKeys$3","_objectSpread$4","useHawkState","initialSearch","initialValue","typeConstructor","setState","client","_useMergableState","prevState","newState","_useMergableState2","setStore","searchParams","IsInPreview","isInPreview","clientGuid","CustomUrl","additionalParameters","applySearchParamsContext","searchParamsValid","t0","requestError","Success","track","Refinement","setSearch","doHistory","setSearchSelections","PageNo","configuration","indexName","IndexName","indexNameRequired","cts","actor","toggleFacetValue","negate","_store$isFacetSelecte","isFacetSelected","selState","setFacetValues","_facetValue","clearFacet","clearFacetValue","_store$isFacetSelecte2","clearAllFacets","HawkContext","StoreProvider","_useHawkState2","useHawkSearch","HawkSearch","trackEventUrl","setTrackingURL","setClientGUID","_extends","moment","hookCallback","some","hooks","input","hasOwnProp","isObjectEmpty","getOwnPropertyNames","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","to","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","func","localeData","formatMoment","expandFormat","array","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createDate","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","w","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","diff","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","base","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isMomentInput","arrayTest","dataTypeTest","item","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","keepOffset","inspect","zone","isLocal","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","accentMap","ẚ","Á","á","À","à","Ă","ă","Ắ","ắ","Ằ","ằ","Ẵ","ẵ","Ẳ","ẳ","Â","â","Ấ","ấ","Ầ","ầ","Ẫ","ẫ","Ẩ","ẩ","Ǎ","ǎ","Å","å","Ǻ","ǻ","Ä","ä","Ǟ","ǟ","Ã","ã","Ȧ","ȧ","Ǡ","ǡ","Ą","ą","Ā","ā","Ả","ả","Ȁ","ȁ","Ȃ","ȃ","Ạ","ạ","Ặ","ặ","Ậ","ậ","Ḁ","ḁ","Ⱥ","ⱥ","Ǽ","ǽ","Ǣ","ǣ","Ḃ","ḃ","Ḅ","ḅ","Ḇ","ḇ","Ƀ","ƀ","ᵬ","Ɓ","ɓ","Ƃ","ƃ","Ć","ć","Ĉ","ĉ","Č","č","Ċ","ċ","Ç","ç","Ḉ","ḉ","Ȼ","ȼ","Ƈ","ƈ","ɕ","Ď","ď","Ḋ","ḋ","Ḑ","ḑ","Ḍ","ḍ","Ḓ","ḓ","Ḏ","ḏ","Đ","đ","ᵭ","Ɖ","ɖ","Ɗ","ɗ","Ƌ","ƌ","ȡ","ð","É","Ə","Ǝ","ǝ","é","È","è","Ĕ","ĕ","Ê","ê","Ế","ế","Ề","ề","Ễ","ễ","Ể","ể","Ě","ě","Ë","ë","Ẽ","ẽ","Ė","ė","Ȩ","ȩ","Ḝ","ḝ","Ę","ę","Ē","ē","Ḗ","ḗ","Ḕ","ḕ","Ẻ","ẻ","Ȅ","ȅ","Ȇ","ȇ","Ẹ","ẹ","Ệ","ệ","Ḙ","ḙ","Ḛ","ḛ","Ɇ","ɇ","ɚ","ɝ","Ḟ","ḟ","ᵮ","Ƒ","ƒ","Ǵ","ǵ","Ğ","ğ","Ĝ","ĝ","Ǧ","ǧ","Ġ","ġ","Ģ","ģ","Ḡ","ḡ","Ǥ","ǥ","Ɠ","ɠ","Ĥ","ĥ","Ȟ","ȟ","Ḧ","ḧ","Ḣ","ḣ","Ḩ","ḩ","Ḥ","ḥ","Ḫ","ḫ","H","ẖ","Ħ","ħ","Ⱨ","ⱨ","Í","í","Ì","ì","Ĭ","ĭ","Î","î","Ǐ","ǐ","Ï","ï","Ḯ","ḯ","Ĩ","ĩ","İ","Į","į","Ī","ī","Ỉ","ỉ","Ȉ","ȉ","Ȋ","ȋ","Ị","ị","Ḭ","ḭ","I","ı","Ɨ","ɨ","Ĵ","ĵ","J","ǰ","ȷ","Ɉ","ɉ","ʝ","ɟ","ʄ","Ḱ","ḱ","Ǩ","ǩ","Ķ","ķ","Ḳ","ḳ","Ḵ","ḵ","Ƙ","ƙ","Ⱪ","ⱪ","Ĺ","ĺ","Ľ","ľ","Ļ","ļ","Ḷ","ḷ","Ḹ","ḹ","Ḽ","ḽ","Ḻ","ḻ","Ł","ł","Ŀ","ŀ","Ƚ","ƚ","Ⱡ","ⱡ","Ɫ","ɫ","ɬ","ɭ","ȴ","Ḿ","ḿ","Ṁ","ṁ","Ṃ","ṃ","ɱ","Ń","ń","Ǹ","ǹ","Ň","ň","Ñ","ñ","Ṅ","ṅ","Ņ","ņ","Ṇ","ṇ","Ṋ","ṋ","Ṉ","ṉ","Ɲ","ɲ","Ƞ","ƞ","ɳ","ȵ","N","Ó","ó","Ò","ò","Ŏ","ŏ","Ô","ô","Ố","ố","Ồ","ồ","Ỗ","ỗ","Ổ","ổ","Ǒ","ǒ","Ö","ö","Ȫ","ȫ","Ő","ő","Õ","õ","Ṍ","ṍ","Ṏ","ṏ","Ȭ","ȭ","Ȯ","ȯ","Ȱ","ȱ","Ø","ø","Ǿ","ǿ","Ǫ","ǫ","Ǭ","ǭ","Ō","ō","Ṓ","ṓ","Ṑ","ṑ","Ỏ","ỏ","Ȍ","ȍ","Ȏ","ȏ","Ơ","ơ","Ớ","ớ","Ờ","ờ","Ỡ","ỡ","Ở","ở","Ợ","ợ","Ọ","ọ","Ộ","ộ","Ɵ","ɵ","Ṕ","ṕ","Ṗ","ṗ","Ᵽ","Ƥ","ƥ","P","ʠ","Ɋ","ɋ","Ŕ","ŕ","Ř","ř","Ṙ","ṙ","Ŗ","ŗ","Ȑ","ȑ","Ȓ","ȓ","Ṛ","ṛ","Ṝ","ṝ","Ṟ","ṟ","Ɍ","ɍ","ᵲ","ɼ","Ɽ","ɽ","ɾ","ᵳ","ß","Ś","ś","Ṥ","ṥ","Ŝ","ŝ","Š","š","Ṧ","ṧ","Ṡ","ṡ","ẛ","Ş","ş","Ṣ","ṣ","Ṩ","ṩ","Ș","ș","ʂ","S","Þ","þ","Ť","ť","T","ẗ","Ṫ","ṫ","Ţ","ţ","Ṭ","ṭ","Ț","ț","Ṱ","ṱ","Ṯ","ṯ","Ŧ","ŧ","Ⱦ","ⱦ","ᵵ","ƫ","Ƭ","ƭ","Ʈ","ʈ","ȶ","Ú","ú","Ù","ù","Ŭ","ŭ","Û","û","Ǔ","ǔ","Ů","ů","Ü","ü","Ǘ","ǘ","Ǜ","ǜ","Ǚ","ǚ","Ǖ","ǖ","Ű","ű","Ũ","ũ","Ṹ","ṹ","Ų","ų","Ū","ū","Ṻ","ṻ","Ủ","ủ","Ȕ","ȕ","Ȗ","ȗ","Ư","ư","Ứ","ứ","Ừ","ừ","Ữ","ữ","Ử","ử","Ự","ự","Ụ","ụ","Ṳ","ṳ","Ṷ","ṷ","Ṵ","ṵ","Ʉ","ʉ","Ṽ","ṽ","Ṿ","ṿ","Ʋ","ʋ","Ẃ","ẃ","Ẁ","ẁ","Ŵ","ŵ","ẘ","Ẅ","ẅ","Ẇ","ẇ","Ẉ","ẉ","Ẍ","ẍ","Ẋ","ẋ","Ý","ý","Ỳ","ỳ","Ŷ","ŷ","Y","ẙ","Ÿ","ÿ","Ỹ","ỹ","Ẏ","ẏ","Ȳ","ȳ","Ỷ","ỷ","Ỵ","ỵ","ʏ","Ɏ","ɏ","Ƴ","ƴ","Ź","ź","Ẑ","ẑ","Ž","ž","Ż","ż","Ẓ","ẓ","Ẕ","ẕ","Ƶ","ƶ","Ȥ","ȥ","ʐ","ʑ","Ⱬ","ⱬ","Ǯ","ǯ","ƺ","B","F","J","N","R","V","Z","b","f","j","n","r","v","z","A","E","I","M","Q","U","Y","a","e","i","m","q","u","y","D","H","L","P","T","X","d","h","l","p","t","x","C","G","K","O","S","W","c","g","k","o","s","w","removeAccent","generateBoldedTitle","stringToMatch","withBold","stringToMatchNoAccents","filteredSub","filteredSubb","withBoldWithoutAccent","originalStringPosition","originalLetter","convertedLetter","boldResults","wordsToMatch","substringWordsToMatch","wordMatchIndex","valuePart","substringWordMatchIndex","replacedValue","formatDate","dayFormat","dateMonth","dateDay","AutoSuggestFilers","query","className","boldedTitle","getDocumentValue","boldedCik","withAdditionalZeros","padZerosToString","boldedTicker","boldedSubtitle","dangerouslySetInnerHTML","__html","AutoSuggestPartners","partnerTitleFormatted","firmTitleFormatted","matchingPartnerName","partnerNamesArray","alternatePartnerName","matchOtherPartnerNames","engagementpartnerothernames","AutoSuggestFirms","boldedFirmId","boldedCountry","secFilersParams","FieldOverride","contenttypetitle","engagementPartnersParams","accountingFirmsParams","AutoSuggest","results","setResults","_useState4","setIsLoading","_collectAutosuggestData","autosuggestData","allSettled","getAutosuggestContentFor","contentData","_x5","_getAutosuggestContentFor","contentParams","baseParams","contentTypeParams","MaxPerPage","FacetOverride","debounceMs","autocompleteDebounce","collectAutosuggestData","clearTimeout","_useTranslation","apiCall","itemType","component","SearchSuggestions","downshift","_doAutocomplete","DisplayFullResponse","autocomplete","deserializeField","doAutocomplete","content","Content","popular","Popular","getMenuProps","_getTitleAndUrlForCon2","_hawkResult$getDocume","hawkResult","contentType","contentLabel","resultTitle","resultUrl","extraLabels","decodedEnforceOrderDoc","docCountry","docEffectiveDate","mediaUrl","decodedName","deserializedDocketDoc","releaseDate","title","deserializedReport","reportCountry","reportEffectiveDate","deserializedDocument","getTitleAndUrlForContentType","additionalLabels","onClick","keywords","SearchSVG","viewBox","focusable","ownKeys$4","_objectSpread$5","Downshift","lazy","SearchBoxBase","onSubmit","isAuditorSearch","searchTermExists","Suspense","fallback","stateReducer","changes","inputValue","itemToString","ProductName","onChange","initialInputValue","isOpen","getInputProps","openMenu","showSuggestions","style","width","onKeyDown","onFocus","placeholder","fnUseDropdown","GlobalSearchBox","searchPageUrl","redirect","SearchBox","_useHawkSearch","PageId","currentTarget","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","PlusSVG","MinusSVG","QuestionmarkSVG","FacetContext","Facet$1","searchActor","wrapperRef","setFilter","shouldTruncate","isTruncated","setTruncated","_useState6","IsCollapsible","IsCollapsedDefault","isCollapsed","setCollapsed","hidePageFacet","shouldSearch","remainingFacets","valuesBeforeTrunc","selectFacet","negateFacet","setFacets","decimalPrecision","renderer","renderTruncation","Fragment","facetTruncateLimit","contains","toggleCollapsible","Tooltip","ref","useFacet","PlaceholderFacetValue","PlaceholderFacet","numValues","_","CheckmarkSVG","SecondarySearchFacet","searchString","hideFacet","setHideFacet","urlSearchString","urlPath","urlOrigin","origin","urlParams","newParams","parent","clearSecondarySearch","DashCircleSVG","fill","PlusCircleSVG","formatDate$1","unixFormat","SliderCalendarInputs","sliderProps","minValue","setMinValue","maxValue","setMaxValue","newMinValue","onValueChange","newMaxValue","Rheostat","formatDate$2","replaceHyphen","SliderDate","_useFacet","_useFacet$state","range","RangeMin","rangeMin","setMinRange","RangeMax","rangeMax","setMaxRange","RangeStart","rangeStart","setStartRange","_useState8","RangeEnd","rangeEnd","setEndRange","_useState10","_useState12","paramName","newRange","minVal","maxVal","formattedMinVal","formattedMaxVal","selection","currentMinValue","currentMaxValue","onValuesUpdated","_state$values","newMin","newMax","_state$values2","_defineProperties$2","_extends$1","_getPrototypeOf$1","_setPrototypeOf$1","_assertThisInitialized$1","emptyFunction","emptyFunctionWithReset","resetWarningCache","propTypes","createCommonjsModule$1","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","factoryWithThrowingShims","noop$1","charIsNumber","_char","escapeRegExp","splitDecimal","numStr","allowNegative","hasNagation","addNegation","beforeDecimal","afterDecimal","limitToScale","scale","fixedDecimalScale","filler","setCaretPosition","el","caretPos","createTextRange","move","select","selectionStart","focus","setSelectionRange","clamp","num","getCurrentCaretPosition","selectionEnd","propTypes$1","thousandSeparator","decimalSeparator","allowedDecimalSeparators","thousandsGroupStyle","decimalScale","displayType","removeFormatting","mask","isNumericString","customInput","allowEmptyFormatting","allowLeadingZeros","onMouseUp","onBlur","isAllowed","renderText","getInputRef","defaultProps","NumberFormat","_React$Component","_classCallCheck$2","_possibleConstructorReturn$1","validateProps","formattedValue","formatValueProp","numAsString","selectionBeforeInput","_inherits$1","prevProps","updateValueIfRequired","focusedElm","stateValue","_state$numAsString","lastNumStr","lastValueWithNewFormat","formatNumString","floatValue","lastFloatValue","updateValue","_this$getSeparators","getSeparators","numRegex","getNumberRegex","hasNegation","firstDecimalIndex","g","ignoreDecimalSeparator","_this$props","_this$props2","_this$props$mask","_this$getSeparators3","currentValue","_this$props3","firstHashPosition","lastIndexOf","nextPos","caretLeftBound","caretRightBound","inputNumber","formattedNumber","currentInputChar","currentFormatChar","correctCaretPosition","_this$props4","isNegative","suffixLastIndex","formatArray","start","ln","_this$props5","removePatternFormatting","removePrefixAndSuffix","getFloatString","hashCount","formattedNumberAry","getMaskAtIndex","_this$props6","_this$getSeparators4","hasDecimalSeparator","_splitDecimal","thousandsGroupRegex","getThousandsGroupRegex","applyThousandSeparator","_this$props7","formatWithPattern","formatAsNumber","_this$props8","_this$props9","_this$props9$value","isNonNumericFalsy","shoudHaveDecimalSeparator","roundedDecimalParts","intPart","roundedStr","decimalPart","roundToPrecision","formatInput","negationRegex","doubleNegationRegex","removeNegation","formatNegation","_this$props10","end","isCharacterAFormat","lastValue","_this$props11","_this$getSeparators6","_this$selectionBefore","_findChangedIndex","prevValue","prevLength","newLength","findChangedIndex","leftBound","rightBound","checkIfFormatGotDeleted","numericString","_splitDecimal2","isBeforeDecimalPoint","_params$setCaretPosit","currentCaretPosition","getCaretPosition","setPatchedCaretPosition","getValueObject","correctInputValue","focusTimeout","fixLeadingZero","expectedCaretPosition","_el$value","_this$props12","negativeRegex","isPatternFormat","newCaretPosition","preventDefault","isUnitTestRun","_el$value2","caretPosition","persist","_el$value3","keyMaps","filteredObj","_this$props13","otherProps","inputProps","inputMode","CustomInput","Component","SliderNumericInputs","reloadFacets","isCurrency","currencySymbol","FacetType","Rheostat$1","SliderNumeric","_useState14","IsCurrency","isCurency","setIsCurrency","_useState16","CurrencySymbol","setCurrencySymbol","selectedValues","SwatchItem","swatchValue","swatchUrl","facetSwatch","AssetUrl","AssetName","colorSwatchStyle","backgroundColor","Color","listItemClassNames","isSelected","isNegated","onSwatchSelected","isColor","src","alt","NestedItem","isExpanded","setIsExpanded","setIsTruncated","hierarchyValue","hierarchyChildren","remainingValues","shouldTruncateChildren","onValueSelected","textDecoration","Count","selectionState","Path","formatDate$3","replaceHyphen$1","defaultFacetComponents","facetType","Checkbox","wrapperClasses","renderCheckMark","renderFacetActions","shouldScroll","styles","scrollHeight","ScrollHeight","height","facetValuesWrapperStyle","correspondingRange","rangeValueAssetUrl","AssetFullUrl","tabIndex","checked","role","NestedCheckbox","hawkActor","setInput","description","Link","Slider","DataType","OpenRange","daterange","rangeStartDate","rangeEndDate","minDateValue","setdateStartValue","maxDateValue","setdateEndValue","setStartValue","setEndValue","startVal","endVal","setdateFacetValues","FacetList","numPlaceholders","components","overridedComponents","facetComponents","_loop","fType","fComponent","getFacetComponents","facetOverrides","secondarySearch","IsVisible","registeredComponent","FacetId","FacetRail","XCircleSVG","Selections$1","_useHawkSearch$store","isEngagementPartnerPage","isIssuerPage","isFirmPage","hideClearButton","clearSelection","selectionCat","hideSelection","negation","_split2","startDate","endDate","displayValue","selectedRange","splittedValues","renderRange","renderLabel","SearchResultsLabel","Sorting$1","SortBy","sortingItem","selected","LeftChevronSVG","RightChevronSVG","Pager","page","totalPages","onPageChange","setInputValue","hasError","setHasError","goToPage","pageNo","doInputError","onInput","wantedPageNo","ItemsPerPage","paginationItem","PageSize","Pagination$1","NofPages","ToolRow","PlaceholderImage","showSpinner","PlaceholderItem","Spinner","isVisible","ResultImage","websiteUrl","itemTitleFieldName","imageUrlFieldName","imageLoaded","setImageLoaded","imageUrl","itemName","onLoad","ResultItem","ownKeys$5","_objectSpread$6","ResultHeader","headeritem","entityResult","entityData","setEntityData","entityDataLoaded","setEntityDataLoaded","storedIssuerId","setStoredIssuerId","getEntityHeaderData","_getEntityHeaderData","facetData","entityParams","filteredResults","DocId","firmid","firmname","encodedfirmid","firmcountry","engagementPartnerAllIds","_filteredResults","engagementpartnerid","engagementpartnerotherids","engagementpartnermasterid","engagementpartnername","urlParamIssuerCik","_filteredResults2","issuerid","issuercik","issuername","issuerticker","ResultListing","currentSearch","_ref$ResultItem","ResultItem$1","toggle","listingClass","checkNetworks","_globalNetworks","network","anyResultsHaveParticipatingFirmInfo","toggleParticipatingFirms","setToggleParticipatingFirms","paramExists","NofResults","isAbsolute","spliceOne","list","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","resolvePathname","canUseDOM","getConfirmation","confirm","getHistoryState","history","condition","invariant","ua","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","getUserConfirmation","_props$keyLength","keyLength","basename","stripTrailingSlash","getDOMLocation","historyState","_window$location","hasBasename","stripBasename","createKey","prompt","listeners","transitionManager","setPrompt","nextPrompt","confirmTransitionTo","action","appendListener","isActive","notifyListeners","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","createPath","listenerCount","checkDOMListeners","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","createBrowserHistory","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","ownKeys$6","_createForOfIteratorHelper$2","_arrayLikeToArray$4","_unsupportedIterableToArray$4","parseLocation","searchRequest","parseSearchQueryString","checkIfUrlRefsLandingPage","queryObj","multipleValues","parseQueryStringToObject","pg","mpp","lp","lpurl","is100Coverage","pageId","Is100CoverageTurnedOn","getSearchQueryString","queryStringValues","escapedValues","unescapedValue","convertObjectToQueryString","_objectSpread$7","doSearch","QueryStringListener","webpackContext","req","webpackContextResolve","parseApiUrl","searchApi","autocompleteApi","getDashboardUrl","baseApi","querySelectorAll","getAttribute","apiUrlObj","hawkConfig","trackingEvents","replaceAll","translationsEl","translations","innerHTML","tConfig","SearcBox","ReactDOM","render","getField","tooltip","toggletip","liveRegion","nextElementSibling","keyCode","which","PageNode","Truncate","lines","ReactDOMServer","renderToString","SubsequentActions","setIsVisible","aria-label","EnforcementDocument","effectiveDateFormat","showEffectiveDate","boardActionDateFormat","releaseDateFormat","sanctionsCancelled","download","getSequentialDocuments","InspectionReport","dateDisplayFormat","data-toggletip-content","NewsRelease","OtherUpdate","DeniedIssuerAuditClient","SupportingDocumentation","nameData","GlobalNetworkFirm","StandardsAndInterpretations","originalUrl","finalUrl","PcaobOperationsDocument","SpeechAndStatement","RulemakingDocket","GlobalNetwork","finalHref","PcaobEvent","startDateDisplayFormat","endDateDisplayFormat","Biography","backgroundImage","RegisteredFirms","percentVisible","rect","windowWidth","showTooltip","setShowTooltip","tooltipRef","category","cat","aria-hidden","getBoundingClientRect","innerWidth","left","right","Amendments","partTwoAmendments","text","amendment","partThreeAmendments","disabled","AuditClientAndReport","fundSeries","showAllFundSeriesInfo","setShowAllFundSeriesInfo","issuerCik","auditFundSeries","secEngagementPartnerID","engagementPartnerOtherIDs","engagementPartnerOtherIDsConcat","firmLocation","auditDualDates","secEngagementPartnerName","secOtherEngagementPartnerIDs","secEngagementPartnerOtherIDsConcat","series","FundSeriesID","FundName","ResponsibilityNotDivided","auditNotDividedPercent","numberOfParticipants","participantRange","participantPercentage","firm","formattedLocation","City","State","Country","FirmName","FirmID","Percentage","ResponsibilityDivided","auditDividedInfo","DollarAmount","Criterion","OtherCriterion","AuditorName","toLocaleString","FormAPFilingDetails","issuerName","issuerTicker","issuerCikExists","engagementLink","firmLink","issuerLink","pdfLink","ChinaBasedReferredWork","filingAuditYear","filingAuditYearFormatted","filingId","originalFirmFormId","otherAccountingFirmParticipation","useRangeIndicator","titleHref","FormAPFiling","shouldToggle","expandedFirms","setExpandedFirms","formData","setFormData","formDataLoaded","setFormDataLoaded","activeFormIndex","setActiveFormIndex","urlString","otherParticpatingFirmInfo","divclass","activeForm","formParams","originalfirmformid","orderedResults","documentA","documentB","filingdate","doc","filingid","formatIssuerTickerandCik","tickerCikString","getFormFilingData","isCurrent","isLast","populateNewFormData","DefaultItem","ContentTypeDynamicItem","dynamicItem","pageurl","isAuditorSearchPage","isFormAPFilePage","showSearchBox","searchRequestWithoutIssuerIdProperty","hideAllFacets","hideQueryFacet","App","arrayForEachPolyfill","formatSettledResult","success","iterators","settledList","settledNum","catch","newStr","polyfillElement","head","appendChild","customPolyfills","ThemedStyleSheet","registerInterface","cssInterface","registerTheme","RheostatDefaultTheme","ReactDatesDefaultTheme"],"mappings":"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C,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,EAAG,IACH,IAAK,IACLC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHpkE,EAAG,IACHqkE,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,EAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,EAAG,IACH,IAAK,IACLC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACH,IAAK,IACLC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,EAAG,IACH,IAAK,IACLtnE,EAAG,IACHunE,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,EAAG,IACH,IAAK,IACLrsE,EAAG,IACHssE,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,EAAG,IACH,IAAK,IACL1xE,EAAG,IACH2xE,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,EAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHx3B,EAAG,IACH,IAAK,IACLy3B,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,EAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IAEH,IAAK,IACL,IAAK,IACLC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACH,IAAK,IACL,IAAK,IACL,IAAK,IACLC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACH,IAAK,IACL,IAAK,IACL,IAAK,IACLC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACHC,IAAG,IACH,IAAK,IACL,IAAK,IACLC,IAAG,IACHC,IAAG,IACHC,I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","file":"js/hsmain.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".bundle.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// The chunk loading function for additional chunks\n \t// Since all referenced chunks are already included\n \t// in this file, this function is empty here.\n \t__webpack_require__.e = function requireEnsure() {\n \t\treturn Promise.resolve();\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"hsassets/build/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"jsonpFunction\"] = window[\"jsonpFunction\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([356,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import React__default, { useContext, useState, useRef, useEffect, createElement } from 'react';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }, this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n object = object[key];\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n return getPath(this.data, path);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread({}, pack, resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS;\n\n if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy$$1 = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy$$1[m] = this.translate(deepKey, _objectSpread({}, options, {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy$$1[m] === deepKey) copy$$1[m] = res[m];\n }\n }\n\n res = copy$$1;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n\n if (!this.isValidLookup(res) && options.defaultValue !== undefined) {\n usedDefault = true;\n\n if (options.count !== undefined) {\n var suffix = this.pluralResolver.getSuffix(lng, options.count);\n res = options[\"defaultValue\".concat(suffix)];\n }\n\n if (!res) res = options.defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var updateMissing = options.defaultValue && options.defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? options.defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread({}, options, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k) {\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? options.defaultValue : res, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? options.defaultValue : res, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (l) {\n var plurals = _this2.pluralResolver.getPluralFormsOfKey(l, key);\n\n plurals.forEach(function (p) {\n return send([l], p);\n });\n });\n } else {\n send(lngs, key);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n }));\n var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0]) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKey = key;\n var finalKeys = [finalKey];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.whitelist = this.options.supportedLngs || false;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isWhitelisted\",\n value: function isWhitelisted(code) {\n this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n return this.isSupportedCode(code);\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var rule = this.getRule(code);\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var _this = this;\n\n var ret = [];\n var rule = this.getRule(code);\n if (!rule) return ret;\n rule.numbers.forEach(function (n) {\n var suffix = _this.getSuffix(code, n);\n\n ret.push(\"\".concat(key).concat(suffix));\n });\n return ret;\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var _this2 = this;\n\n var rule = this.getRule(code);\n\n if (rule) {\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }]);\n\n return PluralResolver;\n}();\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, options);\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n str = str.replace(match[0], todo.safeValue(value));\n todo.regex.lastIndex = 0;\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].includes(this.formatSeparator) && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, options);\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n whitelist: false,\n nonExplicitWhitelist: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: false\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.whitelist) {\n if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n options.whitelist = options.whitelist.concat(['cimode']);\n }\n\n options.supportedLngs = options.whitelist;\n }\n\n if (options.nonExplicitWhitelist) {\n options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n }\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (options.whitelist && !options.supportedLngs) {\n this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n if (!this.modules.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n _this2.changeLanguage(_this2.options.lng, function (err, t) {\n _this2.isInitialized = true;\n\n _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n });\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var done = function done(err, l) {\n if (l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n return _this5.t(key, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"createInstance\",\n value: function createInstance() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread({}, this.options, options, {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar _typeof_1 = createCommonjsModule(function (module) {\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\n});\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar defineProperty = _defineProperty$1;\n\nfunction _classCallCheck$1(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar classCallCheck = _classCallCheck$1;\n\nfunction _defineProperties$1(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass$1(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties$1(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties$1(Constructor, staticProps);\n return Constructor;\n}\n\nvar createClass = _createClass$1;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true\n};\nvar i18nInstance;\nvar I18nContext = React__default.createContext();\nfunction setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread$1(_objectSpread$1({}, defaultOptions), options);\n}\nfunction getDefaults() {\n return defaultOptions;\n}\nvar ReportNamespaces = function () {\n function ReportNamespaces() {\n classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nfunction setI18n(instance) {\n i18nInstance = instance;\n}\nfunction getI18n() {\n return i18nInstance;\n}\nvar initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\n\nfunction warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nfunction warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nfunction loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\nfunction hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nvar arrayWithHoles = _arrayWithHoles;\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nvar iterableToArrayLimit = _iterableToArrayLimit;\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nvar arrayLikeToArray = _arrayLikeToArray;\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nvar unsupportedIterableToArray = _unsupportedIterableToArray;\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar nonIterableRest = _nonIterableRest;\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nvar slicedToArray = _slicedToArray;\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nfunction useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n var i18nOptions = _objectSpread$2(_objectSpread$2(_objectSpread$2({}, getDefaults()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return {\n t: i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0])\n };\n }\n\n var _useState = useState(getT()),\n _useState2 = slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT());\n });\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT());\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [namespaces.join()]);\n var ret = [t.t, i18n, ready];\n ret.t = t.t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n resolve();\n });\n });\n}\n\n// TODO: move them in a JSON file and import them\n\nvar resources = {\n response_error_generic: 'An error occurred while searching for your results. Please contact the site administrator.'\n};\ni18next.use(initReactI18next) // passes i18n down to react-i18next\n.init({\n interpolation: {\n escapeValue: false // react already safes from xss\n\n },\n keySeparator: false,\n // we do not use keys in form messages.welcome\n lng: 'en',\n resources: resources\n});\n\nvar ConfigContext = /*#__PURE__*/React__default.createContext({});\n\nfunction ConfigProvider(_ref) {\n var config = _ref.config,\n children = _ref.children;\n\n if (config.assetPath) {\n var path = config.assetPath; // ensure the provided path both starts and ends with a slash\n\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n\n if (!path.endsWith('/')) {\n path = path + '/';\n } // allow consumers to tell webpack where to load code split/lazy loaded files from, as they may not be\n // hosting our JS from /assets/ (the default path)\n\n\n __webpack_public_path__ = path;\n }\n\n return /*#__PURE__*/React__default.createElement(ConfigContext.Provider, {\n value: {\n config: config\n }\n }, children);\n}\n\nfunction useHawkConfig() {\n var context = useContext(ConfigContext);\n\n if (!context.config) {\n throw new Error('No HawkSearchConfig is available, did you forget to wrap your components in a ConfigProvider component?');\n }\n\n return context;\n}\n\nfunction _arrayWithHoles$1(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit$1(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _arrayLikeToArray$1(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _unsupportedIterableToArray$1(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);\n}\n\nfunction _nonIterableRest$1() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray$1(arr, i) {\n return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest$1();\n}\n\nvar runtime_1 = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined$1; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined$1) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined$1;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined$1;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined$1, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined$1;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined$1;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined$1;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined$1;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n module.exports \n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n});\n\nvar regenerator = runtime_1;\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nvar bind = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nvar isBuffer = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n};\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nvar utils = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n\nvar normalizeHeaderName = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nvar enhanceError = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nvar createError = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nvar settle = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nvar buildURL = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nvar parseHeaders = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n\nvar isURLSameOrigin = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\nvar cookies = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\nvar xhr = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies$1 = cookies;\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies$1.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = xhr;\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = xhr;\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nvar defaults_1 = defaults;\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nvar InterceptorManager_1 = InterceptorManager;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nvar transformData = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n\nvar isCancel = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nvar isAbsoluteURL = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nvar combineURLs = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nvar dispatchRequest = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults_1.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager_1(),\n response: new InterceptorManager_1()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults_1, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nvar Axios_1 = Axios;\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nvar Cancel_1 = Cancel;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel_1(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nvar CancelToken_1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nvar spread = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios_1(defaultConfig);\n var instance = bind(Axios_1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios_1.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults_1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios_1;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults_1, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = Cancel_1;\naxios.CancelToken = CancelToken_1;\naxios.isCancel = isCancel;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = spread;\n\nvar axios_1 = axios;\n\n// Allow use of default import syntax in TypeScript\nvar default_1 = axios;\naxios_1.default = default_1;\n\nvar axios$1 = axios_1;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }\n\nfunction _arrayLikeToArray$2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar FacetSelectionState;\n\n(function (FacetSelectionState) {\n FacetSelectionState[FacetSelectionState[\"NotSelected\"] = 0] = \"NotSelected\";\n FacetSelectionState[FacetSelectionState[\"Selected\"] = 1] = \"Selected\";\n FacetSelectionState[FacetSelectionState[\"Negated\"] = 2] = \"Negated\";\n})(FacetSelectionState || (FacetSelectionState = {}));\n\nvar SearchStore = /*#__PURE__*/function () {\n /** This represents the next search request that will be executed. */\n\n /**\r\n * Whether or not the next search request will perform history actions (pushing the search into browser\r\n * history).\r\n */\n\n /** Whether or not a search request is waiting for completion. */\n\n /** The results of the last search request, if one has been performed. Otherwise, `undefined`. */\n function SearchStore(initial) {\n _classCallCheck(this, SearchStore);\n\n _defineProperty(this, \"pendingSearch\", void 0);\n\n _defineProperty(this, \"doHistory\", void 0);\n\n _defineProperty(this, \"isLoading\", void 0);\n\n _defineProperty(this, \"searchResults\", void 0);\n\n _defineProperty(this, \"requestError\", void 0);\n\n Object.assign(this, initial);\n }\n /**\r\n * Returns whether or not this is the initial load of the search results.\r\n */\n\n\n _createClass(SearchStore, [{\n key: \"isFacetSelected\",\n\n /**\r\n * Determines whether or not the given facet and facet value is selected, and returns info regarding the selection.\r\n * @param facet The facet for which the facet value will be checked for selection.\r\n * @param facetValue The facet value that will be checked for selection.\r\n */\n value: function isFacetSelected(facet, facetValue) {\n var facetName = typeof facet === 'string' ? facet : facet.Name;\n var facetField = typeof facet === 'string' ? facet : facet.selectionField;\n var valueValue = typeof facetValue === 'string' ? facetValue : facetValue.Value;\n var valueLabel = typeof facetValue === 'string' ? facetValue : facetValue.Label;\n\n if (!valueValue) {\n console.error(\"Facet \".concat(facetName, \" (\").concat(facetField, \") has no facet value for \").concat(valueLabel));\n return {\n state: FacetSelectionState.NotSelected\n };\n }\n\n var facetSelections = this.pendingSearch.FacetSelections;\n\n if (!facetSelections || !facetSelections[facetField]) {\n return {\n state: FacetSelectionState.NotSelected\n };\n }\n\n var selectionIdx = facetSelections[facetField].indexOf(valueValue);\n var negationIdx = facetSelections[facetField].indexOf(\"-\".concat(valueValue));\n\n if (selectionIdx !== -1) {\n // if the exact facet value exists, then we're normally selected\n return {\n state: FacetSelectionState.Selected,\n selectedValue: valueValue,\n selectionIndex: selectionIdx\n };\n } else if (negationIdx !== -1) {\n // if the facet value is selected but prefixed with a -, then we're negated\n return {\n state: FacetSelectionState.Negated,\n selectedValue: \"-\".concat(valueValue),\n selectionIndex: negationIdx\n };\n }\n\n return {\n state: FacetSelectionState.NotSelected\n };\n }\n /**\r\n * Returns an object containing the selections that have been made in both the next search request and also\r\n * in the previous search request. This should be used when iterating selections instead of pulling the values\r\n * out from the search result or pending search - as this will merge the values together and provide an accurate\r\n * view of all facet selections.\r\n */\n\n }, {\n key: \"findMatchingValue\",\n value: function findMatchingValue(selectionValue, facetValues) {\n var matchingValue = null;\n\n if (!facetValues || facetValues.length === 0) {\n return null;\n }\n\n var _iterator = _createForOfIteratorHelper(facetValues),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var facetValue = _step.value;\n var isMatchingVal = facetValue.Value === selectionValue || \"-\".concat(facetValue.Value) === selectionValue; // loop through children\n\n if (!isMatchingVal) {\n matchingValue = this.findMatchingValue(selectionValue, facetValue.Children);\n } else {\n matchingValue = facetValue;\n }\n\n if (matchingValue) {\n return matchingValue;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return matchingValue;\n }\n }, {\n key: \"isInitialLoad\",\n get: function get() {\n return this.isLoading && !this.searchResults;\n }\n }, {\n key: \"facetSelections\",\n get: function get() {\n var _this = this;\n\n var _this$pendingSearch = this.pendingSearch,\n clientSelections = _this$pendingSearch.FacetSelections,\n SearchWithin = _this$pendingSearch.SearchWithin,\n searchResults = this.searchResults;\n var selections = {};\n\n if (!clientSelections && !SearchWithin) {\n return selections;\n } // if we've made selections on the client, transform these into more detailed selections.\n // the client-side selections are just facet fields and values without any labels - so we\n // need to combine this information with the list of facets received from the server in the\n // previous search in order to return a rich list of selections\n\n\n var facets = searchResults ? searchResults.Facets : null;\n\n if (!facets) {\n // but we can only do this if we've received facet information from the server. without this\n // info we can't determine what labels should be used\n return selections;\n } // manually handle the `searchWithin` selection, as this doesn't usually behave like a normal facet selection\n // but instead a field on the search request\n\n\n if (SearchWithin) {\n var facet = facets.find(function (f) {\n return f.selectionField === 'searchWithin';\n });\n\n if (facet) {\n selections.searchWithin = {\n facet: facet,\n label: facet.Name,\n items: [{\n label: SearchWithin,\n value: SearchWithin\n }]\n };\n }\n }\n\n if (!clientSelections) {\n return selections;\n }\n\n Object.keys(clientSelections).forEach(function (fieldName) {\n var selectionValues = clientSelections[fieldName];\n\n if (!selectionValues) {\n // if this selection has no values, it's not really selected\n return;\n }\n\n var facet = facets.find(function (f) {\n return f.selectionField === fieldName;\n });\n\n if (!facet) {\n // if there's no matching facet from the server, we can't show this since we'll have no labels\n return;\n }\n\n var items = [];\n\n if (facet.FieldType === 'range') {\n // if the facet this selection is for is a range, there won't be a matching value and thus there won't be a label.\n // so because of this we'll just use the selection value as the label\n selectionValues.forEach(function (selectionValue) {\n items.push({\n label: selectionValue,\n value: selectionValue\n });\n });\n } else {\n // for other types of facets, try to find a matching value\n selectionValues.forEach(function (selectionValue) {\n var matchingVal = _this.findMatchingValue(selectionValue, facet.Values);\n\n if (!matchingVal || !matchingVal.Label) {\n // if there's no matching value from the server, we cannot display because there would\n // be no label - same if there's no label at all\n return;\n }\n\n items.push({\n label: matchingVal.Label,\n value: selectionValue\n });\n });\n }\n\n selections[fieldName] = {\n facet: facet,\n label: facet.Name,\n items: items\n };\n });\n return selections;\n }\n }]);\n\n return SearchStore;\n}();\n\nvar HawkClient = /*#__PURE__*/function () {\n function HawkClient(config) {\n _classCallCheck(this, HawkClient);\n\n _defineProperty(this, \"baseUrl\", void 0);\n\n _defineProperty(this, \"searchUrl\", void 0);\n\n _defineProperty(this, \"dashboardUrl\", void 0);\n\n _defineProperty(this, \"autocompleteUrl\", void 0);\n\n this.baseUrl = config.apiUrl || 'https://searchapi-dev.hawksearch.net';\n this.dashboardUrl = config.dashboardUrl || 'http://test.hawksearch.net/';\n this.searchUrl = config.searchUrl || '/api/v2/search';\n this.autocompleteUrl = config.autocompleteUrl || '/api/autocomplete';\n }\n\n _createClass(HawkClient, [{\n key: \"search\",\n value: function () {\n var _search = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(request, cancellationToken) {\n var result;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return axios$1.post(new URL(this.searchUrl, this.baseUrl).href, request, {\n cancelToken: cancellationToken\n });\n\n case 2:\n result = _context.sent;\n return _context.abrupt(\"return\", result.data);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function search(_x, _x2) {\n return _search.apply(this, arguments);\n }\n\n return search;\n }()\n }, {\n key: \"autocomplete\",\n value: function () {\n var _autocomplete = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2(request, cancellationToken) {\n var result;\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return axios$1.post(new URL(this.autocompleteUrl, this.baseUrl).href, request, {\n cancelToken: cancellationToken\n });\n\n case 2:\n result = _context2.sent;\n return _context2.abrupt(\"return\", result.data);\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function autocomplete(_x3, _x4) {\n return _autocomplete.apply(this, arguments);\n }\n\n return autocomplete;\n }()\n }]);\n\n return HawkClient;\n}();\n\nvar Pagination =\n/** Number of total items in the result set. */\n\n/** The page number returned. */\n\n/** The number of items returned for the page. */\n\n/** The total number of pages for the result set - with the current @see MaxPerPage. */\n\n/** Set of pagination options */\nfunction Pagination(init) {\n _classCallCheck(this, Pagination);\n\n _defineProperty(this, \"NofResults\", void 0);\n\n _defineProperty(this, \"CurrentPage\", void 0);\n\n _defineProperty(this, \"MaxPerPage\", void 0);\n\n _defineProperty(this, \"NofPages\", void 0);\n\n _defineProperty(this, \"Items\", void 0);\n\n Object.assign(this, init);\n this.Items = init.Items.map(function (i) {\n return new PaginationItem(i);\n });\n};\nvar PaginationItem =\n/** Display label for user's pagination option (i.e. 24 per page). */\n\n/** The maximum number of items that will be returned per page when this option is selected. */\n\n/** Indicates if this is the option selected. Only one pagination item will have this set to `true`. */\n\n/** Indicates if this is the default option. Only one pagination item will have this set to `true`. */\nfunction PaginationItem(init) {\n _classCallCheck(this, PaginationItem);\n\n _defineProperty(this, \"Label\", void 0);\n\n _defineProperty(this, \"PageSize\", void 0);\n\n _defineProperty(this, \"Selected\", void 0);\n\n _defineProperty(this, \"Default\", void 0);\n\n Object.assign(this, init);\n};\n\nvar Result = /*#__PURE__*/function () {\n _createClass(Result, [{\n key: \"getDocumentValue\",\n\n /** Unique identifier for this search result item. */\n\n /** Calculated relevancy score. */\n\n /**\r\n * Contains the fields for the search result item, as an object of string keys to an array\r\n * of string values. The keys correspond to the name of the field within the hawk dashboard,\r\n * and the value of the map is an array of strings for each of the values for that field.\r\n */\n\n /**\r\n * Returns a single document value, by the given field name. If the field does not exist in\r\n * the document, or has no values, then `undefined` is returned instead.\r\n * @param field The field within the result document to retrieve the value of.\r\n */\n value: function getDocumentValue(field) {\n if (this.Document) {\n var values = this.Document[field];\n\n if (values && values.length > 0) {\n return values[0];\n }\n }\n\n return undefined;\n }\n }]);\n\n function Result(init) {\n _classCallCheck(this, Result);\n\n _defineProperty(this, \"DocId\", void 0);\n\n _defineProperty(this, \"Score\", void 0);\n\n _defineProperty(this, \"Document\", void 0);\n\n _defineProperty(this, \"Explain\", void 0);\n\n _defineProperty(this, \"IsPin\", void 0);\n\n _defineProperty(this, \"BestFragment\", void 0);\n\n Object.assign(this, init);\n }\n\n return Result;\n}();\n\nvar Sorting =\n/** The sorting items. */\nfunction Sorting(init) {\n _classCallCheck(this, Sorting);\n\n _defineProperty(this, \"Items\", void 0);\n\n Object.assign(this, init);\n this.Items = init.Items.map(function (i) {\n return new SortingItem(i);\n });\n};\nvar SortingItem =\n/** Name of the sorting option. This is the label to display to users. */\n\n/**\r\n * The value to be used to specify the sort order once user selects it. This value is passed in the @see Request.SortBy\r\n * field in the @see Request object.\r\n */\n\n/** Indicates if this sorting option was configured to be the default. */\n\n/** Indicates if this sorting option is currently being used for the current result set. */\nfunction SortingItem(init) {\n _classCallCheck(this, SortingItem);\n\n _defineProperty(this, \"Label\", void 0);\n\n _defineProperty(this, \"Value\", void 0);\n\n _defineProperty(this, \"IsDefault\", void 0);\n\n _defineProperty(this, \"Selected\", void 0);\n\n Object.assign(this, init);\n};\n\nvar Selections = function Selections(init) {\n var _this = this;\n\n _classCallCheck(this, Selections);\n\n Object.assign(this, init);\n Object.keys(init).forEach(function (key) {\n var selFacet = init[key];\n _this[key] = new SelectionFacet(selFacet);\n });\n};\nvar SelectionFacet =\n/** Display name for facet. */\n\n/** Will contain an entry for each selection made within the facet. */\nfunction SelectionFacet(init) {\n _classCallCheck(this, SelectionFacet);\n\n _defineProperty(this, \"Label\", void 0);\n\n _defineProperty(this, \"Items\", void 0);\n\n Object.assign(this, init);\n this.Items = init.Items.map(function (i) {\n return new SelectionFacetValue(i);\n });\n};\nvar SelectionFacetValue =\n/** Display label for facet value. */\n\n/** Value for facet value. */\nfunction SelectionFacetValue(init) {\n _classCallCheck(this, SelectionFacetValue);\n\n _defineProperty(this, \"Label\", void 0);\n\n _defineProperty(this, \"Value\", void 0);\n\n Object.assign(this, init);\n};\n\nvar Value =\n/** Label of the value to display. */\n\n/** Value to use when setting the facet value selection. */\n\n/** Number of results in current set that have this facet value. */\n\n/** Indicates if this facet value has been selected. */\n\n/**\r\n * Used for displaying the slider facet. @see RangeStart indicates what the starting point of the range\r\n * to display, either on basis of what the user selected by sliding the slider, or if they have no\r\n * selection it reflects the lowest price product.\r\n */\n\n/**\r\n * Used for displaying the slider facet. @see RangeEnd indicates what the end point of the range to\r\n * display is, either on basis of what the user selected by sliding the slider, or if they have no\r\n * selection, it reflects the highest price product.\r\n */\n\n/**\r\n * Used for displaying the slider facet. @see RangeMin indicates lowest value for the range in the list\r\n * of products displayed.\r\n */\n\n/**\r\n * Used for displaying the slider facet. @see RangeMax indicates highest value for the range in the list\r\n * of products displayed.\r\n */\n\n/** Used for nested facets. */\n\n/** Set of pagination options */\nfunction Value(init) {\n _classCallCheck(this, Value);\n\n _defineProperty(this, \"Label\", void 0);\n\n _defineProperty(this, \"Value\", void 0);\n\n _defineProperty(this, \"Count\", void 0);\n\n _defineProperty(this, \"Selected\", void 0);\n\n _defineProperty(this, \"RangeStart\", void 0);\n\n _defineProperty(this, \"RangeEnd\", void 0);\n\n _defineProperty(this, \"RangeMin\", void 0);\n\n _defineProperty(this, \"RangeMax\", void 0);\n\n _defineProperty(this, \"Path\", void 0);\n\n _defineProperty(this, \"Children\", void 0);\n\n _defineProperty(this, \"Level\", void 0);\n\n Object.assign(this, init);\n};\n\nvar Swatch =\n/** Match this value to the @see Value object in the @see Values array of @see Facet. */\n\n/** Name of the asset. */\n\n/** URL of the asset. */\n\n/** Indicates if value is the default. */\n\n/** Color of the asset. */\nfunction Swatch(init) {\n _classCallCheck(this, Swatch);\n\n _defineProperty(this, \"Value\", void 0);\n\n _defineProperty(this, \"AssetName\", void 0);\n\n _defineProperty(this, \"AssetUrl\", void 0);\n\n _defineProperty(this, \"IsDefault\", void 0);\n\n _defineProperty(this, \"Color\", void 0);\n\n Object.assign(this, init);\n};\n\nvar Range =\n/** Label of the value to display. */\n\n/** Value to use when setting the facet value selection. */\n\n/** Indicates if the values are numeric. */\n\n/** Lower value of the range. */\n\n/** Upper value of the range. */\n\n/** Asset Url */\nfunction Range(init) {\n _classCallCheck(this, Range);\n\n _defineProperty(this, \"Label\", void 0);\n\n _defineProperty(this, \"Value\", void 0);\n\n _defineProperty(this, \"IsNumeric\", void 0);\n\n _defineProperty(this, \"LBound\", void 0);\n\n _defineProperty(this, \"UBound\", void 0);\n\n _defineProperty(this, \"AssetFullUrl\", void 0);\n\n Object.assign(this, init);\n};\n\nvar Facet = /*#__PURE__*/function () {\n _createClass(Facet, [{\n key: \"shouldTruncate\",\n\n /** Unique identifier of the facet. */\n\n /** Display name of the facet. */\n\n /** The name of the field that is linked to this facet. */\n\n /** Indicates the maximum number of facet values that are returned. */\n\n /** Indicates the minimum number of results each facet value needs to have in order to be returned. */\n\n /**\r\n * If this is set, it is to be used as the facet name if passed in the `FacetSelections`. If not set,\r\n * the value of the Field object would be used. (This is only applicable when a slider and range\r\n * facets are both configured for the same field.)\r\n */\n\n /**\r\n * Indicates the sorting logic that is used for this facet’s values. The possible values for this\r\n * are the parameters for sorting set options that are configured in \"Workbench > Data Configuration\r\n * > Sorting/Pagination\".\r\n */\n\n /** Indicates if the user should be able to apply more than one filter value from this facet. */\n\n /** Indicates if facet values are numeric. */\n\n /** Indicates if facet values are currency (and should be displayed appropriately). */\n\n /** Indicates currency symbol in case of currency type facets */\n\n /** Indicates if the facet can be collapsed and expanded by the user. */\n\n /** If @see IsCollapsible is `true`, this indicates if the facet should initially be collapsed or expanded. */\n\n /** Indicates if the facet is set to be visible. */\n\n /**\r\n * Indicates if search is enabled for this facet. If it is enabled, a search box should be available for\r\n * users to filter the facet values by typing in the search box.\r\n */\n\n /**\r\n * If facet display type is Scrolling, this value is the height in pixels for the window inside scroll box.\r\n * Only to be used if @see DisplayType is `\"scrolling\"`.\r\n */\n\n /**\r\n * If the number of facet values exceeds this number and @see DisplayType is `\"scrolling\"`, then the facet\r\n * should be displayed as scrolling list; if not, display as `\"default\"`.\r\n */\n\n /**\r\n * If the number of facet values exceeds this number and @see DisplayType is `\"truncate\"`, then the facet\r\n * should be displayed as truncated list; if not, display as `\"default\"`.\r\n */\n\n /**\r\n * To be used if @see IsSearch is `true`. The number of facet values must be this number or higher for the\r\n * facet search box to display.\r\n */\n\n /** Text to display when user hovers over a help icon. */\n\n /**\r\n * If `false`, indicates that sometimes this facet will not be returned. The conditions that trigger its\r\n * display are maintained in the Workbench.\r\n */\n\n /**\r\n * The display order of the facet in the facet list.\r\n */\n\n /** This is maximum number of values that could be returned for the facet. */\n\n /** Will be included if @see FacetType is `\"swatch\"`. */\n\n /** Indicates type of facet range display. */\n\n /** Indicates if setting in Workbench is set to On or Off. */\n\n /**\r\n * To be used if @see FacetType is `\"slider\"`. If @see ShowSliderInputs is `true`, input boxes should be\r\n * available for user to enter values.\r\n */\n\n /** Always present, but will only be populated if the facet is numeric and not a slider. */\n\n /** The values for this facet. */\n // Data type for datetime facet type\n\n /** Whether or not the facet should be rendered as truncated. */\n get: function get() {\n // the facet does truncated listing of values if configured for truncating and we have too many facets\n return this.DisplayType === 'truncating' && this.Values.length > this.TruncateThreshold;\n }\n /** Whether or not the facet should be rendered as truncated. */\n\n }, {\n key: \"shouldScroll\",\n get: function get() {\n // the facet does truncated listing of values if configured for truncating and we have too many facets\n return this.DisplayType === 'scrolling' && this.Values.length > this.ScrollThreshold;\n }\n /** Whether or not the facet should have a quick lookup search input. */\n\n }, {\n key: \"shouldSearch\",\n get: function get() {\n // the facet should have a search box if configured to do so, and the number of facet values is greater\n // than the threshold\n return this.IsSearch && this.Values.length > this.SearchThreshold;\n }\n /**\r\n * Returns the name of the key when using this facet for a selection. This will take into consideration\r\n * @see ParamName and @see Field in determining which value should be returned.\r\n */\n\n }, {\n key: \"selectionField\",\n get: function get() {\n return this.ParamName ? this.ParamName : this.Field;\n }\n }]);\n\n function Facet(init) {\n _classCallCheck(this, Facet);\n\n _defineProperty(this, \"FacetId\", void 0);\n\n _defineProperty(this, \"Name\", void 0);\n\n _defineProperty(this, \"Field\", void 0);\n\n _defineProperty(this, \"FieldType\", void 0);\n\n _defineProperty(this, \"FacetType\", void 0);\n\n _defineProperty(this, \"DisplayType\", void 0);\n\n _defineProperty(this, \"MaxCount\", void 0);\n\n _defineProperty(this, \"MinHitCount\", void 0);\n\n _defineProperty(this, \"ParamName\", void 0);\n\n _defineProperty(this, \"SortBy\", void 0);\n\n _defineProperty(this, \"ExpandSelection\", void 0);\n\n _defineProperty(this, \"IsNumeric\", void 0);\n\n _defineProperty(this, \"IsCurrency\", void 0);\n\n _defineProperty(this, \"CurrencySymbol\", void 0);\n\n _defineProperty(this, \"IsCollapsible\", void 0);\n\n _defineProperty(this, \"IsCollapsedDefault\", void 0);\n\n _defineProperty(this, \"IsVisible\", void 0);\n\n _defineProperty(this, \"IsSearch\", void 0);\n\n _defineProperty(this, \"ScrollHeight\", void 0);\n\n _defineProperty(this, \"ScrollThreshold\", void 0);\n\n _defineProperty(this, \"TruncateThreshold\", void 0);\n\n _defineProperty(this, \"SearchThreshold\", void 0);\n\n _defineProperty(this, \"Tooltip\", void 0);\n\n _defineProperty(this, \"AlwaysVisible\", void 0);\n\n _defineProperty(this, \"SortOrder\", void 0);\n\n _defineProperty(this, \"NofVisible\", void 0);\n\n _defineProperty(this, \"SwatchData\", void 0);\n\n _defineProperty(this, \"FacetRangeDisplayType\", void 0);\n\n _defineProperty(this, \"PreloadChildren\", void 0);\n\n _defineProperty(this, \"ShowSliderInputs\", void 0);\n\n _defineProperty(this, \"Ranges\", void 0);\n\n _defineProperty(this, \"Values\", void 0);\n\n _defineProperty(this, \"DataType\", void 0);\n\n Object.assign(this, init);\n this.SwatchData = init.SwatchData.map(function (s) {\n return new Swatch(s);\n });\n this.Ranges = init.Ranges.map(function (r) {\n return new Range(r);\n });\n this.Values = init.Values.map(function (v) {\n return new Value(v);\n });\n }\n\n return Facet;\n}();\n\nvar Rule = function Rule(init) {\n _classCallCheck(this, Rule);\n\n _defineProperty(this, \"RuleType\", void 0);\n\n _defineProperty(this, \"Field\", void 0);\n\n _defineProperty(this, \"Condition\", void 0);\n\n _defineProperty(this, \"Value\", void 0);\n\n _defineProperty(this, \"Operator\", void 0);\n\n _defineProperty(this, \"Rules\", void 0);\n\n _defineProperty(this, \"Parent\", void 0);\n\n Object.assign(this, init);\n\n if (init.Parent) {\n this.Parent = new Rule(init.Parent);\n }\n\n this.Rules = init.Rules ? init.Rules.map(function (i) {\n return new Rule(i);\n }) : [];\n};\nvar RuleType;\n\n(function (RuleType) {\n RuleType[RuleType[\"Group\"] = 0] = \"Group\";\n RuleType[RuleType[\"Eval\"] = 1] = \"Eval\";\n})(RuleType || (RuleType = {}));\n\nvar RuleOperatorType;\n\n(function (RuleOperatorType) {\n RuleOperatorType[RuleOperatorType[\"All\"] = 0] = \"All\";\n RuleOperatorType[RuleOperatorType[\"Any\"] = 1] = \"Any\";\n RuleOperatorType[RuleOperatorType[\"None\"] = 2] = \"None\";\n})(RuleOperatorType || (RuleOperatorType = {}));\n\nvar BannerTrigger = function BannerTrigger(init) {\n _classCallCheck(this, BannerTrigger);\n\n _defineProperty(this, \"BannerGroupId\", void 0);\n\n _defineProperty(this, \"Name\", void 0);\n\n _defineProperty(this, \"SortOrder\", void 0);\n\n _defineProperty(this, \"Rule\", void 0);\n\n Object.assign(this, init);\n this.Rule = new Rule(this.Rule);\n};\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\nvar FeaturedItems = function FeaturedItems(init) {\n _classCallCheck(this, FeaturedItems);\n\n _defineProperty(this, \"Items\", void 0);\n\n Object.assign(this, init);\n\n if (init && init.Items) {\n this.Items = init.Items.map(function (i) {\n return new FeaturedItem(i);\n });\n }\n};\nvar Merchandising = function Merchandising(init) {\n _classCallCheck(this, Merchandising);\n\n _defineProperty(this, \"Items\", void 0);\n\n Object.assign(this, init);\n\n if (init && init.Items) {\n this.Items = init.Items.map(function (i) {\n return new MerchandisingItem(i);\n });\n }\n};\nvar PageContentItem = function PageContentItem(init) {\n _classCallCheck(this, PageContentItem);\n\n _defineProperty(this, \"Zone\", void 0);\n\n _defineProperty(this, \"ContentType\", void 0);\n\n _defineProperty(this, \"ImageUrl\", void 0);\n\n _defineProperty(this, \"AltTag\", void 0);\n\n _defineProperty(this, \"ForwardUrl\", void 0);\n\n _defineProperty(this, \"Output\", void 0);\n\n _defineProperty(this, \"WidgetArgs\", void 0);\n\n _defineProperty(this, \"Title\", void 0);\n\n _defineProperty(this, \"Name\", void 0);\n\n _defineProperty(this, \"DateFrom\", void 0);\n\n _defineProperty(this, \"DateTo\", void 0);\n\n _defineProperty(this, \"IsMobile\", void 0);\n\n _defineProperty(this, \"MobileContentType\", void 0);\n\n _defineProperty(this, \"MobileImageUrl\", void 0);\n\n _defineProperty(this, \"MobileOutput\", void 0);\n\n _defineProperty(this, \"MobileWidgetArgs\", void 0);\n\n _defineProperty(this, \"IsTrackingEnabled\", void 0);\n\n _defineProperty(this, \"MobileIsTrackingEnabled\", void 0);\n\n _defineProperty(this, \"FeaturedItems\", void 0);\n\n _defineProperty(this, \"Items\", void 0);\n\n _defineProperty(this, \"Target\", void 0);\n\n _defineProperty(this, \"MobileTarget\", void 0);\n\n _defineProperty(this, \"MobileAltTag\", void 0);\n\n _defineProperty(this, \"MobileForwardUrl\", void 0);\n\n _defineProperty(this, \"MobileWidth\", void 0);\n\n _defineProperty(this, \"MobileHeight\", void 0);\n\n _defineProperty(this, \"Trigger\", void 0);\n\n Object.assign(this, init);\n\n if (init.FeaturedItems) {\n this.FeaturedItems = init.FeaturedItems.map(function (i) {\n return new Result(i);\n });\n }\n\n if (init.Trigger) {\n this.Trigger = new BannerTrigger(init.Trigger);\n }\n};\nvar FeaturedItem = /*#__PURE__*/function (_PageContentItem) {\n _inherits(FeaturedItem, _PageContentItem);\n\n var _super = _createSuper(FeaturedItem);\n\n function FeaturedItem(init) {\n var _this;\n\n _classCallCheck(this, FeaturedItem);\n\n _this = _super.call(this, init);\n\n _defineProperty(_assertThisInitialized(_this), \"Items\", void 0);\n\n Object.assign(_assertThisInitialized(_this), init);\n _this.Items = init.Items.map(function (i) {\n return new Result(i);\n });\n return _this;\n }\n\n return FeaturedItem;\n}(PageContentItem);\nvar MerchandisingItem = /*#__PURE__*/function (_PageContentItem2) {\n _inherits(MerchandisingItem, _PageContentItem2);\n\n var _super2 = _createSuper(MerchandisingItem);\n\n function MerchandisingItem(init) {\n var _this2;\n\n _classCallCheck(this, MerchandisingItem);\n\n _this2 = _super2.call(this, init);\n Object.assign(_assertThisInitialized(_this2), init);\n return _this2;\n }\n\n return MerchandisingItem;\n}(PageContentItem);\n\nvar PageContent = function PageContent(init) {\n _classCallCheck(this, PageContent);\n\n _defineProperty(this, \"ZoneName\", void 0);\n\n _defineProperty(this, \"Items\", void 0);\n\n Object.assign(this, init);\n this.Items = init.Items.map(function (i) {\n return new PageContentItem(i);\n });\n};\n\nvar Response =\n/** Indicates if request was successful. */\n\n/** Summary of pagination details and a set of pagination options. */\n\n/**\r\n * The Keyword value that was sent to Hawksearch in the request. If no Keyword was set in the\r\n * request, the value will be empty.\r\n */\n\n/**\r\n * If this is populated, it indicates that the Keyword value returned 0 results, but the results\r\n * in this response are from this AdjustedKeyword. A message should be displayed to the user\r\n * informing them that their search was corrected to this string.\r\n *\r\n * This is the result of Auto Correct, which is configured in the Workbench > Keyword Search >\r\n * Did You Mean.\r\n */\n\n/** An entry in the array for each item returned in search results. */\n\n/**\r\n * Will contain an entry for each facet that has one or more selections. Will be empty if no facet\r\n * selections have been made.\r\n */\n\n/**\r\n * If any strings are returned in the array, they should be displayed to the user as suggested\r\n * search terms.\r\n *\r\n * This is the result of Did You Mean, which is configured in the Workbench > Keyword Search >\r\n * Did You Mean.\r\n */\n\n/**\r\n * Merchandising can be placed by using Campaigns in the Hawksearch Workbench. The Campaign will\r\n * determine if the content should appear and in what zone.\r\n */\n// TODO: merchandising object\n// TODO: featured items object\n\n/**\r\n * Properties that gets populated when user requests landing page related results\r\n *\r\n */\n// end of landing page related fields\nfunction Response(init) {\n _classCallCheck(this, Response);\n\n _defineProperty(this, \"Success\", void 0);\n\n _defineProperty(this, \"Pagination\", void 0);\n\n _defineProperty(this, \"Keyword\", void 0);\n\n _defineProperty(this, \"AdjustedKeyword\", void 0);\n\n _defineProperty(this, \"Results\", void 0);\n\n _defineProperty(this, \"Facets\", void 0);\n\n _defineProperty(this, \"Selections\", void 0);\n\n _defineProperty(this, \"Sorting\", void 0);\n\n _defineProperty(this, \"DidYouMean\", void 0);\n\n _defineProperty(this, \"Merchandising\", void 0);\n\n _defineProperty(this, \"FeaturedItems\", void 0);\n\n _defineProperty(this, \"SearchDuration\", void 0);\n\n _defineProperty(this, \"DocExplain\", void 0);\n\n _defineProperty(this, \"Breadcrumb\", void 0);\n\n _defineProperty(this, \"CustomHtml\", void 0);\n\n _defineProperty(this, \"HeaderTitle\", void 0);\n\n _defineProperty(this, \"MetaDescription\", void 0);\n\n _defineProperty(this, \"MetaKeywords\", void 0);\n\n _defineProperty(this, \"MetaRobots\", void 0);\n\n _defineProperty(this, \"Name\", void 0);\n\n _defineProperty(this, \"Next\", void 0);\n\n _defineProperty(this, \"Prev\", void 0);\n\n _defineProperty(this, \"PageHeading\", void 0);\n\n _defineProperty(this, \"PageContent\", void 0);\n\n _defineProperty(this, \"RelCanonical\", void 0);\n\n _defineProperty(this, \"PageLayoutId\", void 0);\n\n _defineProperty(this, \"TrackingId\", void 0);\n\n Object.assign(this, init);\n this.Pagination = new Pagination(init.Pagination);\n this.Merchandising = new Merchandising(init.Merchandising);\n this.FeaturedItems = new FeaturedItems(init.FeaturedItems);\n this.Results = init.Results.map(function (r) {\n return new Result(r);\n });\n this.Facets = init.Facets.map(function (f) {\n return new Facet(f);\n });\n this.PageContent = init.PageContent ? init.PageContent.map(function (p) {\n return new PageContent(p);\n }) : [];\n this.Selections = new Selections(init.Selections);\n this.Sorting = new Sorting(init.Sorting);\n};\n\nvar ContentType;\n\n(function (ContentType) {\n ContentType[\"Image\"] = \"image\";\n ContentType[\"Widget\"] = \"widget\";\n ContentType[\"Featured\"] = \"featured\";\n ContentType[\"Custom\"] = \"custom\";\n ContentType[\"LandingPage\"] = \"landingPage\";\n})(ContentType || (ContentType = {}));\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nfunction useMergableState(initialValue, typeConstructor) {\n var _useState = useState(new typeConstructor(initialValue)),\n _useState2 = _slicedToArray$1(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n function setStateAndMerge(value) {\n if (typeof value === 'function') {\n // if we're being passed a function, we're setting state in the form of setState(prevState => ...).\n setState(function (prevState) {\n // so we derive the new state from the previous state\n var newState = value(prevState); // and then set the new merged state\n\n return new typeConstructor(_objectSpread$3(_objectSpread$3({}, prevState), newState));\n });\n return;\n } // otherwise, the new state was simply passed in\n\n\n setState(function (prevState) {\n // merge state together and set it\n return new typeConstructor(_objectSpread$3(_objectSpread$3({}, prevState), value));\n });\n }\n\n return [state, setStateAndMerge];\n}\n\nvar E_T;\n\n(function (E_T) {\n E_T[E_T[\"pageLoad\"] = 1] = \"pageLoad\";\n E_T[E_T[\"search\"] = 2] = \"search\";\n E_T[E_T[\"click\"] = 3] = \"click\";\n E_T[E_T[\"addToCart\"] = 4] = \"addToCart\";\n E_T[E_T[\"rate\"] = 5] = \"rate\";\n E_T[E_T[\"sale\"] = 6] = \"sale\";\n E_T[E_T[\"bannerClick\"] = 7] = \"bannerClick\";\n E_T[E_T[\"bannerImpression\"] = 8] = \"bannerImpression\";\n E_T[E_T[\"recommendationClick\"] = 10] = \"recommendationClick\";\n E_T[E_T[\"autoCompleteClick\"] = 11] = \"autoCompleteClick\";\n E_T[E_T[\"add2CartMultiple\"] = 14] = \"add2CartMultiple\";\n})(E_T || (E_T = {}));\n\nvar P_T;\n\n(function (P_T) {\n P_T[P_T[\"item\"] = 1] = \"item\";\n P_T[P_T[\"landing\"] = 2] = \"landing\";\n P_T[P_T[\"cart\"] = 3] = \"cart\";\n P_T[P_T[\"order\"] = 4] = \"order\";\n P_T[P_T[\"custom\"] = 5] = \"custom\";\n})(P_T || (P_T = {}));\n\nvar SuggestType;\n\n(function (SuggestType) {\n SuggestType[SuggestType[\"PopularSearches\"] = 1] = \"PopularSearches\";\n SuggestType[SuggestType[\"TopCategories\"] = 2] = \"TopCategories\";\n SuggestType[SuggestType[\"TopProductMatches\"] = 3] = \"TopProductMatches\";\n SuggestType[SuggestType[\"TopContentMatches\"] = 4] = \"TopContentMatches\";\n})(SuggestType || (SuggestType = {}));\n\nvar SearchType;\n\n(function (SearchType) {\n SearchType[SearchType[\"Initial\"] = 1] = \"Initial\";\n SearchType[SearchType[\"Refinement\"] = 2] = \"Refinement\";\n})(SearchType || (SearchType = {}));\n\nvar TrackEventNameMapping = {\n Click: 'click',\n Cart: '',\n CopyRequestTracking: '',\n RequestTracking: '',\n Search: 'searchtracking',\n Sale: 'sale',\n RecommendationImpression: '',\n RecommendationClick: 'recommendationclick',\n Rate: 'rate',\n PageLoad: 'pageload',\n Identify: '',\n BannerImpression: 'bannerimpression',\n BannerClick: 'bannerclick',\n AutocompleteClick: 'autocompleteclick',\n Add2CartMultiple: 'add2cartmultiple',\n Add2Cart: 'add2cart'\n};\nvar AvailableEvents = ['click', 'pageload', 'searchtracking', 'autocompleteclick', 'bannerclick', 'bannerimpression'];\n\nvar TrackingEvent = /*#__PURE__*/function () {\n /**\r\n * The Singleton's constructor should always be private to prevent direct\r\n * construction calls with the `new` operator.\r\n */\n function TrackingEvent() {\n _classCallCheck(this, TrackingEvent);\n\n _defineProperty(this, \"trackingURL\", void 0);\n\n _defineProperty(this, \"clientGUID\", void 0);\n\n _defineProperty(this, \"trackConfig\", void 0);\n }\n /**\r\n * The static method that controls the access to the singleton instance.\r\n *\r\n * This implementation let you subclass the Singleton class while keeping\r\n * just one instance of each subclass around.\r\n */\n\n\n _createClass(TrackingEvent, [{\n key: \"setTrackingURL\",\n\n /**\r\n * Finally, any singleton should define some business logic, which can be\r\n * executed on its instance.\r\n */\n value: function setTrackingURL(url) {\n this.trackingURL = url;\n }\n }, {\n key: \"getTrackingURL\",\n value: function getTrackingURL() {\n return this.trackingURL;\n }\n }, {\n key: \"setClientGUID\",\n value: function setClientGUID(guid) {\n this.clientGUID = guid;\n }\n }, {\n key: \"getClientGUID\",\n value: function getClientGUID() {\n return this.getClientGUID;\n }\n }, {\n key: \"setTrackConfig\",\n value: function setTrackConfig(value) {\n this.trackConfig = value;\n }\n }, {\n key: \"getVisitorExpiry\",\n value: function getVisitorExpiry() {\n var d = new Date(); // 1 year\n\n d.setTime(d.getTime() + 360 * 24 * 60 * 60 * 1000);\n return d.toUTCString();\n }\n }, {\n key: \"getVisitExpiry\",\n value: function getVisitExpiry() {\n var d = new Date(); // 4 hours\n\n d.setTime(d.getTime() + 4 * 60 * 60 * 1000);\n return d.toUTCString();\n }\n }, {\n key: \"createGuid\",\n value: function createGuid() {\n var s = [];\n var hexDigits = '0123456789abcdef';\n\n for (var i = 0; i < 36; i++) {\n s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);\n }\n\n s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010\n // tslint:disable-next-line: no-bitwise\n\n s[19] = hexDigits.substr(s[19] & 0x3 | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01\n\n s[8] = s[13] = s[18] = s[23] = '-';\n var uuid = s.join('');\n return uuid;\n }\n }, {\n key: \"getCookie\",\n value: function getCookie(name) {\n var nameEQ = name + '=';\n var ca = document.cookie.split(';'); // tslint:disable-next-line: prefer-for-of\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n\n return null;\n }\n }, {\n key: \"setCookie\",\n value: function setCookie(name, value, expiry) {\n var expires;\n\n if (expiry) {\n expires = '; expires=' + expiry;\n } else {\n expires = '';\n }\n\n document.cookie = name + '=' + value + expires + '; path=/';\n }\n }, {\n key: \"writePageLoad\",\n value: function writePageLoad(pageType) {\n var c = document.documentElement;\n var pl = {\n EventType: E_T.pageLoad,\n EventData: btoa(JSON.stringify({\n PageTypeId: P_T[pageType],\n RequestPath: window.location.pathname,\n Qs: window.location.search,\n ViewportHeight: c.clientHeight,\n ViewportWidth: c.clientWidth\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeSearchTracking\",\n value: function writeSearchTracking(trackingId, typeId) {\n var guid = this.createGuid();\n\n if (typeId === SearchType.Initial) {\n this.setCookie('hawk_query_id', guid);\n }\n\n var queryId = this.getCookie('hawk_query_id') || guid;\n var c = document.documentElement;\n var pl = {\n EventType: E_T.search,\n EventData: btoa(JSON.stringify({\n QueryId: queryId,\n TrackingId: trackingId,\n TypeId: typeId,\n ViewportHeight: c.clientHeight,\n ViewportWidth: c.clientWidth\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeClick\",\n value: function writeClick(event, uniqueId, trackingId, url) {\n var c = document.documentElement;\n var pl = {\n EventType: E_T.click,\n EventData: btoa(JSON.stringify({\n Url: url,\n Qs: window.location.search,\n RequestPath: window.location.pathname,\n TrackingId: trackingId,\n UniqueId: uniqueId,\n ViewportHeight: c.clientHeight,\n ViewportWidth: c.clientWidth\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeBannerClick\",\n value: function writeBannerClick(bannerId, campaignId, trackingId) {\n var pl = {\n EventType: E_T.bannerClick,\n EventData: btoa(JSON.stringify({\n CampaignId: campaignId,\n BannerId: bannerId,\n TrackingId: trackingId\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeBannerImpression\",\n value: function writeBannerImpression(bannerId, campaignId, trackingId) {\n var pl = {\n EventType: E_T.bannerImpression,\n EventData: btoa(JSON.stringify({\n CampaignId: campaignId,\n BannerId: bannerId,\n TrackingId: trackingId\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeSale\",\n value: function writeSale(orderNo, itemList, total, subTotal, tax, currency) {\n var pl = {\n EventType: E_T.sale,\n EventData: btoa(JSON.stringify({\n OrderNo: orderNo,\n ItemList: itemList,\n Total: total,\n Tax: tax,\n SubTotal: subTotal,\n Currency: currency\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeAdd2Cart\",\n value: function writeAdd2Cart(uniqueId, price, quantity, currency) {\n var pl = {\n EventType: E_T.addToCart,\n EventData: btoa(JSON.stringify({\n UniqueId: uniqueId,\n Quantity: quantity,\n Price: price,\n Currency: currency\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeAdd2CartMultiple\",\n value: function writeAdd2CartMultiple(args) {\n var pl = {\n EventType: E_T.add2CartMultiple,\n EventData: btoa(JSON.stringify({\n ItemsList: args\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeRate\",\n value: function writeRate(uniqueId, value) {\n var pl = {\n EventType: E_T.rate,\n EventData: btoa(JSON.stringify({\n UniqueId: uniqueId,\n Value: value\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeRecommendationClick\",\n value: function writeRecommendationClick(widgetGuid, uniqueId, itemIndex, requestId) {\n var pl = {\n EventType: E_T.recommendationClick,\n EventData: btoa(JSON.stringify({\n ItemIndex: itemIndex,\n RequestId: requestId,\n UniqueId: uniqueId,\n WidgetGuid: widgetGuid\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"writeAutoCompleteClick\",\n value: function writeAutoCompleteClick(keyword, suggestType, name, url) {\n var pl = {\n EventType: E_T.autoCompleteClick,\n EventData: btoa(JSON.stringify({\n Keyword: keyword,\n Name: name,\n SuggestType: suggestType,\n Url: url\n }))\n };\n this.mr(pl);\n }\n }, {\n key: \"mr\",\n value: function mr(data) {\n var visitId = this.getCookie('hawk_visit_id');\n var visitorId = this.getCookie('hawk_visitor_id');\n\n if (!visitId) {\n this.setCookie('hawk_visit_id', this.createGuid(), this.getVisitExpiry());\n visitId = this.getCookie('hawk_visit_id');\n }\n\n if (!visitorId) {\n this.setCookie('hawk_visitor_id', this.createGuid(), this.getVisitorExpiry());\n visitorId = this.getCookie('hawk_visitor_id');\n }\n\n var pl = Object.assign({\n ClientGuid: this.clientGUID,\n VisitId: visitId,\n VisitorId: visitorId // TrackingProperties: hs.Context,\n // CustomDictionary: hs.Context.Custom,\n\n }, data);\n fetch(this.trackingURL, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(pl)\n })[\"catch\"](function (error) {\n console.error('Error:', error);\n });\n }\n }, {\n key: \"track\",\n value: function track(eventName, args) {\n if (!this.trackingURL || !this.clientGUID) {\n return;\n }\n\n switch (eventName.toLowerCase()) {\n case 'pageload':\n // HawkSearch.Context.add(\"uniqueid\", \"123456789\");\n return this.writePageLoad(args.pageType);\n\n case 'searchtracking':\n // HawkSearch.Tracking.track(\"searchtracking\", {trackingId:\"a9bd6e50-e434-45b9-9f66-489eca07ad0a\", typeId: HawkSearch.Tracking.SearchType.Initial});\n // HawkSearch.Tracking.track(\"searchtracking\", {trackingId:\"a9bd6e50-e434-45b9-9f66-489eca07ad0a\", typeId: HawkSearch.Tracking.SearchType.Refinement});\n return this.writeSearchTracking(args.trackingId, args.typeId);\n // CHANGED\n\n case 'click':\n // HawkSearch.Tracking.track('click',{event: e, uniqueId: \"33333\", trackingId: \"75a0801a-a93c-4bcb-81f1-f4b011f616e3\"});\n return this.writeClick(args.event, args.uniqueId, args.trackingId, '');\n // CHANGED\n\n case 'bannerclick':\n // HawkSearch.Tracking.track('bannerclick',{bannerId: 1, campaignId: 2, trackingId:\"2d652a1e-2e05-4414-9d76-51979109f724\"});\n return this.writeBannerClick(args.bannerId, args.campaignId, args.trackingId);\n // CHANGED\n\n case 'bannerimpression':\n // HawkSearch.Tracking.track('bannerimpression',{bannerId: \"2\", campaignId: \"2\", trackingId:\"2d652a1e-2e05-4414-9d76-51979109f724\"});\n return this.writeBannerImpression(args.bannerId, args.campaignId, args.trackingId);\n // CHANGED\n\n case 'sale':\n // HawkSearch.Tracking.track('sale', {orderNo: 'order_123',itemList: [{uniqueid: '123456789', itemPrice: 12.99, quantity: 2}], total: 25.98, subTotal: 22, tax: 3.98, currency: 'USD'});\n return this.writeSale(args.orderNo, args.itemList, args.total, args.subTotal, args.tax, args.currency);\n\n case 'add2cart':\n // HawkSearch.Tracking.track('add2cart',{uniqueId: '123456789', price: 19.99, quantity: 3, currency: 'USD'});\n return this.writeAdd2Cart(args.uniqueId, args.price, args.quantity, args.currency);\n\n case 'add2cartmultiple':\n // HawkSearch.Tracking.track('add2cartmultiple', [{uniqueId: '123456789',price: 15.97,quantity: 1,currency: 'USD'},{uniqueId: '987465321', price: 18.00, quantity: 1, currency: 'USD'}]);\n return this.writeAdd2CartMultiple(args);\n\n case 'rate':\n // HawkSearch.Tracking.track('rate', {uniqueId: '123456789',value: 3.00});\n return this.writeRate(args.uniqueId, args.value);\n\n case 'recommendationclick':\n // HawkSearch.Tracking.track('recommendationclick',{uniqueId: \"223222\", itemIndex: \"222\", widgetGuid:\"2d652a1e-2e05-4414-9d76-51979109f724\", requestId:\"2d652a1e-2e05-4414-9d76-51979109f724\"});\n return this.writeRecommendationClick(args.widgetGuid, args.uniqueId, args.itemIndex, args.requestId);\n\n case 'autocompleteclick':\n // HawkSearch.Tracking.track('autocompleteclick',{keyword: \"test\", suggestType: HawkSearch.Tracking.SuggestType.PopularSearches, name:\"tester\", url:\"/test\"});\n return this.writeAutoCompleteClick(args.keyword, args.suggestType, args.name, args.url);\n // CHANGED\n }\n }\n }, {\n key: \"isEnabled\",\n value: function isEnabled(eventName) {\n return Boolean(AvailableEvents.includes(eventName) && (!this.trackConfig || this.trackConfig.find(function (e) {\n return TrackEventNameMapping[e] === eventName;\n })));\n }\n }], [{\n key: \"getInstance\",\n value: function getInstance(url) {\n if (!TrackingEvent.instance) {\n TrackingEvent.instance = new TrackingEvent();\n }\n\n return TrackingEvent.instance;\n }\n }]);\n\n return TrackingEvent;\n}(); // export TrackingEvent.getInstance();\n\n\n_defineProperty(TrackingEvent, \"instance\", void 0);\n\nvar TrackingEvent$1 = TrackingEvent.getInstance();\n\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$3(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen); }\n\nfunction _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nfunction useHawkState(initialSearch) {\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config;\n\n var client = new HawkClient(config);\n\n var _useMergableState = useMergableState(new SearchStore({\n pendingSearch: initialSearch || {\n FacetSelections: {}\n },\n isLoading: true\n }), SearchStore),\n _useMergableState2 = _slicedToArray$1(_useMergableState, 2),\n store = _useMergableState2[0],\n setStore = _useMergableState2[1];\n\n useEffect(function () {\n // when the pending search changes, trigger a search\n var cts = axios$1.CancelToken.source();\n search(cts.token);\n return function () {\n cts.cancel();\n };\n }, [store.pendingSearch]);\n /**\r\n * Performs a search with the currently configured pending search request. The search request can be\r\n * configured via the `setSearch` method. This method usually doesn't need to be called directly, as\r\n * the `StoreProvider` component will usually trigger searches directly in response to calls to\r\n * `setSearch`.\r\n * @returns A promise that resolves when the search request has been completed.\r\n */\n\n function search(_x) {\n return _search.apply(this, arguments);\n }\n /**\r\n * Configures the next search request that will be executed. This will also execute a search in response to\r\n * the next search request changing.\r\n * @param search The partial search request object. This will be merged with previous calls to `setSearch`.\r\n * @param doHistory Whether or not this search request will push a history entry into the browser. If\r\n * \t\t\t\t\tnot specified, the default is `true`.\r\n */\n\n\n function _search() {\n _search = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(cancellationToken) {\n var searchResults, searchParams;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n setStore({\n isLoading: true\n });\n searchResults = null;\n searchParams = _objectSpread$4(_objectSpread$4({}, store.pendingSearch), {}, {\n // pass parameter for extended response\n IsInPreview: config.isInPreview,\n // and override some of the request fields with config values\n ClientGuid: config.clientGuid,\n CustomUrl: config.CustomUrl,\n Keyword: store.pendingSearch.Keyword ? decodeURIComponent(store.pendingSearch.Keyword || '') : store.pendingSearch.Keyword,\n SearchWithin: store.pendingSearch.SearchWithin ? decodeURIComponent(store.pendingSearch.SearchWithin || '') : store.pendingSearch.SearchWithin\n }, config.additionalParameters);\n applySearchParamsContext(config, searchParams);\n\n if (searchParamsValid(config, searchParams)) {\n _context.next = 7;\n break;\n }\n\n setStore({\n isLoading: false\n });\n return _context.abrupt(\"return\");\n\n case 7:\n _context.prev = 7;\n _context.next = 10;\n return client.search(searchParams, cancellationToken);\n\n case 10:\n searchResults = _context.sent;\n _context.next = 19;\n break;\n\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](7);\n\n if (!axios$1.isCancel(_context.t0)) {\n _context.next = 17;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 17:\n console.error('Search request error:', _context.t0);\n setStore({\n requestError: true\n });\n\n case 19:\n setStore({\n isLoading: false\n });\n\n if (searchResults) {\n if (!searchResults.Success) {\n console.error('Search result error:', searchResults);\n setStore({\n requestError: true\n });\n } else {\n if (initialSearch === store.pendingSearch) {\n TrackingEvent$1.track('searchtracking', {\n trackingId: searchResults.TrackingId,\n typeId: SearchType.Initial\n });\n } else {\n TrackingEvent$1.track('searchtracking', {\n trackingId: searchResults.TrackingId,\n typeId: SearchType.Refinement\n });\n }\n\n setStore({\n searchResults: new Response(searchResults),\n requestError: false\n });\n }\n }\n\n case 21:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[7, 13]]);\n }));\n return _search.apply(this, arguments);\n }\n\n function setSearch(pendingSearch, doHistory) {\n if (doHistory === undefined) {\n doHistory = true;\n }\n\n setStore(function (prevState) {\n var newState = {\n pendingSearch: _objectSpread$4(_objectSpread$4({}, prevState.pendingSearch), pendingSearch),\n doHistory: doHistory\n };\n\n if (newState.pendingSearch.Keyword === '') {\n newState.pendingSearch.Keyword = undefined;\n }\n\n return newState;\n });\n }\n /**\r\n * Sets the facet selections and search within configuration for the next search request. This will also\r\n * clear the page number of the next request to display the first page of results.\r\n * @param selections The facet selections to set.\r\n * @param searchWithin The search within value to set.\r\n */\n\n\n function setSearchSelections(selections, searchWithin) {\n setSearch({\n FacetSelections: selections,\n SearchWithin: searchWithin,\n // when we change facet selections, also clear the current page so that we navigate\n // back to the first page of results\n PageNo: undefined\n });\n }\n /**\r\n * Toggles a facet value for the next search request that will be executed. Internally, this will call\r\n * `setSearch` to configure the next search with this selected facet.\r\n * @param facet The facet for which the value is being selected.\r\n * @param facetValue The facet value being selected.\r\n * @param negate Whether or not this selection is considered a negation.\r\n */\n\n\n function toggleFacetValue(facet, facetValue, negate) {\n if (negate === undefined) {\n negate = false;\n }\n\n var facetName = typeof facet === 'string' ? facet : facet.Name;\n var facetField = typeof facet === 'string' ? facet : facet.selectionField;\n var valueValue = typeof facetValue === 'string' ? facetValue : facetValue.Value;\n var valueLabel = typeof facetValue === 'string' ? facetValue : facetValue.Label;\n\n if (!valueValue) {\n console.error(\"Facet \".concat(facetName, \" (\").concat(facetField, \") has no facet value for \").concat(valueLabel));\n return;\n }\n\n var facetSelections = store.pendingSearch.FacetSelections; // handle `searchWithin` facet, which isn't a facet selection but is instead a field on the\n // search request.\n\n if (facetField === 'searchWithin') {\n // set the search within to the facet value provided\n setSearchSelections(facetSelections,\n /* searchWithin */\n valueValue);\n return;\n }\n\n if (!facetSelections) {\n facetSelections = {};\n }\n\n if (!facetSelections[facetField]) {\n facetSelections[facetField] = [];\n }\n\n var _store$isFacetSelecte = store.isFacetSelected(facet, facetValue),\n selState = _store$isFacetSelecte.state,\n selectionIndex = _store$isFacetSelecte.selectionIndex;\n\n if (selState === FacetSelectionState.Selected || selState === FacetSelectionState.Negated) {\n // we're selecting this facet, and it's already selected\n // first, remove it from our selections\n facetSelections[facetField].splice(selectionIndex, 1);\n\n if (selState === FacetSelectionState.Selected && negate || selState === FacetSelectionState.Negated && !negate) {\n // if we're toggling from negation to non-negation or vice versa, then push the new selection\n facetSelections[facetField].push(negate ? \"-\".concat(valueValue) : valueValue);\n }\n } else {\n // not selected, so we want to select it\n facetSelections[facetField].push(negate ? \"-\".concat(valueValue) : valueValue);\n }\n\n if (facetSelections[facetField].length === 0) {\n // clean up any facets that no longer have any selected facet values\n delete facetSelections[facetField];\n }\n\n setSearchSelections(facetSelections, store.pendingSearch.SearchWithin);\n }\n\n function setFacetValues(facet, facetValues) {\n var facetName = typeof facet === 'string' ? facet : facet.Name;\n var facetField = typeof facet === 'string' ? facet : facet.selectionField;\n var facetSelections = store.pendingSearch.FacetSelections;\n\n if (!facetSelections) {\n facetSelections = {};\n }\n\n facetSelections[facetField] = [];\n\n var _iterator = _createForOfIteratorHelper$1(facetValues),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _facetValue = _step.value;\n var valueValue = typeof _facetValue === 'string' ? _facetValue : _facetValue.Value;\n var valueLabel = typeof _facetValue === 'string' ? _facetValue : _facetValue.Label;\n\n if (!valueValue) {\n console.error(\"Facet \".concat(facetName, \" (\").concat(facetField, \") has no facet value for \").concat(valueLabel));\n return;\n }\n\n facetSelections[facetField].push(valueValue);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n setSearchSelections(facetSelections, store.pendingSearch.SearchWithin);\n }\n /**\r\n * Entirely clears all the values of the given facet from the current selection.\r\n * @param facet The facet to clear.\r\n */\n\n\n function clearFacet(facet) {\n var facetField = typeof facet === 'string' ? facet : facet.selectionField;\n var facetSelections = store.pendingSearch.FacetSelections; // handle `searchWithin` facet, which isn't a facet selection but is instead a field on the\n // search request.\n\n if (facetField === 'searchWithin') {\n // set searchWithin to undefined to clear it\n setSearchSelections(facetSelections,\n /* searchWithin */\n undefined);\n return;\n }\n\n if (!facetSelections || !facetSelections[facetField]) {\n // if there are no facet selections or the facet isn't selected at all, there's nothing to clear\n return;\n }\n\n delete facetSelections[facetField];\n setSearchSelections(facetSelections, store.pendingSearch.SearchWithin);\n }\n /**\r\n * Clears a given facet value of the given facet from the current selection.\r\n * @param facet The facet to clear.\r\n * @param facetValue The facet value to clear.\r\n */\n\n\n function clearFacetValue(facet, facetValue) {\n var facetName = typeof facet === 'string' ? facet : facet.Name;\n var facetField = typeof facet === 'string' ? facet : facet.selectionField;\n var valueValue = typeof facetValue === 'string' ? facetValue : facetValue.Value;\n var valueLabel = typeof facetValue === 'string' ? facetValue : facetValue.Label;\n\n if (!valueValue) {\n console.error(\"Facet \".concat(facetName, \" (\").concat(facetField, \") has no facet value for \").concat(valueLabel));\n return;\n } // handle `searchWithin` facet, which isn't a facet selection but is instead a field on the\n // search request.\n\n\n if (facetField === 'searchWithin') {\n // set searchWithin to undefined to clear it\n setSearchSelections(store.pendingSearch.FacetSelections,\n /* searchWithin */\n undefined);\n return;\n }\n\n var _store$isFacetSelecte2 = store.isFacetSelected(facet, facetValue),\n selState = _store$isFacetSelecte2.state,\n selectionIndex = _store$isFacetSelecte2.selectionIndex;\n\n if (selState === FacetSelectionState.NotSelected) {\n // if there are no facet selections or the facet isn't selected at all, there's nothing to clear\n return;\n }\n\n var facetSelections = store.pendingSearch.FacetSelections; // remove it from the selections\n\n facetSelections[facetField].splice(selectionIndex, 1);\n\n if (facetSelections[facetField].length === 0) {\n // clean up any facets that no longer have any selected facet values\n delete facetSelections[facetField];\n }\n\n setSearchSelections(facetSelections, store.pendingSearch.SearchWithin);\n }\n /**\r\n * Clears all selected facets from the current selection.\r\n */\n\n\n function clearAllFacets() {\n setSearchSelections(undefined, undefined);\n }\n\n function applySearchParamsContext(configuration, searchParams) {\n // The index name in the configuration takes priority over the one supplied from the URL\n if (configuration.indexName) {\n Object.assign(searchParams, {\n IndexName: configuration.indexName\n });\n } // If the index name is set to 'current' send an empty value to search in the current index\n\n\n if (searchParams.IndexName === 'current') {\n Object.assign(searchParams, {\n IndexName: ''\n });\n }\n }\n\n function searchParamsValid(configuration, searchParams) {\n // If the index name is required and no value is provided from the config or the URL, the request is canceled\n if (configuration.indexNameRequired && !searchParams.IndexName) {\n return false;\n }\n\n return true;\n }\n\n var actor = {\n search: search,\n setSearch: setSearch,\n toggleFacetValue: toggleFacetValue,\n setFacetValues: setFacetValues,\n clearFacet: clearFacet,\n clearFacetValue: clearFacetValue,\n clearAllFacets: clearAllFacets\n };\n return [store, actor];\n}\n\nvar HawkContext = /*#__PURE__*/React__default.createContext({});\n\n/**\r\n * This component acts as the global store for the hawksearch application state. Only one instance of this component\r\n * should exist, and it should be the root level component.\r\n */\nfunction StoreProvider(_ref) {\n var initialSearch = _ref.initialSearch,\n children = _ref.children;\n\n var _useHawkState = useHawkState(initialSearch),\n _useHawkState2 = _slicedToArray$1(_useHawkState, 2),\n store = _useHawkState2[0],\n actor = _useHawkState2[1];\n\n return /*#__PURE__*/React__default.createElement(HawkContext.Provider, {\n value: {\n store: store,\n actor: actor\n }\n }, children);\n}\n/**\r\n * Retrieves the global hawk store for use within a component.\r\n */\n\n\nfunction useHawkSearch() {\n return useContext(HawkContext);\n}\n\nfunction HawkSearch(props) {\n if (props.config.trackEventUrl) {\n // Set URL to track event\n TrackingEvent$1.setTrackingURL(props.config.trackEventUrl);\n TrackingEvent$1.setClientGUID(props.config.clientGuid);\n TrackingEvent$1.setClientGUID(props.config.clientGuid);\n }\n\n return /*#__PURE__*/React__default.createElement(ConfigProvider, {\n config: props.config\n }, /*#__PURE__*/React__default.createElement(StoreProvider, {\n initialSearch: props.initialSearch\n }, props.children));\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar moment = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n module.exports = factory() ;\n}(commonjsGlobal, (function () {\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n 'object' !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = commonjsRequire;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n});\n\nvar accentMap = {\n ẚ: 'a',\n Á: 'a',\n á: 'a',\n À: 'a',\n à: 'a',\n Ă: 'a',\n ă: 'a',\n Ắ: 'a',\n ắ: 'a',\n Ằ: 'a',\n ằ: 'a',\n Ẵ: 'a',\n ẵ: 'a',\n Ẳ: 'a',\n ẳ: 'a',\n Â: 'a',\n â: 'a',\n Ấ: 'a',\n ấ: 'a',\n Ầ: 'a',\n ầ: 'a',\n Ẫ: 'a',\n ẫ: 'a',\n Ẩ: 'a',\n ẩ: 'a',\n Ǎ: 'a',\n ǎ: 'a',\n Å: 'a',\n å: 'a',\n Ǻ: 'a',\n ǻ: 'a',\n Ä: 'a',\n ä: 'a',\n Ǟ: 'a',\n ǟ: 'a',\n Ã: 'a',\n ã: 'a',\n Ȧ: 'a',\n ȧ: 'a',\n Ǡ: 'a',\n ǡ: 'a',\n Ą: 'a',\n ą: 'a',\n Ā: 'a',\n ā: 'a',\n Ả: 'a',\n ả: 'a',\n Ȁ: 'a',\n ȁ: 'a',\n Ȃ: 'a',\n ȃ: 'a',\n Ạ: 'a',\n ạ: 'a',\n Ặ: 'a',\n ặ: 'a',\n Ậ: 'a',\n ậ: 'a',\n Ḁ: 'a',\n ḁ: 'a',\n Ⱥ: 'a',\n ⱥ: 'a',\n Ǽ: 'a',\n ǽ: 'a',\n Ǣ: 'a',\n ǣ: 'a',\n Ḃ: 'b',\n ḃ: 'b',\n Ḅ: 'b',\n ḅ: 'b',\n Ḇ: 'b',\n ḇ: 'b',\n Ƀ: 'b',\n ƀ: 'b',\n ᵬ: 'b',\n Ɓ: 'b',\n ɓ: 'b',\n Ƃ: 'b',\n ƃ: 'b',\n Ć: 'c',\n ć: 'c',\n Ĉ: 'c',\n ĉ: 'c',\n Č: 'c',\n č: 'c',\n Ċ: 'c',\n ċ: 'c',\n Ç: 'c',\n ç: 'c',\n Ḉ: 'c',\n ḉ: 'c',\n Ȼ: 'c',\n ȼ: 'c',\n Ƈ: 'c',\n ƈ: 'c',\n ɕ: 'c',\n Ď: 'd',\n ď: 'd',\n Ḋ: 'd',\n ḋ: 'd',\n Ḑ: 'd',\n ḑ: 'd',\n Ḍ: 'd',\n ḍ: 'd',\n Ḓ: 'd',\n ḓ: 'd',\n Ḏ: 'd',\n ḏ: 'd',\n Đ: 'd',\n đ: 'd',\n ᵭ: 'd',\n Ɖ: 'd',\n ɖ: 'd',\n Ɗ: 'd',\n ɗ: 'd',\n Ƌ: 'd',\n ƌ: 'd',\n ȡ: 'd',\n ð: 'd',\n É: 'e',\n Ə: 'e',\n Ǝ: 'e',\n ǝ: 'e',\n é: 'e',\n È: 'e',\n è: 'e',\n Ĕ: 'e',\n ĕ: 'e',\n Ê: 'e',\n ê: 'e',\n Ế: 'e',\n ế: 'e',\n Ề: 'e',\n ề: 'e',\n Ễ: 'e',\n ễ: 'e',\n Ể: 'e',\n ể: 'e',\n Ě: 'e',\n ě: 'e',\n Ë: 'e',\n ë: 'e',\n Ẽ: 'e',\n ẽ: 'e',\n Ė: 'e',\n ė: 'e',\n Ȩ: 'e',\n ȩ: 'e',\n Ḝ: 'e',\n ḝ: 'e',\n Ę: 'e',\n ę: 'e',\n Ē: 'e',\n ē: 'e',\n Ḗ: 'e',\n ḗ: 'e',\n Ḕ: 'e',\n ḕ: 'e',\n Ẻ: 'e',\n ẻ: 'e',\n Ȅ: 'e',\n ȅ: 'e',\n Ȇ: 'e',\n ȇ: 'e',\n Ẹ: 'e',\n ẹ: 'e',\n Ệ: 'e',\n ệ: 'e',\n Ḙ: 'e',\n ḙ: 'e',\n Ḛ: 'e',\n ḛ: 'e',\n Ɇ: 'e',\n ɇ: 'e',\n ɚ: 'e',\n ɝ: 'e',\n Ḟ: 'f',\n ḟ: 'f',\n ᵮ: 'f',\n Ƒ: 'f',\n ƒ: 'f',\n Ǵ: 'g',\n ǵ: 'g',\n Ğ: 'g',\n ğ: 'g',\n Ĝ: 'g',\n ĝ: 'g',\n Ǧ: 'g',\n ǧ: 'g',\n Ġ: 'g',\n ġ: 'g',\n Ģ: 'g',\n ģ: 'g',\n Ḡ: 'g',\n ḡ: 'g',\n Ǥ: 'g',\n ǥ: 'g',\n Ɠ: 'g',\n ɠ: 'g',\n Ĥ: 'h',\n ĥ: 'h',\n Ȟ: 'h',\n ȟ: 'h',\n Ḧ: 'h',\n ḧ: 'h',\n Ḣ: 'h',\n ḣ: 'h',\n Ḩ: 'h',\n ḩ: 'h',\n Ḥ: 'h',\n ḥ: 'h',\n Ḫ: 'h',\n ḫ: 'h',\n H: 'h',\n '̱': 'h',\n ẖ: 'h',\n Ħ: 'h',\n ħ: 'h',\n Ⱨ: 'h',\n ⱨ: 'h',\n Í: 'i',\n í: 'i',\n Ì: 'i',\n ì: 'i',\n Ĭ: 'i',\n ĭ: 'i',\n Î: 'i',\n î: 'i',\n Ǐ: 'i',\n ǐ: 'i',\n Ï: 'i',\n ï: 'i',\n Ḯ: 'i',\n ḯ: 'i',\n Ĩ: 'i',\n ĩ: 'i',\n İ: 'i',\n i: 'i',\n Į: 'i',\n į: 'i',\n Ī: 'i',\n ī: 'i',\n Ỉ: 'i',\n ỉ: 'i',\n Ȉ: 'i',\n ȉ: 'i',\n Ȋ: 'i',\n ȋ: 'i',\n Ị: 'i',\n ị: 'i',\n Ḭ: 'i',\n ḭ: 'i',\n I: 'i',\n ı: 'i',\n Ɨ: 'i',\n ɨ: 'i',\n Ĵ: 'j',\n ĵ: 'j',\n J: 'j',\n '̌': 'j',\n ǰ: 'j',\n ȷ: 'j',\n Ɉ: 'j',\n ɉ: 'j',\n ʝ: 'j',\n ɟ: 'j',\n ʄ: 'j',\n Ḱ: 'k',\n ḱ: 'k',\n Ǩ: 'k',\n ǩ: 'k',\n Ķ: 'k',\n ķ: 'k',\n Ḳ: 'k',\n ḳ: 'k',\n Ḵ: 'k',\n ḵ: 'k',\n Ƙ: 'k',\n ƙ: 'k',\n Ⱪ: 'k',\n ⱪ: 'k',\n Ĺ: 'a',\n ĺ: 'l',\n Ľ: 'l',\n ľ: 'l',\n Ļ: 'l',\n ļ: 'l',\n Ḷ: 'l',\n ḷ: 'l',\n Ḹ: 'l',\n ḹ: 'l',\n Ḽ: 'l',\n ḽ: 'l',\n Ḻ: 'l',\n ḻ: 'l',\n Ł: 'l',\n ł: 'l',\n '̣': 'l',\n Ŀ: 'l',\n ŀ: 'l',\n Ƚ: 'l',\n ƚ: 'l',\n Ⱡ: 'l',\n ⱡ: 'l',\n Ɫ: 'l',\n ɫ: 'l',\n ɬ: 'l',\n ɭ: 'l',\n ȴ: 'l',\n Ḿ: 'm',\n ḿ: 'm',\n Ṁ: 'm',\n ṁ: 'm',\n Ṃ: 'm',\n ṃ: 'm',\n ɱ: 'm',\n Ń: 'n',\n ń: 'n',\n Ǹ: 'n',\n ǹ: 'n',\n Ň: 'n',\n ň: 'n',\n Ñ: 'n',\n ñ: 'n',\n Ṅ: 'n',\n ṅ: 'n',\n Ņ: 'n',\n ņ: 'n',\n Ṇ: 'n',\n ṇ: 'n',\n Ṋ: 'n',\n ṋ: 'n',\n Ṉ: 'n',\n ṉ: 'n',\n Ɲ: 'n',\n ɲ: 'n',\n Ƞ: 'n',\n ƞ: 'n',\n ɳ: 'n',\n ȵ: 'n',\n N: 'n',\n '̈': 'n',\n n: 'n',\n Ó: 'o',\n ó: 'o',\n Ò: 'o',\n ò: 'o',\n Ŏ: 'o',\n ŏ: 'o',\n Ô: 'o',\n ô: 'o',\n Ố: 'o',\n ố: 'o',\n Ồ: 'o',\n ồ: 'o',\n Ỗ: 'o',\n ỗ: 'o',\n Ổ: 'o',\n ổ: 'o',\n Ǒ: 'o',\n ǒ: 'o',\n Ö: 'o',\n ö: 'o',\n Ȫ: 'o',\n ȫ: 'o',\n Ő: 'o',\n ő: 'o',\n Õ: 'o',\n õ: 'o',\n Ṍ: 'o',\n ṍ: 'o',\n Ṏ: 'o',\n ṏ: 'o',\n Ȭ: 'o',\n ȭ: 'o',\n Ȯ: 'o',\n ȯ: 'o',\n Ȱ: 'o',\n ȱ: 'o',\n Ø: 'o',\n ø: 'o',\n Ǿ: 'o',\n ǿ: 'o',\n Ǫ: 'o',\n ǫ: 'o',\n Ǭ: 'o',\n ǭ: 'o',\n Ō: 'o',\n ō: 'o',\n Ṓ: 'o',\n ṓ: 'o',\n Ṑ: 'o',\n ṑ: 'o',\n Ỏ: 'o',\n ỏ: 'o',\n Ȍ: 'o',\n ȍ: 'o',\n Ȏ: 'o',\n ȏ: 'o',\n Ơ: 'o',\n ơ: 'o',\n Ớ: 'o',\n ớ: 'o',\n Ờ: 'o',\n ờ: 'o',\n Ỡ: 'o',\n ỡ: 'o',\n Ở: 'o',\n ở: 'o',\n Ợ: 'o',\n ợ: 'o',\n Ọ: 'o',\n ọ: 'o',\n Ộ: 'o',\n ộ: 'o',\n Ɵ: 'o',\n ɵ: 'o',\n Ṕ: 'p',\n ṕ: 'p',\n Ṗ: 'p',\n ṗ: 'p',\n Ᵽ: 'p',\n Ƥ: 'p',\n ƥ: 'p',\n P: 'p',\n '̃': 'p',\n p: 'p',\n ʠ: 'q',\n Ɋ: 'q',\n ɋ: 'q',\n Ŕ: 'r',\n ŕ: 'r',\n Ř: 'r',\n ř: 'r',\n Ṙ: 'r',\n ṙ: 'r',\n Ŗ: 'r',\n ŗ: 'r',\n Ȑ: 'r',\n ȑ: 'r',\n Ȓ: 'r',\n ȓ: 'r',\n Ṛ: 'r',\n ṛ: 'r',\n Ṝ: 'r',\n ṝ: 'r',\n Ṟ: 'r',\n ṟ: 'r',\n Ɍ: 'r',\n ɍ: 'r',\n ᵲ: 'r',\n ɼ: 'r',\n Ɽ: 'r',\n ɽ: 'r',\n ɾ: 'r',\n ᵳ: 'r',\n ß: 's',\n Ś: 's',\n ś: 's',\n Ṥ: 's',\n ṥ: 's',\n Ŝ: 's',\n ŝ: 's',\n Š: 's',\n š: 's',\n Ṧ: 's',\n ṧ: 's',\n Ṡ: 's',\n ṡ: 's',\n ẛ: 's',\n Ş: 's',\n ş: 's',\n Ṣ: 's',\n ṣ: 's',\n Ṩ: 's',\n ṩ: 's',\n Ș: 's',\n ș: 's',\n ʂ: 's',\n S: 's',\n '̩': 's',\n s: 's',\n Þ: 't',\n þ: 't',\n Ť: 't',\n ť: 't',\n T: 't',\n ẗ: 't',\n Ṫ: 't',\n ṫ: 't',\n Ţ: 't',\n ţ: 't',\n Ṭ: 't',\n ṭ: 't',\n Ț: 't',\n ț: 't',\n Ṱ: 't',\n ṱ: 't',\n Ṯ: 't',\n ṯ: 't',\n Ŧ: 't',\n ŧ: 't',\n Ⱦ: 't',\n ⱦ: 't',\n ᵵ: 't',\n ƫ: 't',\n Ƭ: 't',\n ƭ: 't',\n Ʈ: 't',\n ʈ: 't',\n ȶ: 't',\n Ú: 'u',\n ú: 'u',\n Ù: 'u',\n ù: 'u',\n Ŭ: 'u',\n ŭ: 'u',\n Û: 'u',\n û: 'u',\n Ǔ: 'u',\n ǔ: 'u',\n Ů: 'u',\n ů: 'u',\n Ü: 'u',\n ü: 'u',\n Ǘ: 'u',\n ǘ: 'u',\n Ǜ: 'u',\n ǜ: 'u',\n Ǚ: 'u',\n ǚ: 'u',\n Ǖ: 'u',\n ǖ: 'u',\n Ű: 'u',\n ű: 'u',\n Ũ: 'u',\n ũ: 'u',\n Ṹ: 'u',\n ṹ: 'u',\n Ų: 'u',\n ų: 'u',\n Ū: 'u',\n ū: 'u',\n Ṻ: 'u',\n ṻ: 'u',\n Ủ: 'u',\n ủ: 'u',\n Ȕ: 'u',\n ȕ: 'u',\n Ȗ: 'u',\n ȗ: 'u',\n Ư: 'u',\n ư: 'u',\n Ứ: 'u',\n ứ: 'u',\n Ừ: 'u',\n ừ: 'u',\n Ữ: 'u',\n ữ: 'u',\n Ử: 'u',\n ử: 'u',\n Ự: 'u',\n ự: 'u',\n Ụ: 'u',\n ụ: 'u',\n Ṳ: 'u',\n ṳ: 'u',\n Ṷ: 'u',\n ṷ: 'u',\n Ṵ: 'u',\n ṵ: 'u',\n Ʉ: 'u',\n ʉ: 'u',\n Ṽ: 'v',\n ṽ: 'v',\n Ṿ: 'v',\n ṿ: 'v',\n Ʋ: 'v',\n ʋ: 'v',\n Ẃ: 'w',\n ẃ: 'w',\n Ẁ: 'w',\n ẁ: 'w',\n Ŵ: 'w',\n ŵ: 'w',\n W: 'w',\n '̊': 'w',\n ẘ: 'w',\n Ẅ: 'w',\n ẅ: 'w',\n Ẇ: 'w',\n ẇ: 'w',\n Ẉ: 'w',\n ẉ: 'w',\n Ẍ: 'x',\n ẍ: 'x',\n Ẋ: 'x',\n ẋ: 'x',\n Ý: 'y',\n ý: 'y',\n Ỳ: 'y',\n ỳ: 'y',\n Ŷ: 'y',\n ŷ: 'y',\n Y: 'y',\n ẙ: 'y',\n Ÿ: 'y',\n ÿ: 'y',\n Ỹ: 'y',\n ỹ: 'y',\n Ẏ: 'y',\n ẏ: 'y',\n Ȳ: 'y',\n ȳ: 'y',\n Ỷ: 'y',\n ỷ: 'y',\n Ỵ: 'y',\n ỵ: 'y',\n ʏ: 'y',\n Ɏ: 'y',\n ɏ: 'y',\n Ƴ: 'y',\n ƴ: 'y',\n Ź: 'z',\n ź: 'z',\n Ẑ: 'z',\n ẑ: 'z',\n Ž: 'z',\n ž: 'z',\n Ż: 'z',\n ż: 'z',\n Ẓ: 'z',\n ẓ: 'z',\n Ẕ: 'z',\n ẕ: 'z',\n Ƶ: 'z',\n ƶ: 'z',\n Ȥ: 'z',\n ȥ: 'z',\n ʐ: 'z',\n ʑ: 'z',\n Ⱬ: 'z',\n ⱬ: 'z',\n Ǯ: 'z',\n ǯ: 'z',\n ƺ: 'z',\n // Roman fullwidth ascii equivalents: 0xff00 to 0xff5e\n '2': '2',\n '6': '6',\n B: 'B',\n F: 'F',\n J: 'J',\n N: 'N',\n R: 'R',\n V: 'V',\n Z: 'Z',\n b: 'b',\n f: 'f',\n j: 'j',\n n: 'n',\n r: 'r',\n v: 'v',\n z: 'z',\n '1': '1',\n '5': '5',\n '9': '9',\n A: 'A',\n E: 'E',\n I: 'I',\n M: 'M',\n Q: 'Q',\n U: 'U',\n Y: 'Y',\n a: 'a',\n e: 'e',\n i: 'i',\n m: 'm',\n q: 'q',\n u: 'u',\n y: 'y',\n '0': '0',\n '4': '4',\n '8': '8',\n D: 'D',\n H: 'H',\n L: 'L',\n P: 'P',\n T: 'T',\n X: 'X',\n d: 'd',\n h: 'h',\n l: 'l',\n p: 'p',\n t: 't',\n x: 'x',\n '3': '3',\n '7': '7',\n C: 'C',\n G: 'G',\n K: 'K',\n O: 'O',\n S: 'S',\n W: 'W',\n c: 'c',\n g: 'g',\n k: 'k',\n o: 'o',\n s: 's',\n w: 'w'\n};\n\nfunction removeAccent(str) {\n if (!str) {\n return '';\n }\n\n var ret = '';\n\n for (var i = 0; i < str.length; i++) {\n ret += accentMap[str.charAt(i)] || str.charAt(i);\n }\n\n return ret;\n}\n\nfunction generateBoldedTitle(stringToMatch, substring) {\n var withBold = '';\n\n if (stringToMatch && substring && substring.length > 0) {\n // Filter accents convert to lowercase and remove special chars from string to be matched and substring to match with\n var stringToMatchNoAccents = removeAccent(stringToMatch).toLowerCase().replace(/[<>]+/g, '');\n var filteredSub = removeAccent(substring).toLowerCase().replace(/[^\\w\\s]/gi, ''); // Create regexp for substring, filter and insert brackets to be converted into strong html elements\n\n var filteredSubb = new RegExp(filteredSub, 'gi');\n var withBoldWithoutAccent = stringToMatchNoAccents.replace(filteredSubb, function (match) {\n return \"<\".concat(match, \">\");\n }); // Index pointer for original string\n\n var originalStringPosition = 0; // Loop over matched string and replace pointy brackets with strong tags wrapping the original unconverted string values\n\n for (var i = 0; i < withBoldWithoutAccent.length; i++) {\n var originalLetter = stringToMatch.charAt(originalStringPosition);\n var convertedLetter = withBoldWithoutAccent.charAt(i);\n\n if (convertedLetter === '<') {\n withBold += '';\n } else if (convertedLetter === '>') {\n withBold += '';\n } else {\n originalStringPosition++;\n withBold += originalLetter;\n }\n }\n }\n\n return withBold;\n}\n\nfunction boldResults(stringToMatch, substring) {\n var wordsToMatch = [];\n var substringWordsToMatch = []; // Split words up for matching, bold across all results, then join again\n\n if (stringToMatch && substring) {\n wordsToMatch = stringToMatch.split(' ');\n substringWordsToMatch = substring.split(' ');\n\n for (var wordMatchIndex in wordsToMatch) {\n if (wordsToMatch.hasOwnProperty(wordMatchIndex)) {\n var valuePart = wordsToMatch[wordMatchIndex];\n\n for (var substringWordMatchIndex in substringWordsToMatch) {\n if (substringWordsToMatch.hasOwnProperty(substringWordMatchIndex)) {\n var searchPart = substringWordsToMatch[substringWordMatchIndex];\n var replacedValue = generateBoldedTitle(valuePart, searchPart);\n\n if (replacedValue.length > valuePart.length) {\n wordsToMatch[wordMatchIndex] = replacedValue;\n }\n }\n }\n }\n }\n }\n\n return wordsToMatch.join(' ');\n}\nvar formatDate = function formatDate(date) {\n var monthFormat;\n var dayFormat;\n var dateMonth = moment(date).month();\n var dateDay = moment(date).date();\n\n if (dateMonth === 4) {\n monthFormat = 'MMM';\n } else {\n monthFormat = 'MMM.';\n }\n\n if (dateDay >= 10) {\n dayFormat = 'D,';\n } else if (dateDay < 10) {\n dayFormat = 'D,';\n }\n\n return \"\".concat(monthFormat, \" \").concat(dayFormat, \" YYYY\");\n};\n\nvar padZerosToString = function padZerosToString(str) {\n var withAdditionalZeros = str;\n\n while (withAdditionalZeros.length < 10) {\n withAdditionalZeros = '0' + withAdditionalZeros;\n }\n\n return withAdditionalZeros;\n};\nfunction AutoSuggestFilers(_ref) {\n var item = _ref.item,\n query = _ref.query;\n return /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__category-item\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"autosuggest-menu__category\"\n }, \"SEC Filer\"), /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"autosuggest-menu__results-list\"\n }, item.length > 0 && item.map(function (result) {\n var boldedTitle = boldResults(result.getDocumentValue('issuername'), query);\n var boldedCik = result.getDocumentValue('issuercik') ? \"CIK \".concat(boldResults(padZerosToString(result.getDocumentValue('issuercik')), query), \" \") : '';\n var boldedTicker = result.getDocumentValue('issuerticker') ? \"TICKER \".concat(boldResults(result.getDocumentValue('issuerticker'), query)) : '';\n var boldedSubtitle = \"\".concat(boldedCik).concat(boldedTicker);\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: \"\",\n className: \"autosuggest-menu__results-item\"\n }, result.getDocumentValue('issuercik') && result.getDocumentValue('issuerid') ? /*#__PURE__*/React__default.createElement(\"a\", {\n href: \"/resources/auditorsearch/issuers/?issuerid=\".concat(result.getDocumentValue('issuerid'), \"&issuercik=\").concat(result.getDocumentValue('issuercik')),\n className: \"results-item__title\",\n dangerouslySetInnerHTML: {\n __html: boldedTitle\n }\n }) : /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__title\",\n dangerouslySetInnerHTML: {\n __html: boldedTitle\n }\n }), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle\",\n dangerouslySetInnerHTML: {\n __html: boldedSubtitle\n }\n }));\n })));\n}\n\nfunction AutoSuggestPartners(_ref) {\n var item = _ref.item,\n query = _ref.query;\n\n function matchOtherPartnerNames(partnerNamesArray) {\n var alternatePartnerName = '';\n\n if (partnerNamesArray) {\n for (var name in partnerNamesArray) {\n if (partnerNamesArray[name].toLowerCase().indexOf(query.toLowerCase()) > -1) {\n alternatePartnerName = partnerNamesArray[name];\n }\n }\n }\n\n return alternatePartnerName;\n }\n\n return /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__category-item\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"autosuggest-menu__category\"\n }, \"Engagement Partner\"), /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"autosuggest-menu__results-list\"\n }, item.length > 0 && item.map(function (result) {\n var partnerTitleFormatted = result.getDocumentValue('engagementpartnername');\n var firmTitleFormatted = result.getDocumentValue('firmname'); // Extract other names for partners as array, loop and check for matching names to concat\n\n var partnerOtherNames = result && result.Document && result.Document.engagementpartnerothernames;\n var matchingPartnerName = matchOtherPartnerNames(partnerOtherNames);\n\n if (matchingPartnerName) {\n partnerTitleFormatted = partnerTitleFormatted.concat(' (', \"\".concat(matchingPartnerName, \")\"));\n }\n\n var boldedTitle = boldResults(partnerTitleFormatted, query);\n var boldedSubtitle = boldResults(firmTitleFormatted, query);\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: \"\",\n className: \"autosuggest-menu__results-item\"\n }, /*#__PURE__*/React__default.createElement(\"a\", {\n href: \"/resources/auditorsearch/engagement-partners/?engagementpartnermasterid=\".concat(result.getDocumentValue('engagementpartnermasterid')),\n className: \"results-item__title\",\n dangerouslySetInnerHTML: {\n __html: boldedTitle\n }\n }), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle break-word\",\n dangerouslySetInnerHTML: {\n __html: boldedSubtitle\n }\n }));\n })));\n}\n\nfunction AutoSuggestFirms(_ref) {\n var item = _ref.item,\n query = _ref.query;\n return /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__category-item\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"autosuggest-menu__category\"\n }, \"Accounting Firm\"), /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"autosuggest-menu__results-list\"\n }, item.length > 0 && item.map(function (result) {\n var boldedTitle = boldResults(result.getDocumentValue('firmname'), query);\n var boldedFirmId = boldResults(result.getDocumentValue('firmid'), query);\n var boldedCountry = boldResults(result.getDocumentValue('firmcountry'), query);\n boldedTitle = boldedFirmId ? \"\".concat(boldedTitle.concat(' (', boldedFirmId), \")\") : boldedTitle;\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: \"\",\n className: \"autosuggest-menu__results-item\"\n }, /*#__PURE__*/React__default.createElement(\"a\", {\n href: \"/resources/auditorsearch/firms/?firmid=\".concat(result.getDocumentValue('firmid')),\n className: \"results-item__title break-word\",\n dangerouslySetInnerHTML: {\n __html: boldedTitle\n }\n }), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle\",\n dangerouslySetInnerHTML: {\n __html: boldedCountry\n }\n }));\n })));\n}\n\nvar secFilersParams = {\n FieldOverride: ['issuername', 'issuerticker', 'issuercik', 'issuerid'],\n FacetSelections: {\n contenttypetitle: ['Issuer']\n }\n};\nvar engagementPartnersParams = {\n FieldOverride: ['engagementpartnername', 'engagementpartnerothernames', 'engagementpartnermasterid', 'firmname'],\n FacetSelections: {\n contenttypetitle: ['Engagement Partner']\n }\n};\nvar accountingFirmsParams = {\n FieldOverride: ['firmname', 'firmcountry', 'firmid'],\n FacetSelections: {\n contenttypetitle: ['Accounting Firm']\n }\n};\n\nfunction AutoSuggest(_ref) {\n var query = _ref.query;\n\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config;\n\n var client = new HawkClient(config);\n\n var _useState = useState([]),\n _useState2 = _slicedToArray$1(_useState, 2),\n results = _useState2[0],\n setResults = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray$1(_useState3, 2),\n isLoading = _useState4[0],\n setIsLoading = _useState4[1]; // debounce the input search string so that we only do an autocomplete query every so often\n\n\n useEffect(function () {\n // default to 200ms if not specified\n var debounceMs = config.autocompleteDebounce || 200;\n var cts = axios$1.CancelToken.source();\n var timeout = setTimeout(function () {\n return collectAutosuggestData(query, cts.token);\n }, debounceMs);\n return function () {\n cts.cancel();\n clearTimeout(timeout);\n };\n }, [query, config.autocompleteDebounce]);\n /**\r\n * Wraps a series of search requests for the Hawk API in a promise to smoothly control and construct results\r\n * @param input The user entered search string that results will be autocompleted for.\r\n */\n\n function collectAutosuggestData(_x, _x2) {\n return _collectAutosuggestData.apply(this, arguments);\n }\n /**\r\n * Performs an autocomplete request to the Hawk API and populates the result set of this component.\r\n * @param input The user entered search string that results will be autocompleted for.\r\n * @param contentParams the content specific properties of the request body to be included with the base parameters\r\n */\n\n\n function _collectAutosuggestData() {\n _collectAutosuggestData = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(input, cancelToken) {\n var response, autosuggestData;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n setIsLoading(true);\n _context.prev = 1;\n _context.next = 4;\n return Promise.allSettled([getAutosuggestContentFor(input, engagementPartnersParams, cancelToken), getAutosuggestContentFor(input, secFilersParams, cancelToken), getAutosuggestContentFor(input, accountingFirmsParams, cancelToken)]);\n\n case 4:\n response = _context.sent;\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](1);\n console.error('Request error: ', _context.t0);\n\n case 10:\n if (response) {\n autosuggestData = response.map(function (data) {\n var contentData = [];\n\n if (data.status === 'fulfilled') {\n contentData = data.value.Results.map(function (result) {\n return new Result(result);\n });\n }\n\n return contentData;\n });\n setResults(autosuggestData);\n }\n\n setIsLoading(false);\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[1, 7]]);\n }));\n return _collectAutosuggestData.apply(this, arguments);\n }\n\n function getAutosuggestContentFor(_x3, _x4, _x5) {\n return _getAutosuggestContentFor.apply(this, arguments);\n }\n\n function _getAutosuggestContentFor() {\n _getAutosuggestContentFor = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2(input, contentParams, cancellationToken) {\n var baseParams, contentTypeParams;\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n baseParams = {\n ClientGuid: config.clientGuid,\n MaxPerPage: 3,\n FacetOverride: ['contenttypetitle'],\n Keyword: decodeURIComponent(input)\n };\n contentTypeParams = Object.assign(baseParams, contentParams);\n _context2.next = 4;\n return client.search(contentTypeParams, cancellationToken);\n\n case 4:\n return _context2.abrupt(\"return\", _context2.sent);\n\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _getAutosuggestContentFor.apply(this, arguments);\n }\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"autosuggest-menu\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"dropdown-menu autosuggest-menu__list\"\n }, isLoading && /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__item\"\n }, \"Loading...\"), !isLoading && results.length > 0 && results.some(function (apiCall) {\n return apiCall.length > 0;\n }) && results.map(function (itemType, index) {\n var component;\n\n switch (index) {\n case 0:\n component = itemType.length > 0 ? /*#__PURE__*/React__default.createElement(AutoSuggestPartners, {\n query: query,\n key: \"autosuggestType_\".concat(index),\n item: itemType\n }) : null;\n break;\n\n case 1:\n component = itemType.length > 0 ? /*#__PURE__*/React__default.createElement(AutoSuggestFilers, {\n query: query,\n key: \"autosuggestType_\".concat(index),\n item: itemType\n }) : null;\n break;\n\n case 2:\n component = itemType.length > 0 ? /*#__PURE__*/React__default.createElement(AutoSuggestFirms, {\n query: query,\n key: \"autosuggestType_\".concat(index),\n item: itemType\n }) : null;\n break;\n\n default:\n component = /*#__PURE__*/React__default.createElement(\"div\", null, \"error\");\n }\n\n return component;\n }), !isLoading && results.length > 0 && results.every(function (apiCall) {\n return apiCall.length === 0;\n }) && /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__item\"\n }, t('No results.'))));\n}\n\nfunction SearchSuggestions(_ref) {\n var query = _ref.query,\n downshift = _ref.downshift;\n\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config;\n\n var client = new HawkClient(config);\n\n var _useState = useState({}),\n _useState2 = _slicedToArray$1(_useState, 2),\n results = _useState2[0],\n setResults = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray$1(_useState3, 2),\n isLoading = _useState4[0],\n setIsLoading = _useState4[1];\n\n var dateParsingFormat = 'YYYY-MM-DDTHH:mm:ssZ'; // debounce the input search string so that we only do an autocomplete query every so often\n\n useEffect(function () {\n // default to 200ms if not specified\n var debounceMs = config.autocompleteDebounce || 200;\n var cts = axios$1.CancelToken.source();\n var timeout = setTimeout(function () {\n return doAutocomplete(query, cts.token);\n }, debounceMs);\n return function () {\n cts.cancel();\n clearTimeout(timeout);\n };\n }, [query, config.autocompleteDebounce]);\n\n function applySearchParamsContext(configuration, searchParams) {\n // The index name in the configuration takes priority over the one supplied from the URL\n if (configuration.indexName) {\n Object.assign(searchParams, {\n IndexName: configuration.indexName\n });\n } // If the index name is set to 'current' send an empty value to search in the current index\n\n\n if (searchParams.IndexName === 'current') {\n Object.assign(searchParams, {\n IndexName: ''\n });\n }\n }\n /**\r\n * Performs an autocomplete request to the Hawk API and populates the result set of this component.\r\n * @param input The user entered search string that results will be autocompleted for.\r\n */\n\n\n function doAutocomplete(_x, _x2) {\n return _doAutocomplete.apply(this, arguments);\n }\n\n function _doAutocomplete() {\n _doAutocomplete = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(input, cancellationToken) {\n var response, searchParams;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n setIsLoading(true);\n response = null;\n searchParams = {\n ClientGuid: config.clientGuid,\n IndexName: config.indexName,\n Keyword: decodeURIComponent(input),\n DisplayFullResponse: true\n };\n applySearchParamsContext(config, searchParams);\n _context.prev = 4;\n _context.next = 7;\n return client.autocomplete(searchParams, cancellationToken);\n\n case 7:\n response = _context.sent;\n _context.next = 15;\n break;\n\n case 10:\n _context.prev = 10;\n _context.t0 = _context[\"catch\"](4);\n\n if (!axios$1.isCancel(_context.t0)) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 14:\n console.error('Autocomplete request error:', _context.t0);\n\n case 15:\n setIsLoading(false);\n\n if (response) {\n setResults(response);\n }\n\n case 17:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[4, 10]]);\n }));\n return _doAutocomplete.apply(this, arguments);\n }\n\n function deserializeField(item, field) {\n if (item && item.Document && item.Document.hasOwnProperty(field)) {\n var data = item.Document[field];\n\n if (data.length) {\n try {\n data = data.map(function (i) {\n return JSON.parse(i);\n });\n } catch (e) {\n console.error(e);\n }\n }\n\n return data;\n }\n }\n\n function getTitleAndUrlForContentType(result) {\n var _hawkResult$getDocume;\n\n var res = result.Results,\n value = result.Value;\n var hawkResult = new Result(res);\n var contentType = hawkResult.getDocumentValue('contenttypename');\n var contentLabel = hawkResult.getDocumentValue('contenttypelabel');\n var resultTitle = hawkResult.getDocumentValue('title');\n var resultUrl = hawkResult.getDocumentValue('pageurl');\n var extraLabels = null;\n\n switch (contentType) {\n case 'DeniedIssuerAuditClient':\n resultTitle = hawkResult.getDocumentValue('publiccompany') || '';\n resultUrl = \"/oversight/international/denied-access-to-inspections?publiccompany=\".concat(encodeURIComponent(resultTitle));\n break;\n\n case 'NewsItem':\n var decodedEnforceOrderDoc = deserializeField(hawkResult, 'enforcementorderdocument');\n var docCountry = hawkResult.getDocumentValue('country');\n var docEffectiveDate = hawkResult.getDocumentValue('effectivedate');\n resultUrl = decodedEnforceOrderDoc && decodedEnforceOrderDoc.length > 0 && decodedEnforceOrderDoc[0].mediaUrl;\n extraLabels = /*#__PURE__*/React__default.createElement(\"div\", null, docCountry ? /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle break-word\"\n }, docCountry) : null, docEffectiveDate ? /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle break-word\"\n }, moment(docEffectiveDate, dateParsingFormat).format(formatDate(docEffectiveDate))) : null);\n break;\n\n case 'DocketDocument':\n resultTitle = hawkResult.getDocumentValue('description');\n break;\n\n case 'SupportingDocumentation':\n var decodedName = deserializeField(hawkResult, 'name');\n var deserializedDocketDoc = deserializeField(hawkResult, 'docket');\n var releaseDate = hawkResult.getDocumentValue('releasedate');\n resultUrl = decodedName && decodedName.length > 0 && decodedName[0].mediaUrl;\n extraLabels = /*#__PURE__*/React__default.createElement(\"div\", null, deserializedDocketDoc && deserializedDocketDoc.length > 0 ? /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle break-word\"\n }, deserializedDocketDoc[0].title) : null, releaseDate ? /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle break-word\"\n }, moment(releaseDate, dateParsingFormat).format(formatDate(releaseDate))) : null);\n break;\n\n case 'InspectionReport':\n var deserializedReport = deserializeField(hawkResult, 'name');\n var reportCountry = hawkResult.getDocumentValue('country');\n var reportEffectiveDate = hawkResult.getDocumentValue('effectivedate');\n resultUrl = deserializedReport && deserializedReport.length > 0 && deserializedReport[0].mediaUrl;\n extraLabels = /*#__PURE__*/React__default.createElement(\"div\", null, reportCountry ? /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle break-word\"\n }, reportCountry) : null, reportEffectiveDate ? /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle break-word\"\n }, moment(reportEffectiveDate, dateParsingFormat).format(formatDate(reportEffectiveDate))) : null);\n break;\n\n case 'RulemakingDocket':\n resultUrl = \"\".concat((_hawkResult$getDocume = hawkResult.getDocumentValue('docketcontentpage')) === null || _hawkResult$getDocume === void 0 ? void 0 : _hawkResult$getDocume.substring(1));\n break;\n\n case 'GlobalNetwork':\n resultTitle = hawkResult.getDocumentValue('globalnetwork') || '';\n resultUrl = \"/oversight/registration/global-network-firms?globalnetwork=\".concat(encodeURIComponent(resultTitle));\n break;\n\n case 'PcaobOperationsDocument':\n var deserializedDocument = deserializeField(hawkResult, 'documentlink');\n resultUrl = deserializedDocument && deserializedDocument.length > 0 && deserializedDocument[0].mediaUrl;\n break;\n\n case 'Document':\n resultUrl = hawkResult.getDocumentValue('link');\n }\n\n return [resultTitle, resultUrl, contentLabel, extraLabels];\n }\n\n var content = results.Content,\n popular = results.Popular;\n var getMenuProps = downshift.getMenuProps;\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"autosuggest-menu\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", _extends({\n className: \"dropdown-menu autosuggest-menu__list\"\n }, getMenuProps({\n 'aria-label': 'Auto suggest menu'\n })), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"autocomplete container\"\n }, !isLoading && content && content.length > 0 ? /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__category-item\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"autosuggest-menu__category\"\n }, \"Content Matches\"), /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"autosuggest-menu__results-list\"\n }, content.map(function (result) {\n var _getTitleAndUrlForCon = getTitleAndUrlForContentType(result),\n _getTitleAndUrlForCon2 = _slicedToArray$1(_getTitleAndUrlForCon, 4),\n title = _getTitleAndUrlForCon2[0],\n url = _getTitleAndUrlForCon2[1],\n label = _getTitleAndUrlForCon2[2],\n additionalLabels = _getTitleAndUrlForCon2[3];\n\n var boldedTitle = boldResults(title, query);\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: \"\",\n className: \"autosuggest-menu__results-item\"\n }, /*#__PURE__*/React__default.createElement(\"a\", {\n href: \"\".concat(url),\n className: \"results-item__title\",\n dangerouslySetInnerHTML: {\n __html: boldedTitle\n },\n onClick: function onClick() {\n TrackingEvent$1.track('autocompleteclick', {\n keyword: query,\n suggestType: 3,\n name: title,\n url: {\n url: url\n }\n });\n }\n }), additionalLabels, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"results-item__subtitle break-word\"\n }, label));\n }))) : null, !isLoading && popular && popular.length > 0 ? /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__category-item\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"autosuggest-menu__category\"\n }, \"Popular Searches\"), /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"autosuggest-menu__results-list\"\n }, popular.map(function (result) {\n var value = result.Value,\n url = result.Url;\n var keywords = url.split('?').pop();\n\n if (!keywords) {\n keywords = \"keyword=\".concat(encodeURIComponent(query));\n }\n\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: \"\",\n className: \"autosuggest-menu__results-item\"\n }, /*#__PURE__*/React__default.createElement(\"a\", {\n href: \"/search?\".concat(keywords),\n className: \"results-item__title\",\n dangerouslySetInnerHTML: {\n __html: value\n },\n onClick: function onClick() {\n TrackingEvent$1.track('autocompleteclick', {\n keyword: query,\n suggestType: 3,\n name: result.Value\n /*result.ProductName*/\n ,\n url: result.Url\n });\n }\n }));\n }))) : null, isLoading && /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__item no-results\"\n }, \"Loading...\"), !isLoading && content && content.length === 0 && popular && popular.length === 0 && /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"autosuggest-menu__item no-results\"\n }, t('No results.')))));\n}\n\n/**\r\n * Search SVG\r\n *\r\n * @returns\r\n */\nfunction SearchSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n id: \"icon-search\",\n viewBox: \"0 0 32 32\",\n className: 'icon ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n d: \"M31.008 27.231l-7.58-6.447c-0.784-0.705-1.622-1.029-2.299-0.998 1.789-2.096 2.87-4.815 2.87-7.787 0-6.627-5.373-12-12-12s-12 5.373-12 12 5.373 12 12 12c2.972 0 5.691-1.081 7.787-2.87-0.031 0.677 0.293 1.515 0.998 2.299l6.447 7.58c1.104 1.226 2.907 1.33 4.007 0.23s0.997-2.903-0.23-4.007zM12 20c-4.418 0-8-3.582-8-8s3.582-8 8-8 8 3.582 8 8-3.582 8-8 8z\"\n }));\n}\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar Downshift = /*#__PURE__*/React__default.lazy(function () {\n return import(\n /* webpackChunkName: \"downshift\" */\n 'downshift');\n});\n\nfunction SearchBoxBase(_ref) {\n var initialValue = _ref.initialValue,\n onSubmit = _ref.onSubmit,\n isAuditorSearch = _ref.isAuditorSearch;\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n var pageUrl = window.location.href;\n var searchTermExists = pageUrl.includes('keyword=');\n /** Called when the internal state of downshift changes - we're handling a couple custom behaviors here */\n\n function handleStateChange(state, changes) {\n if ( // NOTE: these strings are hardcoded to support code splitting downshift.\n // using the constants from the package will prevent code splitting from operating correctly\n changes.type === '__autocomplete_mouseup__' || changes.type === '__autocomplete_keydown_enter__' || changes.type === '__autocomplete_click_item__') {\n // when:\n //\n // 1. the mouse the clicked outside of downshift\n // 2. enter is pressed on the keyboard\n // 3. an item is selected from the dropdown\n //\n // then we want to retain the input value that was originally typed in. by default downshift\n // will clear the input value, so we're overriding this behavior here.\n return _objectSpread$5(_objectSpread$5({}, changes), {}, {\n inputValue: state.inputValue\n });\n }\n\n return changes;\n }\n /** Called when an item has been selected from the autocomplete results. */\n\n\n function handleItemChange(item, downshift) {\n location.assign(item.Url);\n }\n\n function fnUseDropdown(inp, options) {\n return isAuditorSearch ? /*#__PURE__*/React__default.createElement(AutoSuggest, {\n query: inp || ''\n }) : /*#__PURE__*/React__default.createElement(SearchSuggestions, {\n query: inp || '',\n downshift: options\n });\n }\n\n return /*#__PURE__*/React__default.createElement(React__default.Suspense, {\n fallback: /*#__PURE__*/React__default.createElement(\"div\", null, t('Loading'), \"...\")\n }, /*#__PURE__*/React__default.createElement(Downshift, {\n stateReducer: handleStateChange,\n itemToString: function itemToString(item) {\n return item ? item.ProductName : '';\n },\n onChange: handleItemChange,\n initialInputValue: decodeURIComponent(initialValue || '')\n }, function (options) {\n var isOpen = options.isOpen,\n inputValue = options.inputValue,\n getInputProps = options.getInputProps,\n openMenu = options.openMenu;\n var showSuggestions = isOpen && inputValue && inputValue.length > 0;\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk__searchBox__searchInput\",\n \"aria-labelledby\": \"autocomplete-search-box\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n id: \"autocomplete-search-box\",\n className: \"hidden-label\"\n }, \"Autocomplete search box\"), /*#__PURE__*/React__default.createElement(\"input\", _extends({\n type: \"text\",\n style: {\n width: '100%'\n }\n }, getInputProps({\n onKeyDown: function onKeyDown(event) {\n if (onSubmit) {\n onSubmit(options, event);\n }\n },\n // when the input is focused again, reopen the downshift menu\n onFocus: function onFocus() {\n if (inputValue && inputValue.length > 0) {\n openMenu();\n }\n },\n placeholder: searchTermExists ? t('Enter a new search term') : t('Enter a search term'),\n 'aria-labelledby': 'autocomplete-search-box'\n }))), /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"search-btn__icon\",\n onClick: function onClick() {\n return onSubmit(options);\n }\n }, /*#__PURE__*/React__default.createElement(SearchSVG, {\n \"class\": \"search-icon\"\n })), showSuggestions ? fnUseDropdown(inputValue, options) : null);\n }));\n}\n\n/**\r\n * This component is a simple search input box (with autosuggest) that can be placed globally throughout the site.\r\n * This search box is intended to be used on non-search pages. On search pages, the `SearchBox` component should be\r\n * used instead.\r\n */\nfunction GlobalSearchBox(_ref) {\n var isAuditorSearch = _ref.isAuditorSearch;\n\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config;\n\n var searchUrl = config.searchPageUrl;\n\n function handleSubmit(downshift, event) {\n var inputValue = downshift.inputValue;\n var redirect = \"\".concat(searchUrl, \"?keyword=\").concat(inputValue);\n\n if (!event || event && event.key === 'Enter') {\n if (config.indexName) {\n redirect += '&indexName=' + config.indexName;\n }\n\n location.assign(redirect);\n }\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk\"\n }, /*#__PURE__*/React__default.createElement(SearchBoxBase, {\n onSubmit: handleSubmit,\n isAuditorSearch: isAuditorSearch\n }));\n}\n\n/**\r\n * This component is the search input box (with autosuggest) that should be utilized on search pages. For a simple\r\n * search input box that is meant to be used on non-search pages (or globally), see `GlobalSearchBox`.\r\n */\nfunction SearchBox() {\n var _useHawkSearch = useHawkSearch(),\n store = _useHawkSearch.store,\n actor = _useHawkSearch.actor;\n\n function handleSubmit(downshift, event) {\n if (!event || event && event.key === 'Enter') {\n actor.setSearch({\n PageId: undefined,\n CustomUrl: undefined,\n Keyword: encodeURIComponent(event ? event.currentTarget.value : ''),\n FacetSelections: undefined\n });\n }\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk__searchBox\"\n }, /*#__PURE__*/React__default.createElement(SearchBoxBase, {\n initialValue: store && store.pendingSearch ? store.pendingSearch.Keyword : '',\n onSubmit: handleSubmit\n }));\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread();\n}\n\n/**\r\n * Plus SVG\r\n *\r\n * @returns\r\n */\nfunction PlusSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 32 32\",\n className: 'icon ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n d: \"M31 12h-11v-11c0-0.552-0.448-1-1-1h-6c-0.552 0-1 0.448-1 1v11h-11c-0.552 0-1 0.448-1 1v6c0 0.552 0.448 1 1 1h11v11c0 0.552 0.448 1 1 1h6c0.552 0 1-0.448 1-1v-11h11c0.552 0 1-0.448 1-1v-6c0-0.552-0.448-1-1-1z\"\n }));\n}\n\n/**\r\n * Minus SVG\r\n *\r\n * @returns\r\n */\nfunction MinusSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 32 32\",\n className: 'icon ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n d: \"M0 13v6c0 0.552 0.448 1 1 1h30c0.552 0 1-0.448 1-1v-6c0-0.552-0.448-1-1-1h-30c-0.552 0-1 0.448-1 1z\"\n }));\n}\n\n/**\r\n * Questionmark SVG\r\n *\r\n * @returns\r\n */\nfunction QuestionmarkSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 20 20\",\n className: 'icon ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n d: \"M 10.976562 14.785156 C 10.976562 15.324219 10.539062 15.761719 10 15.761719 C 9.460938 15.761719 9.023438 15.324219 9.023438 14.785156 C 9.023438 14.246094 9.460938 13.808594 10 13.808594 C 10.539062 13.808594 10.976562 14.246094 10.976562 14.785156 Z M 10.976562 14.785156 \"\n }), /*#__PURE__*/createElement(\"path\", {\n d: \"M 10 0 C 4.472656 0 0 4.472656 0 10 C 0 15.527344 4.472656 20 10 20 C 15.527344 20 20 15.527344 20 10 C 20 4.472656 15.527344 0 10 0 Z M 10 18.4375 C 5.335938 18.4375 1.5625 14.664062 1.5625 10 C 1.5625 5.335938 5.335938 1.5625 10 1.5625 C 14.664062 1.5625 18.4375 5.335938 18.4375 10 C 18.4375 14.664062 14.664062 18.4375 10 18.4375 Z M 10 18.4375 \"\n }), /*#__PURE__*/createElement(\"path\", {\n d: \"M 10 5.019531 C 8.277344 5.019531 6.875 6.421875 6.875 8.144531 C 6.875 8.574219 7.226562 8.925781 7.65625 8.925781 C 8.085938 8.925781 8.4375 8.574219 8.4375 8.144531 C 8.4375 7.28125 9.136719 6.582031 10 6.582031 C 10.863281 6.582031 11.5625 7.28125 11.5625 8.144531 C 11.5625 9.007812 10.863281 9.707031 10 9.707031 C 9.570312 9.707031 9.21875 10.058594 9.21875 10.488281 L 9.21875 12.441406 C 9.21875 12.871094 9.570312 13.222656 10 13.222656 C 10.429688 13.222656 10.78125 12.871094 10.78125 12.441406 L 10.78125 11.171875 C 12.128906 10.824219 13.125 9.597656 13.125 8.144531 C 13.125 6.421875 11.722656 5.019531 10 5.019531 Z M 10 5.019531 \"\n }));\n}\n\nvar FacetContext = /*#__PURE__*/React__default.createContext({});\n\nfunction Facet$1(_ref) {\n var facet = _ref.facet,\n children = _ref.children;\n\n var _useHawkSearch = useHawkSearch(),\n searchActor = _useHawkSearch.actor;\n\n var wrapperRef = useRef(null);\n\n var _useState = useState(''),\n _useState2 = _slicedToArray$1(_useState, 2),\n filter = _useState2[0],\n setFilter = _useState2[1];\n\n var _useState3 = useState(facet.shouldTruncate),\n _useState4 = _slicedToArray$1(_useState3, 2),\n isTruncated = _useState4[0],\n setTruncated = _useState4[1];\n\n var _useState5 = useState(facet.IsCollapsible && facet.IsCollapsedDefault),\n _useState6 = _slicedToArray$1(_useState5, 2),\n isCollapsed = _useState6[0],\n setCollapsed = _useState6[1];\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config;\n\n var hidePageFacet = facet.Field === 'firmid' || facet.Field === 'issuercik' || facet.Field === 'engagementpartnermasterid';\n\n function selectFacet(facetValue) {\n setFilter('');\n searchActor.toggleFacetValue(facet, facetValue);\n }\n\n function setFacets(values) {\n setFilter('');\n searchActor.setFacetValues(facet, values);\n }\n\n function negateFacet(facetValue) {\n setFilter('');\n searchActor.toggleFacetValue(facet, facetValue,\n /* negate */\n true);\n }\n\n function inTruncationLimit() {\n if (config.facetTruncateLimit) {\n return facet.Values.length <= config.facetTruncateLimit;\n } else {\n return true;\n }\n }\n\n function renderTruncation() {\n // only show the toggle button if the facet is configured for truncation and we're not filtering\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, facet.shouldTruncate && !filter && inTruncationLimit() && /*#__PURE__*/React__default.createElement(\"button\", {\n \"aria-expanded\": !isTruncated,\n onClick: function onClick() {\n return actor.setTruncated(!isTruncated);\n },\n className: \"hawk-facet-rail__show-more-btn\"\n }, isTruncated ? /*#__PURE__*/React__default.createElement(\"div\", null, /*#__PURE__*/React__default.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"(+)\"), \" Show \".concat(remainingFacets, \" More\")) : /*#__PURE__*/React__default.createElement(\"div\", null, /*#__PURE__*/React__default.createElement(\"span\", {\n \"aria-hidden\": \"true\"\n }, \"(-)\"), \" Show Less\")));\n } // TODO: sort facet values\n\n\n var facetValues = facet.Values; // first, perform any filtering if enabled and a filter has been typed in\n\n if (facet.shouldSearch && filter) {\n facetValues = facet.Values.filter(function (val) {\n if (!val.Label) {\n // if a facet value doesn't have a label, we can't really filter down to it\n // so exclude it\n return false;\n }\n\n return val.Label.toLowerCase().indexOf(filter.toLowerCase()) !== -1;\n });\n } // next, handle truncation\n\n\n var remainingFacets = 0;\n\n if (facet.shouldTruncate && isTruncated) {\n var valuesBeforeTrunc = facetValues.length;\n facetValues = facetValues.slice(0, facet.TruncateThreshold);\n remainingFacets = valuesBeforeTrunc - facet.TruncateThreshold;\n }\n\n var actor = {\n selectFacet: selectFacet,\n negateFacet: negateFacet,\n setFacets: setFacets,\n setFilter: setFilter,\n setTruncated: setTruncated,\n setCollapsed: setCollapsed\n };\n var state = {\n facetValues: facetValues,\n filter: filter,\n isTruncated: isTruncated,\n isCollapsed: isCollapsed,\n remainingFacets: remainingFacets,\n decimalPrecision: 2\n };\n var renderer = {\n renderTruncation: renderTruncation\n };\n\n function toggleCollapsible(event) {\n if (wrapperRef.current && wrapperRef.current.contains(event.target)) {\n return;\n }\n\n setCollapsed(!isCollapsed);\n }\n\n return /*#__PURE__*/React__default.createElement(FacetContext.Provider, {\n value: {\n facet: facet,\n state: state,\n actor: actor,\n renderer: renderer\n }\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet\".concat(hidePageFacet ? ' removed' : '')\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n \"aria-expanded\": !isCollapsed,\n className: \"hawk-facet-rail__facet-heading\",\n onClick: function onClick(event) {\n return toggleCollapsible(event);\n }\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-heading-title\"\n }, facet.Name), facet.Tooltip && /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"custom-tooltip\",\n ref: wrapperRef\n }, /*#__PURE__*/React__default.createElement(QuestionmarkSVG, {\n \"class\": \"hawk-questionmark\"\n }), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"right\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: facet.Tooltip\n }\n }), /*#__PURE__*/React__default.createElement(\"i\", null))), isCollapsed ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(PlusSVG, null), \" \", /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Expand facet category\"), ' ') : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MinusSVG, null), \" \", /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Collapse facet category\"))), !isCollapsed && /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-body\"\n }, facet.shouldSearch && /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet__quick-lookup\"\n }, /*#__PURE__*/React__default.createElement(\"input\", {\n value: filter,\n onChange: function onChange(e) {\n return setFilter(e.currentTarget.value);\n },\n type: \"text\",\n placeholder: t('Quick Lookup')\n })), children)));\n}\n\nfunction useFacet() {\n return useContext(FacetContext);\n}\n\nfunction PlaceholderFacetValue() {\n var _useState = useState(Math.round(Math.random() * (200 - 100) + 100)),\n _useState2 = _slicedToArray$1(_useState, 1),\n width = _useState2[0];\n\n return /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"hawk-facet-rail__facet-list-item\"\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-facet-rail__facet-checkbox hawk-facet-rail__facet-checkbox-placeholder\"\n }), /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"hawk-facet-rail__facet-btn\"\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-facet-rail__facet-name\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-name-placeholder\",\n style: {\n width: \"\".concat(width, \"px\")\n }\n }))));\n}\n\nfunction PlaceholderFacet() {\n var _useState = useState(Math.round(Math.random() * (250 - 125) + 125)),\n _useState2 = _slicedToArray$1(_useState, 1),\n width = _useState2[0];\n\n var _useState3 = useState(Math.round(Math.random() * (8 - 1) + 1)),\n _useState4 = _slicedToArray$1(_useState3, 1),\n numValues = _useState4[0];\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-heading\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-heading-placeholder\",\n style: {\n width: \"\".concat(width, \"px\")\n }\n })), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-body\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values hawk-facet-rail__facet-values-placeholder\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-checkbox\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawk-facet-rail__facet-list\"\n }, _toConsumableArray(Array(numValues)).map(function (_, i) {\n return /*#__PURE__*/React__default.createElement(PlaceholderFacetValue, {\n key: i\n });\n }))))));\n}\n\n/**\r\n * Checkmark SVG\r\n *\r\n * @returns\r\n */\nfunction CheckmarkSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 32 32\",\n className: 'icon ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n d: \"M27 4l-15 15-7-7-5 5 12 12 20-20z\"\n }));\n}\n\nfunction SecondarySearchFacet(_ref) {\n var searchString = _ref.searchString;\n\n var _useState = useState(false),\n _useState2 = _slicedToArray$1(_useState, 2),\n hideFacet = _useState2[0],\n setHideFacet = _useState2[1];\n\n var urlSearchString = window.location.search;\n var urlPath = window.location.pathname;\n var urlOrigin = window.location.origin;\n var urlParams = new URLSearchParams(urlSearchString);\n\n function toggleFacet() {\n setHideFacet(!hideFacet);\n }\n\n function clearSecondarySearch() {\n urlParams[\"delete\"]('searchWithin');\n var newParams = [];\n urlParams.forEach(function (value, key, parent) {\n newParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n });\n /* I'm leaving the old logic commented out just in case a revert is needed\r\n for (const par of urlParams.entries()) {\r\n \tnewParams.push(`${par[0]}=${encodeURIComponent(par[1])}`);\r\n }\r\n */\n\n window.location.href = \"\".concat(urlOrigin).concat(urlPath, \"?\").concat(newParams.join('&'));\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet\".concat(hideFacet ? ' removed' : '')\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"hawk-facet-rail__facet-heading\",\n onClick: function onClick() {\n return toggleFacet();\n }\n }, /*#__PURE__*/React__default.createElement(\"h4\", null, \"Search Within\"), hideFacet ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(PlusSVG, null), \" \", /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Expand facet category\"), ' ') : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MinusSVG, null), \" \", /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Collapse facet category\"))), !hideFacet && /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-body\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-checkbox\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawk-facet-rail__facet-list\"\n }, /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"hawk-facet-rail__facet-list-item\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"hawk-facet-rail__facet-btn\",\n onClick: function onClick() {\n return clearSecondarySearch();\n }\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-facet-rail__facet-checkbox hawk-facet-rail__facet-checkbox--checked\"\n }, /*#__PURE__*/React__default.createElement(CheckmarkSVG, {\n \"class\": \"hawk-facet-rail__facet-checkbox-icon\"\n })), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-facet-rail__facet-name\"\n }, searchString))))))));\n}\n\n/**\r\n * Dash circle SVG\r\n *\r\n * @returns\r\n */\nfunction DashCircleSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 32 32\",\n className: 'icon icon-help-header ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n fill: \"#5c5c5c\",\n d: \"M16 0c8.837 0 16 7.163 16 16s-7.163 16-16 16c-8.837 0-16-7.163-16-16v0c0-8.837 7.163-16 16-16v0z\"\n }), /*#__PURE__*/createElement(\"path\", {\n fill: \"#fff\",\n d: \"M21.51 17.594h-11.733c-0.884 0-1.6-0.716-1.6-1.6s0.716-1.6 1.6-1.6h11.733c0.884 0 1.6 0.716 1.6 1.6s-0.716 1.6-1.6 1.6z\"\n }));\n}\n\n/**\r\n * Plus SVG\r\n *\r\n * @returns\r\n */\nfunction PlusCircleSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 20 20\",\n className: 'icon ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n d: \"M11 9v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zM10 20c-5.523 0-10-4.477-10-10s4.477-10 10-10v0c5.523 0 10 4.477 10 10s-4.477 10-10 10v0z\"\n }));\n}\n\nfunction Checkbox() {\n var _useHawkSearch = useHawkSearch(),\n store = _useHawkSearch.store;\n\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config;\n\n var _useFacet = useFacet(),\n facet = _useFacet.facet,\n facetValues = _useFacet.state.facetValues,\n actor = _useFacet.actor,\n renderer = _useFacet.renderer;\n\n function renderOptions() {\n if (facet.FieldType === 'range') {\n return facetValues.map(function (value) {\n var correspondingRange = facet.Ranges.find(function (c) {\n return c.Value === value.Value;\n });\n var rangeValueAssetUrl = correspondingRange ? config.dashboardUrl + correspondingRange.AssetFullUrl : ''; // facets can be selected or negated, so explicitly check that the facet is not selected\n\n var selectionState = store.isFacetSelected(facet, value).state;\n var isSelected = selectionState !== FacetSelectionState.NotSelected;\n var isNegated = selectionState === FacetSelectionState.Negated;\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: value.Value,\n className: \"hawk-facet-rail__facet-list-item\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick(e) {\n return actor.selectFacet(value);\n },\n className: \"hawk-facet-rail__facet-btn\",\n \"aria-labelledby\": value.Label\n }, /*#__PURE__*/React__default.createElement(\"input\", {\n tabIndex: -1,\n type: \"checkbox\",\n checked: !!isSelected,\n className: \"visually-hidden\"\n }), renderCheckMark(isSelected), rangeValueAssetUrl !== '' ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-selectionInner\"\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-range-asset\",\n title: value.Label\n }), /*#__PURE__*/React__default.createElement(\"img\", {\n src: rangeValueAssetUrl,\n alt: value.Label\n })), /*#__PURE__*/React__default.createElement(\"span\", {\n style: isNegated ? {\n textDecoration: 'line-through'\n } : undefined,\n className: \"hawk-facet-rail__facet-name-1\"\n }, value.Label, \" \", \" (\".concat(value.Count), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Results\"), \")\")) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(\"span\", {\n style: isNegated ? {\n textDecoration: 'line-through'\n } : undefined,\n className: \"hawk-facet-rail__facet-name-2\"\n }, value.Label, \" \", \" (\".concat(value.Count), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Results\"), \")\"))), renderFacetActions(value.Value || '', isNegated));\n });\n } else {\n return facetValues.map(function (value) {\n // facets can be selected or negated, so explicitly check that the facet is not selected\n var selectionState = store.isFacetSelected(facet, value).state;\n var isSelected = selectionState !== FacetSelectionState.NotSelected;\n var isNegated = selectionState === FacetSelectionState.Negated;\n\n if (facet.Name.toLowerCase() == \"speaker\") {\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: value.Value,\n className: \"hawk-facet-rail__facet-list-item\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick(e) {\n return actor.selectFacet(value);\n },\n className: \"hawk-facet-rail__facet-btn\",\n role: \"checkbox\",\n \"aria-checked\": !!isSelected\n }, renderCheckMark(isSelected), /*#__PURE__*/React__default.createElement(\"span\", {\n style: isNegated ? {\n textDecoration: 'line-through'\n } : undefined,\n className: \"hawk-facet-rail__facet-name-3\"\n }, value.Label)), renderFacetActions(value.Value || '', isNegated));\n }\n\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: value.Value,\n className: \"hawk-facet-rail__facet-list-item\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick(e) {\n return actor.selectFacet(value);\n },\n className: \"hawk-facet-rail__facet-btn\",\n role: \"checkbox\",\n \"aria-checked\": !!isSelected\n }, renderCheckMark(isSelected), /*#__PURE__*/React__default.createElement(\"span\", {\n style: isNegated ? {\n textDecoration: 'line-through'\n } : undefined,\n className: \"hawk-facet-rail__facet-name-3\"\n }, value.Label, \" \", \" (\".concat(value.Count), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Results\"), \")\")), renderFacetActions(value.Value || '', isNegated));\n });\n }\n }\n\n function renderCheckMark(isSelected) {\n return /*#__PURE__*/React__default.createElement(\"span\", {\n className: isSelected ? 'hawk-facet-rail__facet-checkbox hawk-facet-rail__facet-checkbox--checked' : 'hawk-facet-rail__facet-checkbox'\n }, isSelected ? /*#__PURE__*/React__default.createElement(CheckmarkSVG, {\n \"class\": \"hawk-facet-rail__facet-checkbox-icon\"\n }) : null);\n }\n\n function renderFacetActions(value, isNegated) {\n return /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick(e) {\n return actor.negateFacet(value);\n },\n className: \"hawk-facet-rail__facet-btn-exclude\"\n }, isNegated ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(PlusCircleSVG, {\n \"class\": \"hawk-facet-rail__facet-btn-include\"\n }), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Include facet\")) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(DashCircleSVG, null), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Exclude facet\")));\n }\n\n function facetValuesWrapperClass() {\n var wrapperClasses = ['hawk-facet-rail__facet-values-checkbox'];\n\n if (facet.shouldScroll) {\n wrapperClasses.push('hawk-facet-rail__facet-values-checkbox__scrollable');\n }\n\n return wrapperClasses.join(' ');\n }\n\n function facetValuesWrapperStyle() {\n var styles = {};\n\n if (facet.shouldScroll) {\n var scrollHeight = facet.ScrollHeight;\n\n if (!scrollHeight || scrollHeight < 20) {\n scrollHeight = 300;\n }\n\n styles = {\n height: scrollHeight + 'px'\n };\n }\n\n return styles;\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: facetValuesWrapperClass(),\n style: facetValuesWrapperStyle()\n }, /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawk-facet-rail__facet-list\"\n }, renderOptions())), renderer.renderTruncation());\n}\n\nfunction Search() {\n var _useHawkSearch = useHawkSearch(),\n store = _useHawkSearch.store,\n hawkActor = _useHawkSearch.actor;\n\n var _useFacet = useFacet(),\n facet = _useFacet.facet,\n actor = _useFacet.actor;\n\n var _useState = useState(undefined),\n _useState2 = _slicedToArray$1(_useState, 2),\n input = _useState2[0],\n setInput = _useState2[1];\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n function onKeyDown(event) {\n if (event.key === 'Enter') {\n setInput(undefined); // clear the user's entered value as we want to be driven by the store again\n\n actor.selectFacet(event.currentTarget.value);\n }\n }\n\n function clearFacet() {\n setInput(undefined); // clear the user's entered value as we want to be driven by the store again\n\n hawkActor.clearFacet(facet);\n }\n\n function getInputValue() {\n if (input !== undefined) {\n // if the user type an input, that's the value for the input\n return input;\n } // otherwise, use the value from the store\n\n\n return decodeURIComponent(store.pendingSearch.SearchWithin || '');\n }\n\n var description = '';\n\n function renderTip() {\n var path = window.location.href;\n\n if (path.includes('oversight/inspections')) {\n description = 'Enter Firm Name, Country, Date/Year, or Keyword';\n }\n\n if (path.includes('oversight/enforcement')) {\n description = 'Enter Respondent Name, Country, Date/Year, or Keyword';\n }\n\n if (path.includes('oversight/international/denied')) {\n description = 'Enter Public Company or Auditor Name';\n }\n\n if (path.includes('global-network-firms')) {\n description = 'Enter Firm Name';\n }\n\n if (path.includes('news-releases')) {\n description = 'Enter title or keywords';\n }\n\n if (path.includes('/speeches')) {\n description = 'Enter title, speaker, or keywords';\n }\n\n if (path.includes('news-events/events')) {\n description = 'Enter event name, speaker, location, or host';\n }\n\n return description;\n }\n\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values__search\"\n }, /*#__PURE__*/React__default.createElement(\"input\", {\n value: getInputValue(),\n onChange: function onChange(e) {\n return setInput(e.currentTarget.value);\n },\n onKeyDown: onKeyDown\n }))), renderTip(), store.pendingSearch.SearchWithin && /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values__search-clear\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"link-button\",\n onClick: clearFacet\n }, t('Clear'))));\n}\n\nfunction Link() {\n var _useHawkSearch = useHawkSearch(),\n store = _useHawkSearch.store;\n\n var _useFacet = useFacet(),\n facet = _useFacet.facet,\n facetValues = _useFacet.state.facetValues,\n actor = _useFacet.actor,\n renderer = _useFacet.renderer;\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-link\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawk-facet-rail__facet-list\"\n }, facetValues.map(function (value) {\n // facets can be selected or negated, so explicitly check that the facet is not selected\n var selectionState = store.isFacetSelected(facet, value).state;\n var isSelected = selectionState !== FacetSelectionState.NotSelected;\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: value.Value,\n className: \"hawk-facet-rail__facet-list-item\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick(e) {\n return actor.selectFacet(value);\n },\n className: \"hawk-facet-rail__facet-btn\",\n \"aria-pressed\": isSelected\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-facet-rail__facet-name\"\n }, value.Label, \" \", \" (\".concat(value.Count), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Results\"), \")\")));\n }))), renderer.renderTruncation());\n}\n\nfunction formatDate$1(unixFormat) {\n var date = new Date(unixFormat);\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 101).toString().substring(1);\n var day = (date.getDate() + 100).toString().substring(1);\n return year + '-' + month + '-' + day;\n}\n\nfunction SliderCalendarInputs(sliderProps) {\n var _useState = useState(0),\n _useState2 = _slicedToArray$1(_useState, 2),\n minValue = _useState2[0],\n setMinValue = _useState2[1];\n\n var _useState3 = useState(0),\n _useState4 = _slicedToArray$1(_useState3, 2),\n maxValue = _useState4[0],\n setMaxValue = _useState4[1];\n\n function onMinUpdate(event) {\n var value = new Date(event.target.value).getTime();\n var newMinValue = Number(value);\n\n if (isNaN(newMinValue) || minValue === value) {\n return;\n }\n\n setMinValue(value);\n sliderProps.onValueChange(Number(newMinValue), Number(maxValue));\n }\n\n function onMaxUpdate(event) {\n var value = new Date(event.target.value).getTime();\n var newMaxValue = Number(value);\n\n if (isNaN(newMaxValue) || maxValue === value) {\n return;\n }\n\n setMaxValue(value);\n sliderProps.onValueChange(Number(minValue), Number(newMaxValue));\n }\n\n useEffect(function () {\n setMinValue(sliderProps.values[0]);\n setMaxValue(sliderProps.values[1]);\n }, [sliderProps]);\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-sliderNumeric\"\n }, /*#__PURE__*/React__default.createElement(\"input\", {\n type: \"date\",\n value: formatDate$1(Number(minValue)),\n className: \"hawk-text-input hawk-date-value-start\",\n min: formatDate$1(sliderProps.min),\n max: formatDate$1(sliderProps.max),\n onChange: onMinUpdate\n }), /*#__PURE__*/React__default.createElement(\"input\", {\n type: \"date\",\n value: formatDate$1(Number(maxValue)),\n className: \"hawk-text-input hawk-date-value-end\",\n min: formatDate$1(sliderProps.min),\n max: formatDate$1(sliderProps.max),\n onChange: onMaxUpdate\n }));\n}\n\nvar Rheostat = /*#__PURE__*/React__default.lazy(function () {\n return import(\n /* webpackChunkName: \"rheostat\" */\n 'rheostat');\n});\n\nfunction formatDate$2(date) {\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 101).toString().substring(1);\n var day = (date.getDate() + 100).toString().substring(1);\n return year + '-' + month + '-' + day;\n}\n\nfunction replaceHyphen(date) {\n if (!date) {\n return date;\n }\n\n return date.replace(/-/g, '/');\n}\n\nfunction getTime(date) {\n return date && Number(new Date(date || '').getTime());\n}\n\nfunction SliderDate() {\n var _useHawkSearch = useHawkSearch(),\n facetSelections = _useHawkSearch.store.facetSelections;\n\n var _useFacet = useFacet(),\n _useFacet$state = _useFacet.state,\n facetValues = _useFacet$state.facetValues,\n decimalPrecision = _useFacet$state.decimalPrecision,\n facet = _useFacet.facet,\n actor = _useFacet.actor; // the range of the slider is defined by the first facet value. or null if there is no first value\n\n\n var range = facetValues.length > 0 ? facetValues[0] : null;\n\n var _useState = useState(range && getTime(range.RangeMin)),\n _useState2 = _slicedToArray$1(_useState, 2),\n rangeMin = _useState2[0],\n setMinRange = _useState2[1];\n\n var _useState3 = useState(range && getTime(range.RangeMax)),\n _useState4 = _slicedToArray$1(_useState3, 2),\n rangeMax = _useState4[0],\n setMaxRange = _useState4[1];\n\n var _useState5 = useState(range && getTime(range.RangeStart)),\n _useState6 = _slicedToArray$1(_useState5, 2),\n rangeStart = _useState6[0],\n setStartRange = _useState6[1];\n\n var _useState7 = useState(range && getTime(range.RangeEnd)),\n _useState8 = _slicedToArray$1(_useState7, 2),\n rangeEnd = _useState8[0],\n setEndRange = _useState8[1]; // if there's no range, initialize to zeros\n\n\n var _useState9 = useState(),\n _useState10 = _slicedToArray$1(_useState9, 2),\n minValue = _useState10[0],\n setMinValue = _useState10[1];\n\n var _useState11 = useState(),\n _useState12 = _slicedToArray$1(_useState11, 2),\n maxValue = _useState12[0],\n setMaxValue = _useState12[1];\n\n useEffect(function () {\n var paramName = facet.ParamName || facet.Field; // clear min and max value if these were cleared\n\n if (!paramName || !(paramName in facetSelections)) {\n setMinValue(undefined);\n setMaxValue(undefined);\n }\n }, [facetSelections]);\n useEffect(function () {\n var newRange = facetValues.length > 0 ? facetValues[0] : null;\n setMinRange(newRange && getTime(newRange.RangeMin));\n setMaxRange(newRange && getTime(newRange.RangeMax));\n setStartRange(newRange && getTime(newRange.RangeStart));\n setEndRange(newRange && getTime(newRange.RangeEnd));\n }, [facetValues]);\n\n if (rangeMin === null || isNaN(rangeMin) || rangeMax === null || isNaN(rangeMax) || rangeStart === null || isNaN(rangeStart) || rangeEnd === null || isNaN(rangeEnd)) {\n // this facet is somehow misconfigured so don't render\n return null;\n }\n\n function onSliderDrag(state) {\n var _state$values = _slicedToArray$1(state.values, 2),\n newMin = _state$values[0],\n newMax = _state$values[1];\n\n setMinValue(newMin);\n setMaxValue(newMax);\n }\n\n function onSliderValueChange(state) {\n var _state$values2 = _slicedToArray$1(state.values, 2),\n newMin = _state$values2[0],\n newMax = _state$values2[1];\n\n setFacetValues(newMin, newMax);\n }\n\n function onValueChange(newMinValue, newMaxValue) {\n var currentMinValue = minValue;\n var currentMaxValue = maxValue; // if min value wasn't yet selected use range start\n\n if (minValue === undefined && rangeStart !== null) {\n currentMinValue = rangeStart; // setMinValue(rangeStart);\n } // if max value wasn't yet selected use range end\n\n\n if (maxValue === undefined && rangeEnd !== null) {\n currentMaxValue = rangeEnd;\n }\n\n if (currentMinValue === undefined || currentMaxValue === undefined) {\n return;\n }\n\n if (currentMinValue !== newMinValue && newMinValue <= currentMaxValue) {\n if (rangeMin !== null && newMinValue <= rangeMin) {\n currentMinValue = rangeMin;\n } else {\n currentMinValue = newMinValue;\n }\n }\n\n if (currentMaxValue !== newMaxValue && newMaxValue >= currentMinValue) {\n if (rangeMax !== null && newMaxValue >= rangeMax) {\n currentMaxValue = rangeMax;\n } else {\n currentMaxValue = newMaxValue;\n }\n }\n\n setFacetValues(currentMinValue, currentMaxValue);\n }\n\n function setFacetValues(minVal, maxVal) {\n if (minVal === undefined || maxVal === undefined || isNaN(minVal) || isNaN(maxVal)) {\n return;\n }\n\n setMinValue(minVal);\n setMaxValue(maxVal);\n var formattedMinVal = replaceHyphen(formatDate$2(new Date(minVal)));\n var formattedMaxVal = replaceHyphen(formatDate$2(new Date(maxVal))); // this selection is sent to hawk separated by commas, so build the value here\n\n var selection = \"\".concat(formattedMinVal, \",\").concat(formattedMaxVal);\n actor.setFacets([selection]);\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-link\"\n }, /*#__PURE__*/React__default.createElement(React__default.Suspense, {\n fallback: /*#__PURE__*/React__default.createElement(\"div\", null, \"Loading...\")\n }, /*#__PURE__*/React__default.createElement(SliderCalendarInputs, {\n min: rangeMin,\n max: rangeMax,\n values: [minValue === undefined ? rangeStart : Math.max(minValue, rangeMin), maxValue === undefined ? rangeEnd : Math.min(maxValue, rangeMax)],\n onValueChange: onValueChange\n }), /*#__PURE__*/React__default.createElement(Rheostat, {\n min: rangeMin,\n max: rangeMax,\n values: [Math.floor(minValue === undefined ? rangeStart : Math.max(minValue, rangeMin)), Math.ceil(maxValue === undefined ? rangeEnd : Math.min(maxValue, rangeMax))],\n onValuesUpdated: onSliderDrag,\n onChange: onSliderValueChange\n }))));\n}\n\n/**\n * react-number-format - 4.4.1\n * Author : Sudhanshu Yadav\n * Copyright (c) 2016, 2020 to Sudhanshu Yadav, released under the MIT license.\n * https://github.com/s-yadav/react-number-format\n */\n\nfunction _classCallCheck$2(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties$2(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass$2(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties$2(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties$2(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends$1() {\n _extends$1 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$1.apply(this, arguments);\n}\n\nfunction _inherits$1(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf$1(subClass, superClass);\n}\n\nfunction _getPrototypeOf$1(o) {\n _getPrototypeOf$1 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf$1(o);\n}\n\nfunction _setPrototypeOf$1(o, p) {\n _setPrototypeOf$1 = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf$1(o, p);\n}\n\nfunction _assertThisInitialized$1(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn$1(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized$1(self);\n}\n\nfunction createCommonjsModule$1(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule$1(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n{\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n// basic noop function\nfunction noop$1() {}\nfunction returnTrue() {\n return true;\n}\nfunction charIsNumber(_char) {\n return !!(_char || '').match(/\\d/);\n}\nfunction escapeRegExp(str) {\n return str.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, \"\\\\$&\");\n}\nfunction getThousandsGroupRegex(thousandsGroupStyle) {\n switch (thousandsGroupStyle) {\n case 'lakh':\n return /(\\d+?)(?=(\\d\\d)+(\\d)(?!\\d))(\\.\\d+)?/g;\n\n case 'wan':\n return /(\\d)(?=(\\d{4})+(?!\\d))/g;\n\n case 'thousand':\n default:\n return /(\\d)(?=(\\d{3})+(?!\\d))/g;\n }\n}\nfunction applyThousandSeparator(str, thousandSeparator, thousandsGroupStyle) {\n var thousandsGroupRegex = getThousandsGroupRegex(thousandsGroupStyle);\n var index = str.search(/[1-9]/);\n index = index === -1 ? str.length : index;\n return str.substring(0, index) + str.substring(index, str.length).replace(thousandsGroupRegex, '$1' + thousandSeparator);\n} //spilt a float number into different parts beforeDecimal, afterDecimal, and negation\n\nfunction splitDecimal(numStr) {\n var allowNegative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var hasNagation = numStr[0] === '-';\n var addNegation = hasNagation && allowNegative;\n numStr = numStr.replace('-', '');\n var parts = numStr.split('.');\n var beforeDecimal = parts[0];\n var afterDecimal = parts[1] || '';\n return {\n beforeDecimal: beforeDecimal,\n afterDecimal: afterDecimal,\n hasNagation: hasNagation,\n addNegation: addNegation\n };\n}\nfunction fixLeadingZero(numStr) {\n if (!numStr) return numStr;\n var isNegative = numStr[0] === '-';\n if (isNegative) numStr = numStr.substring(1, numStr.length);\n var parts = numStr.split('.');\n var beforeDecimal = parts[0].replace(/^0+/, '') || '0';\n var afterDecimal = parts[1] || '';\n return \"\".concat(isNegative ? '-' : '').concat(beforeDecimal).concat(afterDecimal ? \".\".concat(afterDecimal) : '');\n}\n/**\n * limit decimal numbers to given scale\n * Not used .fixedTo because that will break with big numbers\n */\n\nfunction limitToScale(numStr, scale, fixedDecimalScale) {\n var str = '';\n var filler = fixedDecimalScale ? '0' : '';\n\n for (var i = 0; i <= scale - 1; i++) {\n str += numStr[i] || filler;\n }\n\n return str;\n}\n/**\n * This method is required to round prop value to given scale.\n * Not used .round or .fixedTo because that will break with big numbers\n */\n\nfunction roundToPrecision(numStr, scale, fixedDecimalScale) {\n //if number is empty don't do anything return empty string\n if (['', '-'].indexOf(numStr) !== -1) return numStr;\n var shoudHaveDecimalSeparator = numStr.indexOf('.') !== -1 && scale;\n\n var _splitDecimal = splitDecimal(numStr),\n beforeDecimal = _splitDecimal.beforeDecimal,\n afterDecimal = _splitDecimal.afterDecimal,\n hasNagation = _splitDecimal.hasNagation;\n\n var roundedDecimalParts = parseFloat(\"0.\".concat(afterDecimal || '0')).toFixed(scale).split('.');\n var intPart = beforeDecimal.split('').reverse().reduce(function (roundedStr, current, idx) {\n if (roundedStr.length > idx) {\n return (Number(roundedStr[0]) + Number(current)).toString() + roundedStr.substring(1, roundedStr.length);\n }\n\n return current + roundedStr;\n }, roundedDecimalParts[0]);\n var decimalPart = limitToScale(roundedDecimalParts[1] || '', Math.min(scale, afterDecimal.length), fixedDecimalScale);\n var negation = hasNagation ? '-' : '';\n var decimalSeparator = shoudHaveDecimalSeparator ? '.' : '';\n return \"\".concat(negation).concat(intPart).concat(decimalSeparator).concat(decimalPart);\n}\nfunction omit(obj, keyMaps) {\n var filteredObj = {};\n Object.keys(obj).forEach(function (key) {\n if (!keyMaps[key]) filteredObj[key] = obj[key];\n });\n return filteredObj;\n}\n/** set the caret positon in an input field **/\n\nfunction setCaretPosition(el, caretPos) {\n el.value = el.value; // ^ this is used to not only get \"focus\", but\n // to make sure we don't have it everything -selected-\n // (it causes an issue in chrome, and having it doesn't hurt any other browser)\n\n if (el !== null) {\n if (el.createTextRange) {\n var range = el.createTextRange();\n range.move('character', caretPos);\n range.select();\n return true;\n } // (el.selectionStart === 0 added for Firefox bug)\n\n\n if (el.selectionStart || el.selectionStart === 0) {\n el.focus();\n el.setSelectionRange(caretPos, caretPos);\n return true;\n } // fail city, fortunately this never happens (as far as I've tested) :)\n\n\n el.focus();\n return false;\n }\n}\n/**\n Given previous value and newValue it returns the index\n start - end to which values have changed.\n This function makes assumption about only consecutive\n characters are changed which is correct assumption for caret input.\n*/\n\nfunction findChangedIndex(prevValue, newValue) {\n var i = 0,\n j = 0;\n var prevLength = prevValue.length;\n var newLength = newValue.length;\n\n while (prevValue[i] === newValue[i] && i < prevLength) {\n i++;\n } //check what has been changed from last\n\n\n while (prevValue[prevLength - 1 - j] === newValue[newLength - 1 - j] && newLength - j > i && prevLength - j > i) {\n j++;\n }\n\n return {\n start: i,\n end: prevLength - j\n };\n}\n/*\n Returns a number whose value is limited to the given range\n*/\n\nfunction clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nfunction getCurrentCaretPosition(el) {\n /*Max of selectionStart and selectionEnd is taken for the patch of pixel and other mobile device caret bug*/\n return Math.max(el.selectionStart, el.selectionEnd);\n}\n\nvar propTypes$1 = {\n thousandSeparator: propTypes.oneOfType([propTypes.string, propTypes.oneOf([true])]),\n decimalSeparator: propTypes.string,\n allowedDecimalSeparators: propTypes.arrayOf(propTypes.string),\n thousandsGroupStyle: propTypes.oneOf(['thousand', 'lakh', 'wan']),\n decimalScale: propTypes.number,\n fixedDecimalScale: propTypes.bool,\n displayType: propTypes.oneOf(['input', 'text']),\n prefix: propTypes.string,\n suffix: propTypes.string,\n format: propTypes.oneOfType([propTypes.string, propTypes.func]),\n removeFormatting: propTypes.func,\n mask: propTypes.oneOfType([propTypes.string, propTypes.arrayOf(propTypes.string)]),\n value: propTypes.oneOfType([propTypes.number, propTypes.string]),\n defaultValue: propTypes.oneOfType([propTypes.number, propTypes.string]),\n isNumericString: propTypes.bool,\n customInput: propTypes.elementType,\n allowNegative: propTypes.bool,\n allowEmptyFormatting: propTypes.bool,\n allowLeadingZeros: propTypes.bool,\n onValueChange: propTypes.func,\n onKeyDown: propTypes.func,\n onMouseUp: propTypes.func,\n onChange: propTypes.func,\n onFocus: propTypes.func,\n onBlur: propTypes.func,\n type: propTypes.oneOf(['text', 'tel', 'password']),\n isAllowed: propTypes.func,\n renderText: propTypes.func,\n getInputRef: propTypes.oneOfType([propTypes.func, // for legacy refs\n propTypes.shape({\n current: propTypes.any\n })])\n};\nvar defaultProps = {\n displayType: 'input',\n decimalSeparator: '.',\n thousandsGroupStyle: 'thousand',\n fixedDecimalScale: false,\n prefix: '',\n suffix: '',\n allowNegative: true,\n allowEmptyFormatting: false,\n allowLeadingZeros: false,\n isNumericString: false,\n type: 'text',\n onValueChange: noop$1,\n onChange: noop$1,\n onKeyDown: noop$1,\n onMouseUp: noop$1,\n onFocus: noop$1,\n onBlur: noop$1,\n isAllowed: returnTrue\n};\n\nvar NumberFormat =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits$1(NumberFormat, _React$Component);\n\n function NumberFormat(props) {\n var _this;\n\n _classCallCheck$2(this, NumberFormat);\n\n _this = _possibleConstructorReturn$1(this, _getPrototypeOf$1(NumberFormat).call(this, props));\n var defaultValue = props.defaultValue; //validate props\n\n _this.validateProps();\n\n var formattedValue = _this.formatValueProp(defaultValue);\n\n _this.state = {\n value: formattedValue,\n numAsString: _this.removeFormatting(formattedValue)\n };\n _this.selectionBeforeInput = {\n selectionStart: 0,\n selectionEnd: 0\n };\n _this.onChange = _this.onChange.bind(_assertThisInitialized$1(_this));\n _this.onKeyDown = _this.onKeyDown.bind(_assertThisInitialized$1(_this));\n _this.onMouseUp = _this.onMouseUp.bind(_assertThisInitialized$1(_this));\n _this.onFocus = _this.onFocus.bind(_assertThisInitialized$1(_this));\n _this.onBlur = _this.onBlur.bind(_assertThisInitialized$1(_this));\n return _this;\n }\n\n _createClass$2(NumberFormat, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n this.updateValueIfRequired(prevProps);\n }\n }, {\n key: \"updateValueIfRequired\",\n value: function updateValueIfRequired(prevProps) {\n var props = this.props,\n state = this.state,\n focusedElm = this.focusedElm;\n var stateValue = state.value,\n _state$numAsString = state.numAsString,\n lastNumStr = _state$numAsString === void 0 ? '' : _state$numAsString; // If only state changed no need to do any thing\n\n if (prevProps !== props) {\n //validate props\n this.validateProps();\n var lastValueWithNewFormat = this.formatNumString(lastNumStr);\n var formattedValue = props.value === undefined ? lastValueWithNewFormat : this.formatValueProp();\n var numAsString = this.removeFormatting(formattedValue);\n var floatValue = parseFloat(numAsString);\n var lastFloatValue = parseFloat(lastNumStr);\n\n if ( //while typing set state only when float value changes\n (!isNaN(floatValue) || !isNaN(lastFloatValue)) && floatValue !== lastFloatValue || //can also set state when float value is same and the format props changes\n lastValueWithNewFormat !== stateValue || //set state always when not in focus and formatted value is changed\n focusedElm === null && formattedValue !== stateValue) {\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n input: focusedElm\n });\n }\n }\n }\n /** Misc methods **/\n\n }, {\n key: \"getFloatString\",\n value: function getFloatString() {\n var num = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var decimalScale = this.props.decimalScale;\n\n var _this$getSeparators = this.getSeparators(),\n decimalSeparator = _this$getSeparators.decimalSeparator;\n\n var numRegex = this.getNumberRegex(true); //remove negation for regex check\n\n var hasNegation = num[0] === '-';\n if (hasNegation) num = num.replace('-', ''); //if decimal scale is zero remove decimal and number after decimalSeparator\n\n if (decimalSeparator && decimalScale === 0) {\n num = num.split(decimalSeparator)[0];\n }\n\n num = (num.match(numRegex) || []).join('').replace(decimalSeparator, '.'); //remove extra decimals\n\n var firstDecimalIndex = num.indexOf('.');\n\n if (firstDecimalIndex !== -1) {\n num = \"\".concat(num.substring(0, firstDecimalIndex), \".\").concat(num.substring(firstDecimalIndex + 1, num.length).replace(new RegExp(escapeRegExp(decimalSeparator), 'g'), ''));\n } //add negation back\n\n\n if (hasNegation) num = '-' + num;\n return num;\n } //returned regex assumes decimalSeparator is as per prop\n\n }, {\n key: \"getNumberRegex\",\n value: function getNumberRegex(g, ignoreDecimalSeparator) {\n var _this$props = this.props,\n format = _this$props.format,\n decimalScale = _this$props.decimalScale;\n\n var _this$getSeparators2 = this.getSeparators(),\n decimalSeparator = _this$getSeparators2.decimalSeparator;\n\n return new RegExp('\\\\d' + (decimalSeparator && decimalScale !== 0 && !ignoreDecimalSeparator && !format ? '|' + escapeRegExp(decimalSeparator) : ''), g ? 'g' : undefined);\n }\n }, {\n key: \"getSeparators\",\n value: function getSeparators() {\n var decimalSeparator = this.props.decimalSeparator;\n var _this$props2 = this.props,\n thousandSeparator = _this$props2.thousandSeparator,\n allowedDecimalSeparators = _this$props2.allowedDecimalSeparators;\n\n if (thousandSeparator === true) {\n thousandSeparator = ',';\n }\n\n if (!allowedDecimalSeparators) {\n allowedDecimalSeparators = [decimalSeparator, '.'];\n }\n\n return {\n decimalSeparator: decimalSeparator,\n thousandSeparator: thousandSeparator,\n allowedDecimalSeparators: allowedDecimalSeparators\n };\n }\n }, {\n key: \"getMaskAtIndex\",\n value: function getMaskAtIndex(index) {\n var _this$props$mask = this.props.mask,\n mask = _this$props$mask === void 0 ? ' ' : _this$props$mask;\n\n if (typeof mask === 'string') {\n return mask;\n }\n\n return mask[index] || ' ';\n }\n }, {\n key: \"getValueObject\",\n value: function getValueObject(formattedValue, numAsString) {\n var floatValue = parseFloat(numAsString);\n return {\n formattedValue: formattedValue,\n value: numAsString,\n floatValue: isNaN(floatValue) ? undefined : floatValue\n };\n }\n }, {\n key: \"validateProps\",\n value: function validateProps() {\n var mask = this.props.mask; //validate decimalSeparator and thousandSeparator\n\n var _this$getSeparators3 = this.getSeparators(),\n decimalSeparator = _this$getSeparators3.decimalSeparator,\n thousandSeparator = _this$getSeparators3.thousandSeparator;\n\n if (decimalSeparator === thousandSeparator) {\n throw new Error(\"\\n Decimal separator can't be same as thousand separator.\\n thousandSeparator: \".concat(thousandSeparator, \" (thousandSeparator = {true} is same as thousandSeparator = \\\",\\\")\\n decimalSeparator: \").concat(decimalSeparator, \" (default value for decimalSeparator is .)\\n \"));\n } //validate mask\n\n\n if (mask) {\n var maskAsStr = mask === 'string' ? mask : mask.toString();\n\n if (maskAsStr.match(/\\d/g)) {\n throw new Error(\"\\n Mask \".concat(mask, \" should not contain numeric character;\\n \"));\n }\n }\n }\n /** Misc methods end **/\n\n /** caret specific methods **/\n\n }, {\n key: \"setPatchedCaretPosition\",\n value: function setPatchedCaretPosition(el, caretPos, currentValue) {\n /* setting caret position within timeout of 0ms is required for mobile chrome,\n otherwise browser resets the caret position after we set it\n We are also setting it without timeout so that in normal browser we don't see the flickering */\n setCaretPosition(el, caretPos);\n setTimeout(function () {\n if (el.value === currentValue) setCaretPosition(el, caretPos);\n }, 0);\n }\n /* This keeps the caret within typing area so people can't type in between prefix or suffix */\n\n }, {\n key: \"correctCaretPosition\",\n value: function correctCaretPosition(value, caretPos, direction) {\n var _this$props3 = this.props,\n prefix = _this$props3.prefix,\n suffix = _this$props3.suffix,\n format = _this$props3.format; //if value is empty return 0\n\n if (value === '') return 0; //caret position should be between 0 and value length\n\n caretPos = clamp(caretPos, 0, value.length); //in case of format as number limit between prefix and suffix\n\n if (!format) {\n var hasNegation = value[0] === '-';\n return clamp(caretPos, prefix.length + (hasNegation ? 1 : 0), value.length - suffix.length);\n } //in case if custom format method don't do anything\n\n\n if (typeof format === 'function') return caretPos;\n /* in case format is string find the closest # position from the caret position */\n //in case the caretPos have input value on it don't do anything\n\n if (format[caretPos] === '#' && charIsNumber(value[caretPos])) return caretPos; //if caretPos is just after input value don't do anything\n\n if (format[caretPos - 1] === '#' && charIsNumber(value[caretPos - 1])) return caretPos; //find the nearest caret position\n\n var firstHashPosition = format.indexOf('#');\n var lastHashPosition = format.lastIndexOf('#'); //limit the cursor between the first # position and the last # position\n\n caretPos = clamp(caretPos, firstHashPosition, lastHashPosition + 1);\n var nextPos = format.substring(caretPos, format.length).indexOf('#');\n var caretLeftBound = caretPos;\n var caretRightBound = caretPos + (nextPos === -1 ? 0 : nextPos); //get the position where the last number is present\n\n while (caretLeftBound > firstHashPosition && (format[caretLeftBound] !== '#' || !charIsNumber(value[caretLeftBound]))) {\n caretLeftBound -= 1;\n }\n\n var goToLeft = !charIsNumber(value[caretRightBound]) || direction === 'left' && caretPos !== firstHashPosition || caretPos - caretLeftBound < caretRightBound - caretPos;\n\n if (goToLeft) {\n //check if number should be taken after the bound or after it\n //if number preceding a valid number keep it after\n return charIsNumber(value[caretLeftBound]) ? caretLeftBound + 1 : caretLeftBound;\n }\n\n return caretRightBound;\n }\n }, {\n key: \"getCaretPosition\",\n value: function getCaretPosition(inputValue, formattedValue, caretPos) {\n var format = this.props.format;\n var stateValue = this.state.value;\n var numRegex = this.getNumberRegex(true);\n var inputNumber = (inputValue.match(numRegex) || []).join('');\n var formattedNumber = (formattedValue.match(numRegex) || []).join('');\n var j, i;\n j = 0;\n\n for (i = 0; i < caretPos; i++) {\n var currentInputChar = inputValue[i] || '';\n var currentFormatChar = formattedValue[j] || ''; //no need to increase new cursor position if formatted value does not have those characters\n //case inputValue = 1a23 and formattedValue = 123\n\n if (!currentInputChar.match(numRegex) && currentInputChar !== currentFormatChar) continue; //When we are striping out leading zeros maintain the new cursor position\n //Case inputValue = 00023 and formattedValue = 23;\n\n if (currentInputChar === '0' && currentFormatChar.match(numRegex) && currentFormatChar !== '0' && inputNumber.length !== formattedNumber.length) continue; //we are not using currentFormatChar because j can change here\n\n while (currentInputChar !== formattedValue[j] && j < formattedValue.length) {\n j++;\n }\n\n j++;\n }\n\n if (typeof format === 'string' && !stateValue) {\n //set it to the maximum value so it goes after the last number\n j = formattedValue.length;\n } //correct caret position if its outside of editable area\n\n\n j = this.correctCaretPosition(formattedValue, j);\n return j;\n }\n /** caret specific methods ends **/\n\n /** methods to remove formattting **/\n\n }, {\n key: \"removePrefixAndSuffix\",\n value: function removePrefixAndSuffix(val) {\n var _this$props4 = this.props,\n format = _this$props4.format,\n prefix = _this$props4.prefix,\n suffix = _this$props4.suffix; //remove prefix and suffix\n\n if (!format && val) {\n var isNegative = val[0] === '-'; //remove negation sign\n\n if (isNegative) val = val.substring(1, val.length); //remove prefix\n\n val = prefix && val.indexOf(prefix) === 0 ? val.substring(prefix.length, val.length) : val; //remove suffix\n\n var suffixLastIndex = val.lastIndexOf(suffix);\n val = suffix && suffixLastIndex !== -1 && suffixLastIndex === val.length - suffix.length ? val.substring(0, suffixLastIndex) : val; //add negation sign back\n\n if (isNegative) val = '-' + val;\n }\n\n return val;\n }\n }, {\n key: \"removePatternFormatting\",\n value: function removePatternFormatting(val) {\n var format = this.props.format;\n var formatArray = format.split('#').filter(function (str) {\n return str !== '';\n });\n var start = 0;\n var numStr = '';\n\n for (var i = 0, ln = formatArray.length; i <= ln; i++) {\n var part = formatArray[i] || ''; //if i is the last fragment take the index of end of the value\n //For case like +1 (911) 911 91 91 having pattern +1 (###) ### ## ##\n\n var index = i === ln ? val.length : val.indexOf(part, start);\n /* in any case if we don't find the pattern part in the value assume the val as numeric string\n This will be also in case if user has started typing, in any other case it will not be -1\n unless wrong prop value is provided */\n\n if (index === -1) {\n numStr = val;\n break;\n } else {\n numStr += val.substring(start, index);\n start = index + part.length;\n }\n }\n\n return (numStr.match(/\\d/g) || []).join('');\n }\n }, {\n key: \"removeFormatting\",\n value: function removeFormatting(val) {\n var _this$props5 = this.props,\n format = _this$props5.format,\n removeFormatting = _this$props5.removeFormatting;\n if (!val) return val;\n\n if (!format) {\n val = this.removePrefixAndSuffix(val);\n val = this.getFloatString(val);\n } else if (typeof format === 'string') {\n val = this.removePatternFormatting(val);\n } else if (typeof removeFormatting === 'function') {\n //condition need to be handled if format method is provide,\n val = removeFormatting(val);\n } else {\n val = (val.match(/\\d/g) || []).join('');\n }\n\n return val;\n }\n /** methods to remove formattting end **/\n\n /*** format specific methods start ***/\n\n /**\n * Format when # based string is provided\n * @param {string} numStr Numeric String\n * @return {string} formatted Value\n */\n\n }, {\n key: \"formatWithPattern\",\n value: function formatWithPattern(numStr) {\n var format = this.props.format;\n var hashCount = 0;\n var formattedNumberAry = format.split('');\n\n for (var i = 0, ln = format.length; i < ln; i++) {\n if (format[i] === '#') {\n formattedNumberAry[i] = numStr[hashCount] || this.getMaskAtIndex(hashCount);\n hashCount += 1;\n }\n }\n\n return formattedNumberAry.join('');\n }\n /**\n * @param {string} numStr Numeric string/floatString] It always have decimalSeparator as .\n * @return {string} formatted Value\n */\n\n }, {\n key: \"formatAsNumber\",\n value: function formatAsNumber(numStr) {\n var _this$props6 = this.props,\n decimalScale = _this$props6.decimalScale,\n fixedDecimalScale = _this$props6.fixedDecimalScale,\n prefix = _this$props6.prefix,\n suffix = _this$props6.suffix,\n allowNegative = _this$props6.allowNegative,\n thousandsGroupStyle = _this$props6.thousandsGroupStyle;\n\n var _this$getSeparators4 = this.getSeparators(),\n thousandSeparator = _this$getSeparators4.thousandSeparator,\n decimalSeparator = _this$getSeparators4.decimalSeparator;\n\n var hasDecimalSeparator = numStr.indexOf('.') !== -1 || decimalScale && fixedDecimalScale;\n\n var _splitDecimal = splitDecimal(numStr, allowNegative),\n beforeDecimal = _splitDecimal.beforeDecimal,\n afterDecimal = _splitDecimal.afterDecimal,\n addNegation = _splitDecimal.addNegation; // eslint-disable-line prefer-const\n //apply decimal precision if its defined\n\n\n if (decimalScale !== undefined) afterDecimal = limitToScale(afterDecimal, decimalScale, fixedDecimalScale);\n\n if (thousandSeparator) {\n beforeDecimal = applyThousandSeparator(beforeDecimal, thousandSeparator, thousandsGroupStyle);\n } //add prefix and suffix\n\n\n if (prefix) beforeDecimal = prefix + beforeDecimal;\n if (suffix) afterDecimal = afterDecimal + suffix; //restore negation sign\n\n if (addNegation) beforeDecimal = '-' + beforeDecimal;\n numStr = beforeDecimal + (hasDecimalSeparator && decimalSeparator || '') + afterDecimal;\n return numStr;\n }\n }, {\n key: \"formatNumString\",\n value: function formatNumString() {\n var numStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var _this$props7 = this.props,\n format = _this$props7.format,\n allowEmptyFormatting = _this$props7.allowEmptyFormatting;\n var formattedValue = numStr;\n\n if (numStr === '' && !allowEmptyFormatting) {\n formattedValue = '';\n } else if (numStr === '-' && !format) {\n formattedValue = '-';\n } else if (typeof format === 'string') {\n formattedValue = this.formatWithPattern(formattedValue);\n } else if (typeof format === 'function') {\n formattedValue = format(formattedValue);\n } else {\n formattedValue = this.formatAsNumber(formattedValue);\n }\n\n return formattedValue;\n }\n }, {\n key: \"formatValueProp\",\n value: function formatValueProp(defaultValue) {\n var _this$props8 = this.props,\n format = _this$props8.format,\n decimalScale = _this$props8.decimalScale,\n fixedDecimalScale = _this$props8.fixedDecimalScale,\n allowEmptyFormatting = _this$props8.allowEmptyFormatting;\n var _this$props9 = this.props,\n _this$props9$value = _this$props9.value,\n value = _this$props9$value === void 0 ? defaultValue : _this$props9$value,\n isNumericString = _this$props9.isNumericString;\n var isNonNumericFalsy = !value && value !== 0;\n\n if (isNonNumericFalsy && allowEmptyFormatting) {\n value = '';\n } // if value is not defined return empty string\n\n\n if (isNonNumericFalsy && !allowEmptyFormatting) return '';\n\n if (typeof value === 'number') {\n value = value.toString();\n isNumericString = true;\n } //change infinity value to empty string\n\n\n if (value === 'Infinity' && isNumericString) {\n value = '';\n } //round the number based on decimalScale\n //format only if non formatted value is provided\n\n\n if (isNumericString && !format && typeof decimalScale === 'number') {\n value = roundToPrecision(value, decimalScale, fixedDecimalScale);\n }\n\n var formattedValue = isNumericString ? this.formatNumString(value) : this.formatInput(value);\n return formattedValue;\n }\n }, {\n key: \"formatNegation\",\n value: function formatNegation() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var allowNegative = this.props.allowNegative;\n var negationRegex = new RegExp('(-)');\n var doubleNegationRegex = new RegExp('(-)(.)*(-)'); // Check number has '-' value\n\n var hasNegation = negationRegex.test(value); // Check number has 2 or more '-' values\n\n var removeNegation = doubleNegationRegex.test(value); //remove negation\n\n value = value.replace(/-/g, '');\n\n if (hasNegation && !removeNegation && allowNegative) {\n value = '-' + value;\n }\n\n return value;\n }\n }, {\n key: \"formatInput\",\n value: function formatInput() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var format = this.props.format; //format negation only if we are formatting as number\n\n if (!format) {\n value = this.removePrefixAndSuffix(value);\n value = this.formatNegation(value);\n } //remove formatting from number\n\n\n value = this.removeFormatting(value);\n return this.formatNumString(value);\n }\n /*** format specific methods end ***/\n\n }, {\n key: \"isCharacterAFormat\",\n value: function isCharacterAFormat(caretPos, value) {\n var _this$props10 = this.props,\n format = _this$props10.format,\n prefix = _this$props10.prefix,\n suffix = _this$props10.suffix,\n decimalScale = _this$props10.decimalScale,\n fixedDecimalScale = _this$props10.fixedDecimalScale;\n\n var _this$getSeparators5 = this.getSeparators(),\n decimalSeparator = _this$getSeparators5.decimalSeparator; //check within format pattern\n\n\n if (typeof format === 'string' && format[caretPos] !== '#') return true; //check in number format\n\n if (!format && (caretPos < prefix.length || caretPos >= value.length - suffix.length || decimalScale && fixedDecimalScale && value[caretPos] === decimalSeparator)) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"checkIfFormatGotDeleted\",\n value: function checkIfFormatGotDeleted(start, end, value) {\n for (var i = start; i < end; i++) {\n if (this.isCharacterAFormat(i, value)) return true;\n }\n\n return false;\n }\n /**\n * This will check if any formatting got removed by the delete or backspace and reset the value\n * It will also work as fallback if android chome keyDown handler does not work\n **/\n\n }, {\n key: \"correctInputValue\",\n value: function correctInputValue(caretPos, lastValue, value) {\n var _this$props11 = this.props,\n format = _this$props11.format,\n allowNegative = _this$props11.allowNegative,\n prefix = _this$props11.prefix,\n suffix = _this$props11.suffix,\n decimalScale = _this$props11.decimalScale;\n\n var _this$getSeparators6 = this.getSeparators(),\n allowedDecimalSeparators = _this$getSeparators6.allowedDecimalSeparators,\n decimalSeparator = _this$getSeparators6.decimalSeparator;\n\n var lastNumStr = this.state.numAsString || '';\n var _this$selectionBefore = this.selectionBeforeInput,\n selectionStart = _this$selectionBefore.selectionStart,\n selectionEnd = _this$selectionBefore.selectionEnd;\n\n var _findChangedIndex = findChangedIndex(lastValue, value),\n start = _findChangedIndex.start,\n end = _findChangedIndex.end;\n /** Check for any allowed decimal separator is added in the numeric format and replace it with decimal separator */\n\n\n if (!format && start === end && allowedDecimalSeparators.indexOf(value[selectionStart]) !== -1) {\n var separator = decimalScale === 0 ? '' : decimalSeparator;\n return value.substr(0, selectionStart) + separator + value.substr(selectionStart + 1, value.length);\n }\n /* don't do anyhting if something got added,\n or if value is empty string (when whole input is cleared)\n or whole input is replace with a number\n */\n\n\n var leftBound = !!format ? 0 : prefix.length;\n var rightBound = lastValue.length - (!!format ? 0 : suffix.length);\n\n if (value.length > lastValue.length || !value.length || start === end || selectionStart === 0 && selectionEnd === lastValue.length || selectionStart === leftBound && selectionEnd === rightBound) {\n return value;\n } //if format got deleted reset the value to last value\n\n\n if (this.checkIfFormatGotDeleted(start, end, lastValue)) {\n value = lastValue;\n } //for numbers check if beforeDecimal got deleted and there is nothing after decimal,\n //clear all numbers in such case while keeping the - sign\n\n\n if (!format) {\n var numericString = this.removeFormatting(value);\n\n var _splitDecimal2 = splitDecimal(numericString, allowNegative),\n beforeDecimal = _splitDecimal2.beforeDecimal,\n afterDecimal = _splitDecimal2.afterDecimal,\n addNegation = _splitDecimal2.addNegation; // eslint-disable-line prefer-const\n //clear only if something got deleted\n\n\n var isBeforeDecimalPoint = caretPos < value.indexOf(decimalSeparator) + 1;\n\n if (numericString.length < lastNumStr.length && isBeforeDecimalPoint && beforeDecimal === '' && !parseFloat(afterDecimal)) {\n return addNegation ? '-' : '';\n }\n }\n\n return value;\n }\n /** Update value and caret position */\n\n }, {\n key: \"updateValue\",\n value: function updateValue(params) {\n var formattedValue = params.formattedValue,\n input = params.input,\n _params$setCaretPosit = params.setCaretPosition,\n setCaretPosition = _params$setCaretPosit === void 0 ? true : _params$setCaretPosit;\n var numAsString = params.numAsString,\n caretPos = params.caretPos;\n var onValueChange = this.props.onValueChange;\n var lastValue = this.state.value;\n\n if (input) {\n //set caret position, and value imperatively when element is provided\n if (setCaretPosition) {\n //calculate caret position if not defined\n if (!caretPos) {\n var inputValue = params.inputValue || input.value;\n var currentCaretPosition = getCurrentCaretPosition(input);\n /**\n * set the value imperatively, this is required for IE fix\n * This is also required as if new caret position is beyond the previous value.\n * Caret position will not be set correctly\n */\n\n input.value = formattedValue; //get the caret position\n\n caretPos = this.getCaretPosition(inputValue, formattedValue, currentCaretPosition);\n } //set caret position\n\n\n this.setPatchedCaretPosition(input, caretPos, formattedValue);\n } else {\n /**\n * if we are not setting caret position set the value imperatively.\n * This is required on onBlur method\n */\n input.value = formattedValue;\n }\n } //calculate numeric string if not passed\n\n\n if (numAsString === undefined) {\n numAsString = this.removeFormatting(formattedValue);\n } //update state if value is changed\n\n\n if (formattedValue !== lastValue) {\n this.setState({\n value: formattedValue,\n numAsString: numAsString\n }); // trigger onValueChange synchronously, so parent is updated along with the number format. Fix for #277, #287\n\n onValueChange(this.getValueObject(formattedValue, numAsString));\n }\n }\n }, {\n key: \"onChange\",\n value: function onChange(e) {\n var el = e.target;\n var inputValue = el.value;\n var state = this.state,\n props = this.props;\n var isAllowed = props.isAllowed;\n var lastValue = state.value || '';\n var currentCaretPosition = getCurrentCaretPosition(el);\n inputValue = this.correctInputValue(currentCaretPosition, lastValue, inputValue);\n var formattedValue = this.formatInput(inputValue) || '';\n var numAsString = this.removeFormatting(formattedValue);\n var valueObj = this.getValueObject(formattedValue, numAsString);\n\n if (!isAllowed(valueObj)) {\n formattedValue = lastValue;\n }\n\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n inputValue: inputValue,\n input: el\n });\n props.onChange(e);\n }\n }, {\n key: \"onBlur\",\n value: function onBlur(e) {\n var props = this.props,\n state = this.state;\n var format = props.format,\n onBlur = props.onBlur,\n allowLeadingZeros = props.allowLeadingZeros;\n var numAsString = state.numAsString;\n var lastValue = state.value;\n this.focusedElm = null;\n\n if (this.focusTimeout) {\n clearTimeout(this.focusTimeout);\n }\n\n if (!format) {\n // if the numAsString is not a valid number reset it to empty\n if (isNaN(parseFloat(numAsString))) {\n numAsString = '';\n }\n\n if (!allowLeadingZeros) {\n numAsString = fixLeadingZero(numAsString);\n }\n\n var formattedValue = this.formatNumString(numAsString); //change the state\n\n if (formattedValue !== lastValue) {\n // the event needs to be persisted because its properties can be accessed in an asynchronous way\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n input: e.target,\n setCaretPosition: false\n });\n onBlur(e);\n return;\n }\n }\n\n onBlur(e);\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(e) {\n var el = e.target;\n var key = e.key;\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value = el.value,\n value = _el$value === void 0 ? '' : _el$value;\n var expectedCaretPosition;\n var _this$props12 = this.props,\n decimalScale = _this$props12.decimalScale,\n fixedDecimalScale = _this$props12.fixedDecimalScale,\n prefix = _this$props12.prefix,\n suffix = _this$props12.suffix,\n format = _this$props12.format,\n onKeyDown = _this$props12.onKeyDown;\n var ignoreDecimalSeparator = decimalScale !== undefined && fixedDecimalScale;\n var numRegex = this.getNumberRegex(false, ignoreDecimalSeparator);\n var negativeRegex = new RegExp('-');\n var isPatternFormat = typeof format === 'string';\n this.selectionBeforeInput = {\n selectionStart: selectionStart,\n selectionEnd: selectionEnd\n }; //Handle backspace and delete against non numerical/decimal characters or arrow keys\n\n if (key === 'ArrowLeft' || key === 'Backspace') {\n expectedCaretPosition = selectionStart - 1;\n } else if (key === 'ArrowRight') {\n expectedCaretPosition = selectionStart + 1;\n } else if (key === 'Delete') {\n expectedCaretPosition = selectionStart;\n } //if expectedCaretPosition is not set it means we don't want to Handle keyDown\n //also if multiple characters are selected don't handle\n\n\n if (expectedCaretPosition === undefined || selectionStart !== selectionEnd) {\n onKeyDown(e);\n return;\n }\n\n var newCaretPosition = expectedCaretPosition;\n var leftBound = isPatternFormat ? format.indexOf('#') : prefix.length;\n var rightBound = isPatternFormat ? format.lastIndexOf('#') + 1 : value.length - suffix.length;\n\n if (key === 'ArrowLeft' || key === 'ArrowRight') {\n var direction = key === 'ArrowLeft' ? 'left' : 'right';\n newCaretPosition = this.correctCaretPosition(value, expectedCaretPosition, direction);\n } else if (key === 'Delete' && !numRegex.test(value[expectedCaretPosition]) && !negativeRegex.test(value[expectedCaretPosition])) {\n while (!numRegex.test(value[newCaretPosition]) && newCaretPosition < rightBound) {\n newCaretPosition++;\n }\n } else if (key === 'Backspace' && !numRegex.test(value[expectedCaretPosition])) {\n /* NOTE: This is special case when backspace is pressed on a\n negative value while the cursor position is after prefix. We can't handle it on onChange because\n we will not have any information of keyPress\n */\n if (selectionStart <= leftBound + 1 && value[0] === '-' && typeof format === 'undefined') {\n var newValue = value.substring(1);\n this.updateValue({\n formattedValue: newValue,\n caretPos: newCaretPosition,\n input: el\n });\n } else if (!negativeRegex.test(value[expectedCaretPosition])) {\n while (!numRegex.test(value[newCaretPosition - 1]) && newCaretPosition > leftBound) {\n newCaretPosition--;\n }\n\n newCaretPosition = this.correctCaretPosition(value, newCaretPosition, 'left');\n }\n }\n\n if (newCaretPosition !== expectedCaretPosition || expectedCaretPosition < leftBound || expectedCaretPosition > rightBound) {\n e.preventDefault();\n this.setPatchedCaretPosition(el, newCaretPosition, value);\n }\n /* NOTE: this is just required for unit test as we need to get the newCaretPosition,\n Remove this when you find different solution */\n\n\n if (e.isUnitTestRun) {\n this.setPatchedCaretPosition(el, newCaretPosition, value);\n }\n\n onKeyDown(e);\n }\n /** required to handle the caret position when click anywhere within the input **/\n\n }, {\n key: \"onMouseUp\",\n value: function onMouseUp(e) {\n var el = e.target;\n /**\n * NOTE: we have to give default value for value as in case when custom input is provided\n * value can come as undefined when nothing is provided on value prop.\n */\n\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value2 = el.value,\n value = _el$value2 === void 0 ? '' : _el$value2;\n\n if (selectionStart === selectionEnd) {\n var caretPosition = this.correctCaretPosition(value, selectionStart);\n\n if (caretPosition !== selectionStart) {\n this.setPatchedCaretPosition(el, caretPosition, value);\n }\n }\n\n this.props.onMouseUp(e);\n }\n }, {\n key: \"onFocus\",\n value: function onFocus(e) {\n var _this2 = this;\n\n // Workaround Chrome and Safari bug https://bugs.chromium.org/p/chromium/issues/detail?id=779328\n // (onFocus event target selectionStart is always 0 before setTimeout)\n e.persist();\n this.focusedElm = e.target;\n this.focusTimeout = setTimeout(function () {\n var el = e.target;\n var selectionStart = el.selectionStart,\n selectionEnd = el.selectionEnd,\n _el$value3 = el.value,\n value = _el$value3 === void 0 ? '' : _el$value3;\n\n var caretPosition = _this2.correctCaretPosition(value, selectionStart); //setPatchedCaretPosition only when everything is not selected on focus (while tabbing into the field)\n\n\n if (caretPosition !== selectionStart && !(selectionStart === 0 && selectionEnd === value.length)) {\n _this2.setPatchedCaretPosition(el, caretPosition, value);\n }\n\n _this2.props.onFocus(e);\n }, 0);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props13 = this.props,\n type = _this$props13.type,\n displayType = _this$props13.displayType,\n customInput = _this$props13.customInput,\n renderText = _this$props13.renderText,\n getInputRef = _this$props13.getInputRef;\n var value = this.state.value;\n var otherProps = omit(this.props, propTypes$1);\n\n var inputProps = _extends$1({\n inputMode: 'numeric'\n }, otherProps, {\n type: type,\n value: value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onMouseUp: this.onMouseUp,\n onFocus: this.onFocus,\n onBlur: this.onBlur\n });\n\n if (displayType === 'text') {\n return renderText ? renderText(value) || null : React__default.createElement(\"span\", _extends$1({}, otherProps, {\n ref: getInputRef\n }), value);\n } else if (customInput) {\n var CustomInput = customInput;\n return React__default.createElement(CustomInput, _extends$1({}, inputProps, {\n ref: getInputRef\n }));\n }\n\n return React__default.createElement(\"input\", _extends$1({}, inputProps, {\n ref: getInputRef\n }));\n }\n }]);\n\n return NumberFormat;\n}(React__default.Component);\n\nNumberFormat.propTypes = propTypes$1;\nNumberFormat.defaultProps = defaultProps;\n\nfunction SliderNumericInputs(sliderProps) {\n var _useState = useState(''),\n _useState2 = _slicedToArray$1(_useState, 2),\n minValue = _useState2[0],\n setMinValue = _useState2[1];\n\n var _useState3 = useState(''),\n _useState4 = _slicedToArray$1(_useState3, 2),\n maxValue = _useState4[0],\n setMaxValue = _useState4[1];\n\n function onMinUpdate(values) {\n var formattedValue = values.formattedValue,\n value = values.value;\n var newMinValue = Number(value);\n\n if (isNaN(newMinValue) || minValue === value) {\n return;\n }\n\n setMinValue(value);\n }\n\n function onMaxUpdate(values) {\n var formattedValue = values.formattedValue,\n value = values.value;\n var newMaxValue = Number(value);\n\n if (isNaN(newMaxValue) || maxValue === value) {\n return;\n }\n\n setMaxValue(value);\n }\n\n function reloadFacets(event) {\n sliderProps.onValueChange(Number(minValue), Number(maxValue));\n }\n\n useEffect(function () {\n setMinValue(sliderProps.values[0].toString());\n setMaxValue(sliderProps.values[1].toString());\n }, [sliderProps]);\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-sliderNumeric\"\n }, /*#__PURE__*/React__default.createElement(NumberFormat, {\n thousandSeparator: sliderProps.isCurrency,\n prefix: sliderProps.isCurrency ? sliderProps.currencySymbol : '',\n value: minValue,\n className: \"hawk-numericInput numeric-from\",\n min: sliderProps.min,\n max: sliderProps.max,\n onValueChange: onMinUpdate,\n onBlur: reloadFacets,\n decimalScale: sliderProps.decimalPrecision\n }), /*#__PURE__*/React__default.createElement(NumberFormat, {\n thousandSeparator: sliderProps.isCurrency,\n prefix: sliderProps.isCurrency ? sliderProps.currencySymbol : '',\n value: maxValue,\n className: \"hawk-numericInput numeric-to\",\n min: sliderProps.min,\n max: sliderProps.max,\n onValueChange: onMaxUpdate,\n onBlur: reloadFacets,\n decimalScale: sliderProps.decimalPrecision\n }));\n}\n\nvar Rheostat$1 = /*#__PURE__*/React__default.lazy(function () {\n return import(\n /* webpackChunkName: \"rheostat\" */\n 'rheostat');\n});\n\nfunction SliderNumeric() {\n var _useHawkSearch = useHawkSearch(),\n facetSelections = _useHawkSearch.store.facetSelections;\n\n var _useFacet = useFacet(),\n _useFacet$state = _useFacet.state,\n facetValues = _useFacet$state.facetValues,\n decimalPrecision = _useFacet$state.decimalPrecision,\n facet = _useFacet.facet,\n actor = _useFacet.actor; // the range of the slider is defined by the first facet value. or null if there is no first value\n\n\n var range = facetValues.length > 0 ? facetValues[0] : null;\n\n var _useState = useState(range && Number(parseFloat(range.RangeMin || '').toFixed(2))),\n _useState2 = _slicedToArray$1(_useState, 2),\n rangeMin = _useState2[0],\n setMinRange = _useState2[1];\n\n var _useState3 = useState(range && Number(parseFloat(range.RangeMax || '').toFixed(2))),\n _useState4 = _slicedToArray$1(_useState3, 2),\n rangeMax = _useState4[0],\n setMaxRange = _useState4[1];\n\n var _useState5 = useState(range && Number(parseFloat(range.RangeStart || '').toFixed(2))),\n _useState6 = _slicedToArray$1(_useState5, 2),\n rangeStart = _useState6[0],\n setStartRange = _useState6[1];\n\n var _useState7 = useState(range && Number(parseFloat(range.RangeEnd || '').toFixed(2))),\n _useState8 = _slicedToArray$1(_useState7, 2),\n rangeEnd = _useState8[0],\n setEndRange = _useState8[1]; // if there's no range, initialize to zeros\n\n\n var _useState9 = useState(),\n _useState10 = _slicedToArray$1(_useState9, 2),\n minValue = _useState10[0],\n setMinValue = _useState10[1];\n\n var _useState11 = useState(),\n _useState12 = _slicedToArray$1(_useState11, 2),\n maxValue = _useState12[0],\n setMaxValue = _useState12[1];\n\n var _useState13 = useState(facet.IsCurrency),\n _useState14 = _slicedToArray$1(_useState13, 2),\n isCurency = _useState14[0],\n setIsCurrency = _useState14[1];\n\n var _useState15 = useState(facet.CurrencySymbol),\n _useState16 = _slicedToArray$1(_useState15, 2),\n currencySymbol = _useState16[0],\n setCurrencySymbol = _useState16[1];\n\n useEffect(function () {\n setCurrencySymbol(facet.CurrencySymbol || '$');\n setIsCurrency(facet.IsCurrency);\n }, [facet]);\n useEffect(function () {\n var paramName = facet.ParamName || facet.Field; // clear min and max value if these were cleared\n\n if (!paramName || !(paramName in facetSelections)) {\n setMinValue(undefined);\n setMaxValue(undefined);\n } else if (paramName in facetSelections && facetSelections[paramName].items && facetSelections[paramName].items.length > 0) {\n var selectedValues = facetSelections[paramName].items[0].value.split(',');\n setMinValue(Number(selectedValues[0]));\n setMaxValue(Number(selectedValues[1]));\n }\n }, [facetSelections]);\n useEffect(function () {\n var newRange = facetValues.length > 0 ? facetValues[0] : null;\n setMinRange(newRange && Number(parseFloat(newRange.RangeMin || '').toFixed(2)));\n setMaxRange(newRange && Number(parseFloat(newRange.RangeMax || '').toFixed(2)));\n setStartRange(newRange && Number(parseFloat(newRange.RangeStart || '').toFixed(2)));\n setEndRange(newRange && Number(parseFloat(newRange.RangeEnd || '').toFixed(2)));\n }, [facetValues]);\n\n if (rangeMin === null || isNaN(rangeMin) || rangeMax === null || isNaN(rangeMax) || rangeStart === null || isNaN(rangeStart) || rangeEnd === null || isNaN(rangeEnd)) {\n // this facet is somehow misconfigured so don't render\n return null;\n }\n\n function onSliderValueChange(state) {\n var _state$values = _slicedToArray$1(state.values, 2),\n newMin = _state$values[0],\n newMax = _state$values[1];\n\n setFacetValues(newMin, newMax);\n }\n\n function onValueChange(newMinValue, newMaxValue) {\n var currentMinValue = minValue;\n var currentMaxValue = maxValue; // if min value wasn't yet selected use range start\n\n if (minValue === undefined && rangeStart !== null) {\n currentMinValue = rangeStart; // setMinValue(rangeStart);\n } // if max value wasn't yet selected use range end\n\n\n if (maxValue === undefined && rangeEnd !== null) {\n currentMaxValue = rangeEnd;\n }\n\n if (currentMinValue === undefined || currentMaxValue === undefined) {\n return;\n }\n\n if (currentMinValue !== newMinValue && newMinValue <= currentMaxValue) {\n if (rangeMin !== null && newMinValue <= rangeMin) {\n currentMinValue = rangeMin;\n } else {\n currentMinValue = newMinValue;\n }\n }\n\n if (currentMaxValue !== newMaxValue && newMaxValue >= currentMinValue) {\n if (rangeMax !== null && newMaxValue >= rangeMax) {\n currentMaxValue = rangeMax;\n } else {\n currentMaxValue = newMaxValue;\n }\n }\n\n setMinValue(currentMinValue);\n setMaxValue(currentMaxValue);\n setFacetValues(currentMinValue, currentMaxValue);\n }\n\n function setFacetValues(minVal, maxVal) {\n if (minVal === undefined || maxVal === undefined || isNaN(minVal) || isNaN(maxVal)) {\n return;\n }\n\n setMinValue(minVal);\n setMaxValue(maxVal); // this selection is sent to hawk separated by commas, so build the value here\n\n var selection = \"\".concat(minVal, \",\").concat(maxVal);\n actor.setFacets([selection]);\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-link\"\n }, /*#__PURE__*/React__default.createElement(React__default.Suspense, {\n fallback: /*#__PURE__*/React__default.createElement(\"div\", null, \"Loading...\")\n }, /*#__PURE__*/React__default.createElement(SliderNumericInputs, {\n min: rangeMin,\n max: rangeMax,\n currencySymbol: currencySymbol,\n isCurrency: isCurency,\n values: [minValue === undefined ? rangeStart : Math.max(minValue, rangeMin), maxValue === undefined ? rangeEnd : Math.min(maxValue, rangeMax)],\n onValueChange: onValueChange,\n decimalPrecision: decimalPrecision\n }), /*#__PURE__*/React__default.createElement(Rheostat$1, {\n min: rangeMin,\n max: rangeMax,\n values: [Math.floor(minValue === undefined ? rangeStart : Math.max(minValue, rangeMin)), Math.ceil(maxValue === undefined ? rangeEnd : Math.min(maxValue, rangeMax))],\n onChange: onSliderValueChange\n }))));\n}\n\nfunction Slider() {\n var _useFacet = useFacet(),\n facet = _useFacet.facet;\n\n if (facet.DataType && facet.DataType === 'datetime') {\n return /*#__PURE__*/React__default.createElement(SliderDate, null);\n }\n\n return /*#__PURE__*/React__default.createElement(SliderNumeric, null);\n}\n\nfunction SwatchItem(item) {\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config;\n\n var facetValue = item.swatchValue.Value || ''; // facets can be selected or negated, so explicitly check that the facet is not selected\n\n var swatchUrl = config.dashboardUrl + (!item.facetSwatch.AssetUrl ? item.facetSwatch.AssetName : item.facetSwatch.AssetUrl);\n var colorSwatchStyle = {\n backgroundColor: item.facetSwatch.Color\n };\n var listItemClassNames = 'hawk-facet-rail__facet-list-item' + (item.isSelected ? ' hawkFacet-active' : '') + (item.isNegated ? ' hawkFacet-negative' : '');\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: item.facetSwatch.Value,\n className: listItemClassNames\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick(e) {\n return item.onSwatchSelected(facetValue, false);\n },\n className: \"hawk-facet-rail__facet-btn hawk-styleSwatch\",\n \"aria-pressed\": item.isSelected\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-selectionInner\"\n }, item.isColor ? /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-swatchColor\",\n style: colorSwatchStyle,\n title: item.facetSwatch.Value\n }) : /*#__PURE__*/React__default.createElement(\"img\", {\n src: swatchUrl,\n alt: item.facetSwatch.Value\n }))), /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"hawk-negativeIcon\"\n }, /*#__PURE__*/React__default.createElement(\"i\", {\n className: \"hawkIcon-blocked\",\n onClick: function onClick(e) {\n return item.onSwatchSelected(facetValue, true);\n }\n })));\n}\n\nfunction Swatch$1() {\n var _useHawkSearch = useHawkSearch(),\n store = _useHawkSearch.store;\n\n var _useFacet = useFacet(),\n facet = _useFacet.facet,\n actor = _useFacet.actor,\n facetValues = _useFacet.state.facetValues,\n renderer = _useFacet.renderer;\n\n function onSwatchSelected(facetValue, isNegated) {\n isNegated ? actor.negateFacet(facetValue) : actor.selectFacet(facetValue);\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-swatch\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawk-facet-rail__facet-list\"\n }, facet.SwatchData && facetValues.map(function (value) {\n var facetValue = value.Value || ''; // find swatch that is corresponding with value\n\n var facetSwatch = facet.SwatchData && facet.SwatchData.find(function (s) {\n return s.Value.toLowerCase() === facetValue.toLowerCase();\n });\n\n if (!facetSwatch) {\n return;\n }\n\n var selectionState = store.isFacetSelected(facet, value).state;\n var isNegated = selectionState === FacetSelectionState.Negated;\n var isSelected = selectionState !== FacetSelectionState.NotSelected;\n var isColor = !!facetSwatch.Color;\n return /*#__PURE__*/React__default.createElement(SwatchItem, {\n key: facetValue,\n swatchValue: value,\n facetSwatch: facetSwatch,\n isSelected: isSelected,\n isColor: isColor,\n isNegated: isNegated,\n onSwatchSelected: onSwatchSelected\n });\n }))), renderer.renderTruncation());\n}\n\nfunction NestedItem(item) {\n var _useHawkSearch = useHawkSearch(),\n store = _useHawkSearch.store;\n\n var _useFacet = useFacet(),\n facet = _useFacet.facet;\n\n var _useState = useState(false),\n _useState2 = _slicedToArray$1(_useState, 2),\n isExpanded = _useState2[0],\n setIsExpanded = _useState2[1];\n\n var _useState3 = useState(facet.shouldTruncate),\n _useState4 = _slicedToArray$1(_useState3, 2),\n isTruncated = _useState4[0],\n setIsTruncated = _useState4[1];\n\n var hierarchyValue = item.hierarchyValue || '';\n var hierarchyChildren = item.hierarchyValue.Children || [];\n var remainingValues = 0;\n var shouldTruncateChildren = facet.DisplayType === 'truncating' && hierarchyChildren.length > facet.TruncateThreshold;\n\n if (shouldTruncateChildren && isTruncated) {\n var valuesBeforeTrunc = hierarchyChildren.length;\n hierarchyChildren = hierarchyChildren.slice(0, facet.TruncateThreshold);\n remainingValues = valuesBeforeTrunc - facet.TruncateThreshold;\n }\n\n function renderChildTruncation() {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, shouldTruncateChildren && /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"hawk-facet-rail__facet-list-item hawk-show-more\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick() {\n return setIsTruncated(!isTruncated);\n },\n className: \"hawk-facet-rail__show-more-btn\"\n }, isTruncated ? \"(+) Show \".concat(remainingValues, \" More\") : '(-) Show Less')));\n }\n\n return /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"hawk-facet-rail__facet-list-item hawkFacet-group\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawkFacet-group__inline\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick() {\n return item.onValueSelected(hierarchyValue, false);\n },\n className: \"hawk-facet-rail__facet-btn\",\n \"aria-pressed\": item.isSelected\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: item.isSelected ? 'hawk-facet-rail__facet-checkbox hawk-facet-rail__facet-checkbox--checked' : 'hawk-facet-rail__facet-checkbox'\n }, item.isSelected ? /*#__PURE__*/React__default.createElement(CheckmarkSVG, {\n \"class\": \"hawk-facet-rail__facet-checkbox-icon\"\n }) : null), /*#__PURE__*/React__default.createElement(\"span\", {\n style: item.isNegated ? {\n textDecoration: 'line-through'\n } : undefined,\n className: \"hawk-facet-rail__facet-name\"\n }, item.hierarchyValue.Label, \" \", \" (\".concat(item.hierarchyValue.Count), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Results\"), \")\")), /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick(e) {\n return item.onValueSelected(hierarchyValue, true);\n },\n className: \"hawk-facet-rail__facet-btn-exclude\"\n }, item.isNegated ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(PlusCircleSVG, {\n \"class\": \"hawk-facet-rail__facet-btn-include\"\n }), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Include facet\")) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(DashCircleSVG, null), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Exclude facet\"))), hierarchyChildren.length > 0 ? /*#__PURE__*/React__default.createElement(\"button\", {\n className: isExpanded ? 'hawk-collapseState' : 'hawk-collapseState collapsed',\n \"aria-expanded\": \"false\",\n onClick: function onClick() {\n return setIsExpanded(!isExpanded);\n }\n }, \"\\xA0\") : null), isExpanded && hierarchyChildren ? /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__w-100\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawkFacet-group-inside\"\n }, hierarchyChildren.map(function (value) {\n var selectionState = store.isFacetSelected(facet, value).state;\n var isNegated = selectionState === FacetSelectionState.Negated;\n var isSelected = selectionState !== FacetSelectionState.NotSelected;\n return /*#__PURE__*/React__default.createElement(NestedItem, {\n key: value.Path,\n hierarchyValue: value,\n isSelected: isSelected,\n isNegated: isNegated,\n onValueSelected: item.onValueSelected\n });\n }), renderChildTruncation())) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null));\n}\n\nfunction Nested() {\n var _useHawkSearch = useHawkSearch(),\n store = _useHawkSearch.store;\n\n var _useFacet = useFacet(),\n facet = _useFacet.facet,\n facetValues = _useFacet.state.facetValues,\n actor = _useFacet.actor,\n renderer = _useFacet.renderer;\n\n function onValueSelected(facetValue, isNegated) {\n isNegated ? actor.negateFacet(facetValue) : actor.selectFacet(facetValue);\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-checkbox\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawk-facet-rail__facet-list\"\n }, facetValues.map(function (value) {\n // facets can be selected or negated, so explicitly check that the facet is not selected\n var selectionState = store.isFacetSelected(facet, value).state;\n var isSelected = selectionState !== FacetSelectionState.NotSelected;\n var isNegated = selectionState === FacetSelectionState.Negated;\n return /*#__PURE__*/React__default.createElement(NestedItem, {\n key: value.Value,\n hierarchyValue: value,\n isSelected: isSelected,\n isNegated: isNegated,\n onValueSelected: onValueSelected\n });\n }))), renderer.renderTruncation());\n}\n\nfunction formatDate$3(date) {\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 101).toString().substring(1);\n var day = (date.getDate() + 100).toString().substring(1);\n return year + '-' + month + '-' + day;\n}\n\nfunction replaceHyphen$1(date) {\n if (!date) {\n return date;\n }\n\n return date.replace(/-/g, '/');\n}\n\nfunction OpenRange() {\n var _useHawkSearch = useHawkSearch(),\n hawkActor = _useHawkSearch.actor;\n\n var _useFacet = useFacet(),\n facetValues = _useFacet.state.facetValues,\n facet = _useFacet.facet,\n actor = _useFacet.actor;\n\n var daterange = facetValues.length > 0 ? facetValues[0] : null;\n var rangeStartDate = daterange && daterange.RangeStart ? formatDate$3(new Date(daterange.RangeStart)) : '';\n var rangeEndDate = daterange && daterange.RangeEnd ? formatDate$3(new Date(daterange.RangeEnd)) : ''; // if there's no range, initialize to empty strings\n\n var _useState = useState(rangeStartDate || ''),\n _useState2 = _slicedToArray$1(_useState, 2),\n minDateValue = _useState2[0],\n setdateStartValue = _useState2[1];\n\n var _useState3 = useState(rangeEndDate || ''),\n _useState4 = _slicedToArray$1(_useState3, 2),\n maxDateValue = _useState4[0],\n setdateEndValue = _useState4[1]; // the open range boundary values are defined by the first facet value. or null if there is no first value\n\n\n var range = facetValues.length > 0 ? facetValues[0] : null;\n var rangeStart = range && range.RangeStart || '';\n var rangeEnd = range && range.RangeEnd || ''; // if there's no range, initialize to empty strings\n\n var _useState5 = useState(rangeStart || ''),\n _useState6 = _slicedToArray$1(_useState5, 2),\n minValue = _useState6[0],\n setStartValue = _useState6[1];\n\n var _useState7 = useState(rangeEnd || ''),\n _useState8 = _slicedToArray$1(_useState7, 2),\n maxValue = _useState8[0],\n setEndValue = _useState8[1];\n\n if (rangeStart === null || rangeEnd === null) {\n // this facet is somehow misconfigured so don't render\n return null;\n }\n\n function onRangeStartChange(event) {\n setFacetValues(event.currentTarget.value, maxValue);\n }\n\n function onRangeEndChange(event) {\n setFacetValues(minValue, event.currentTarget.value);\n }\n\n function setFacetValues(startVal, endVal) {\n setStartValue(startVal);\n setEndValue(endVal); // this selection is sent to hawk separated by commas, so build the value here\n\n if (startVal === '' && endVal === '') {\n hawkActor.clearFacet(facet);\n } else {\n var selection = \"\".concat(startVal, \",\").concat(endVal);\n actor.setFacets([selection]);\n }\n }\n\n if (rangeStart === null || rangeEnd === null) {\n // this facet is somehow misconfigured so don't render\n return null;\n }\n\n function ondateRangeStartChange(event) {\n setdateFacetValues(event.currentTarget.value, maxDateValue);\n }\n\n function ondateRangeEndChange(event) {\n setdateFacetValues(minDateValue, event.currentTarget.value);\n }\n\n function setdateFacetValues(startVal, endVal) {\n setdateStartValue(startVal);\n setdateEndValue(endVal); // this selection is sent to hawk separated by commas, so build the value here\n\n if (startVal === '' && endVal === '') {\n hawkActor.clearFacet(facet);\n } else {\n var selection = \"\".concat(replaceHyphen$1(startVal), \",\").concat(replaceHyphen$1(endVal));\n actor.setFacets([selection]);\n }\n }\n\n if (facet.DataType && facet.DataType === 'datetime') {\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-link\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-open-range hawk-facet-type-date\"\n }, /*#__PURE__*/React__default.createElement(\"input\", {\n type: \"date\",\n className: \"hawk-text-input hawk-date-value-start\",\n value: minDateValue,\n min: rangeStartDate,\n max: rangeEndDate,\n onChange: ondateRangeStartChange\n }), /*#__PURE__*/React__default.createElement(\"input\", {\n type: \"date\",\n className: \"hawk-text-input hawk-date-value-end\",\n value: maxDateValue,\n min: rangeStartDate,\n max: rangeEndDate,\n onChange: ondateRangeEndChange\n }))));\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-values-link\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-open-range\"\n }, /*#__PURE__*/React__default.createElement(\"input\", {\n type: \"text\",\n className: \"hawk-text-input value-start\",\n \"data-type\": \"currency\",\n value: minValue,\n onChange: onRangeStartChange\n }), /*#__PURE__*/React__default.createElement(\"input\", {\n type: \"text\",\n className: \"hawk-text-input value-end\",\n onChange: onRangeEndChange,\n value: maxValue\n }))));\n}\n\nvar FacetType;\n\n(function (FacetType) {\n FacetType[\"Checkbox\"] = \"checkbox\";\n FacetType[\"NestedCheckbox\"] = \"nestedcheckbox\";\n FacetType[\"Link\"] = \"link\";\n FacetType[\"Nestedlink\"] = \"nestedlink\";\n FacetType[\"Slider\"] = \"slider\";\n FacetType[\"Swatch\"] = \"swatch\";\n FacetType[\"Rating\"] = \"rating\";\n FacetType[\"Size\"] = \"size\";\n FacetType[\"SearchWithin\"] = \"search\";\n FacetType[\"RecentSearches\"] = \"recentsearches\";\n FacetType[\"RelatedSearches\"] = \"relatedsearches\";\n FacetType[\"OpenRange\"] = \"openRange\";\n})(FacetType || (FacetType = {}));\n\nvar defaultFacetComponents = [{\n facetType: FacetType.Checkbox,\n component: Checkbox\n}, {\n facetType: FacetType.NestedCheckbox,\n component: Nested\n}, {\n facetType: FacetType.SearchWithin,\n component: Search\n}, {\n facetType: FacetType.Link,\n component: Link\n}, {\n facetType: FacetType.Slider,\n component: Slider\n}, {\n facetType: FacetType.Swatch,\n component: Swatch$1\n}, {\n facetType: FacetType.OpenRange,\n component: OpenRange\n}];\n/**\r\n * Builds a list of all supported facet components by also taking into consideration overridden components.\r\n */\n\nfunction getFacetComponents(overridedComponents) {\n var facetComponents = []; // tslint:disable-next-line:forin\n\n var _loop = function _loop(key) {\n var fType = FacetType[key];\n var fComponent = // check to see if the facet is overridden\n overridedComponents.find(function (component) {\n return component.facetType === fType;\n }) || // otherwise, pull from defaults\n defaultFacetComponents.find(function (component) {\n return component.facetType === fType;\n });\n\n if (fComponent) {\n facetComponents.push(fComponent);\n }\n };\n\n for (var key in FacetType) {\n _loop(key);\n }\n\n return facetComponents;\n}\n\nfunction FacetList() {\n var _useHawkSearch = useHawkSearch(),\n searchResults = _useHawkSearch.store.searchResults;\n\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config; // the number of random placeholders to render while we wait for results\n\n\n var _useState = useState(Math.round(Math.random() * (5 - 3) + 3)),\n _useState2 = _slicedToArray$1(_useState, 1),\n numPlaceholders = _useState2[0];\n\n var components = getFacetComponents(config.facetOverrides || []);\n var urlSearchString = window.location.search;\n var urlParams = new URLSearchParams(urlSearchString);\n var secondarySearch = urlParams.get('searchWithin');\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__facet-list\"\n }, searchResults ? // if there are search results, render the facets\n searchResults.Facets.map(function (facet) {\n if (!facet.IsVisible) {\n return null;\n }\n\n var registeredComponent = components.find(function (component) {\n return component.facetType === facet.FacetType;\n });\n var Component = !registeredComponent ? null : registeredComponent.component;\n return /*#__PURE__*/React__default.createElement(Facet$1, {\n key: facet.FacetId,\n facet: facet\n }, Component ? /*#__PURE__*/React__default.createElement(Component, null) : /*#__PURE__*/React__default.createElement(\"div\", null, facet.FieldType, \" \", facet.FacetType, \" is not implemented!\"));\n }) : // otherwise render a couple placeholders\n _toConsumableArray(Array(numPlaceholders)).map(function (_, i) {\n return /*#__PURE__*/React__default.createElement(PlaceholderFacet, {\n key: i\n });\n }), secondarySearch ? /*#__PURE__*/React__default.createElement(SecondarySearchFacet, {\n searchString: secondarySearch\n }) : null);\n}\n\nfunction FacetRail() {\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__heading\"\n }, t('Narrow Results')), /*#__PURE__*/React__default.createElement(FacetList, null));\n}\n\n/**\r\n * X Circle SVG\r\n *\r\n * @returns\r\n */\nfunction XCircleSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 32 32\",\n className: 'icon icon-help-header ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n fill: \"#009cde\",\n d: \"M15.998 0c8.837 0 16 7.163 16 16s-7.163 16-16 16c-8.837 0-16-7.163-16-16v0c0-8.837 7.163-16 16-16v0z\"\n }), /*#__PURE__*/createElement(\"path\", {\n fill: \"#fff\",\n d: \"M13.6 11.646l7.171 7.171c0.541 0.541 0.541 1.417 0 1.958l0.002-0.002c-0.541 0.541-1.417 0.541-1.958 0l-7.171-7.171c-0.541-0.541-0.541-1.417 0-1.958l-0.002 0.002c0.541-0.541 1.417-0.541 1.958 0z\"\n }), /*#__PURE__*/createElement(\"path\", {\n fill: \"#fff\",\n d: \"M20.774 13.6l-7.174 7.174c-0.54 0.54-1.415 0.54-1.955 0l-0.002-0.002c-0.54-0.54-0.54-1.415 0-1.955l7.174-7.174c0.54-0.54 1.415-0.54 1.955 0l0.002 0.002c0.54 0.54 0.54 1.415 0 1.955z\"\n }));\n}\n\nfunction Selections$1() {\n var _useHawkSearch = useHawkSearch(),\n _useHawkSearch$store = _useHawkSearch.store,\n facetSelections = _useHawkSearch$store.facetSelections,\n pendingSearch = _useHawkSearch$store.pendingSearch,\n actor = _useHawkSearch.actor;\n\n var keys = Object.keys(facetSelections);\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n var location = window.location.href;\n var isEngagementPartnerPage = location.includes('engagementpartnermasterid=');\n var isIssuerPage = location.includes('issuerid=') || location.includes('issuercik=');\n var isFirmPage = location.includes('firmid=');\n var hideClearButton = isEngagementPartnerPage || isIssuerPage || isFirmPage;\n\n if (keys.length === 0 || isEngagementPartnerPage && keys.length === 1 || isIssuerPage && keys.length === 1 || isFirmPage && keys.length === 1) {\n // no selections, so render nothing\n return null;\n }\n\n function clearSelection(facet, value) {\n if (value) {\n actor.clearFacetValue(facet, value.value);\n } else {\n actor.clearFacet(facet);\n }\n }\n\n function clearAll() {\n actor.clearAllFacets();\n }\n\n function renderRange(value, facet) {\n var displayValue = value.value;\n\n if (!displayValue || displayValue.indexOf(',') === -1) {\n // range facet selection values should include a comma, so if they don't then this likely isn't a valid\n // range value that we want to render\n var selectedRange = facet.Ranges.find(function (range) {\n return range.Value === value.value;\n });\n return selectedRange ? selectedRange.Label : displayValue;\n }\n\n var splittedValues = displayValue.split(',');\n\n if (facet.IsCurrency && splittedValues.length > 1) {\n return \"\".concat(facet.CurrencySymbol, \" \").concat(splittedValues[0], \" - \").concat(facet.CurrencySymbol, \" \").concat(splittedValues[1]);\n } // return a prettier display value for ranges\n\n\n return displayValue.replace(',', ' - ');\n }\n\n function renderLabel(selection, item) {\n if (selection.facet.FacetType === 'openRange' && selection.facet.DataType === 'datetime') {\n var _split = (item.label || ',').split(','),\n _split2 = _slicedToArray$1(_split, 2),\n startDate = _split2[0],\n endDate = _split2[1];\n\n startDate = moment(startDate.replace(/\\//g, '-')).format('LLLL');\n endDate = moment(endDate.replace(/\\//g, '-')).format('LLLL');\n return \"\".concat(startDate, \" - \").concat(endDate);\n } else if (selection.facet.FieldType === 'range') {\n return renderRange(item, selection.facet);\n } else if (selection.facet.FacetType === 'search') {\n return decodeURIComponent(item.label);\n }\n\n return item.label;\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__selections\"\n }, /*#__PURE__*/React__default.createElement(\"h4\", null, t(\"You've selected\")), /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawk-selections\"\n }, keys.map(function (key) {\n var selection = facetSelections[key];\n var selectionCat = selection.facet.Field;\n var hideSelection = isEngagementPartnerPage && selectionCat === 'engagementpartnermasterid' || isIssuerPage && selectionCat === 'issuerid' || isIssuerPage && selectionCat === 'issuercik' || isFirmPage && selectionCat === 'firmid';\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: key,\n className: \"hawk-selections__category\".concat(hideSelection ? ' visually-hidden' : '')\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-selections__category-wrapper\"\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-selections__category-name\"\n }, selection.label, \":\"), /*#__PURE__*/React__default.createElement(\"ul\", {\n className: \"hawk-selections__item-list\"\n }, selection.items.map(function (item) {\n var negation = item.value.startsWith('-');\n return /*#__PURE__*/React__default.createElement(\"li\", {\n key: item.value,\n className: \"hawk-selections__item\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick() {\n return clearSelection(key, item);\n },\n className: \"hawk-selections__item-remove\"\n }, /*#__PURE__*/React__default.createElement(XCircleSVG, null), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Unselect facet \", selection.label, \" \", item.label)), /*#__PURE__*/React__default.createElement(\"span\", {\n className: negation ? 'hawk-selections__item-name hawk-selections__item-name--negated' : 'hawk-selections__item-name'\n }, renderLabel(selection, item)));\n }))), /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: function onClick() {\n return clearSelection(key);\n },\n className: \"hawk-selections__category-remove\"\n }, /*#__PURE__*/React__default.createElement(XCircleSVG, null), ' ', /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Unselect all facets for \", selection.label)));\n }), !hideClearButton && /*#__PURE__*/React__default.createElement(\"li\", {\n className: \"hawk-selections__category\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n onClick: clearAll,\n className: \"hawk-btn hawk-btn-primary-outline\"\n }, t('Clear All')))));\n}\n\nfunction SearchResultsLabel() {\n var _useHawkSearch = useHawkSearch(),\n pendingSearch = _useHawkSearch.store.pendingSearch;\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n /* if (!pendingSearch.Keyword) {\r\n \t// no selections, so render nothing\r\n \treturn null;\r\n } */\n\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-facet-rail__results-label\"\n }, /*#__PURE__*/React__default.createElement(\"h3\", null, pendingSearch.Keyword ? t('Search Results for') + ' ' + decodeURIComponent(pendingSearch.Keyword) : t('Search Results')));\n}\n\nfunction Sorting$1() {\n var _useHawkSearch = useHawkSearch(),\n _useHawkSearch$store = _useHawkSearch.store,\n searchResults = _useHawkSearch$store.searchResults,\n pendingSearch = _useHawkSearch$store.pendingSearch,\n actor = _useHawkSearch.actor;\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n function onChange(event) {\n actor.setSearch({\n SortBy: event.currentTarget.value\n });\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-sorting\"\n }, /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-sorting__label\"\n }, t('Sort By')), /*#__PURE__*/React__default.createElement(\"select\", {\n value: pendingSearch.SortBy,\n onChange: onChange\n }, searchResults ? searchResults.Sorting.Items.map(function (sortingItem) {\n return /*#__PURE__*/React__default.createElement(\"option\", {\n key: sortingItem.Value,\n value: sortingItem.Value,\n selected: sortingItem.Selected\n }, sortingItem.Label);\n }) : /*#__PURE__*/React__default.createElement(\"option\", {\n value: \"score\"\n }, \"Best Match\")));\n}\n\n/**\r\n * Left chevron SVG\r\n *\r\n * @returns\r\n */\nfunction LeftChevronSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 19 32\",\n className: 'icon ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n d: \"M18.462 27.891c0.457 0.427 0.742 1.034 0.742 1.707s-0.285 1.279-0.741 1.705l-0.001 0.001c-0.467 0.437-1.097 0.705-1.789 0.705s-1.322-0.268-1.79-0.706l0.002 0.001-14.146-13.598c-0.457-0.427-0.742-1.034-0.742-1.707s0.285-1.28 0.741-1.705l0.001-0.001 14.142-13.589c0.468-0.436 1.097-0.704 1.79-0.704s1.322 0.268 1.791 0.706l-0.002-0.001c0.457 0.427 0.742 1.034 0.742 1.707s-0.285 1.28-0.741 1.705l-0.001 0.001-11.597 11.883z\"\n }));\n}\n\n/**\r\n * Right chevron SVG\r\n *\r\n * @returns\r\n */\nfunction RightChevronSVG(props) {\n return /*#__PURE__*/createElement(\"svg\", {\n viewBox: \"0 0 19 32\",\n className: 'icon ' + props[\"class\"],\n focusable: \"false\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/createElement(\"path\", {\n d: \"M0.738 4.109c-0.457-0.427-0.742-1.034-0.742-1.707s0.285-1.28 0.741-1.705l0.001-0.001c0.467-0.437 1.097-0.705 1.789-0.705s1.322 0.268 1.79 0.706l-0.002-0.001 14.146 13.598c0.457 0.427 0.742 1.034 0.742 1.707s-0.285 1.279-0.741 1.705l-0.001 0.001-14.142 13.589c-0.468 0.436-1.097 0.704-1.79 0.704s-1.322-0.268-1.791-0.706l0.002 0.001c-0.457-0.427-0.742-1.034-0.742-1.707s0.285-1.279 0.741-1.705l0.001-0.001 11.597-11.883z\"\n }));\n}\n\nfunction Pager(_ref) {\n var page = _ref.page,\n totalPages = _ref.totalPages,\n onPageChange = _ref.onPageChange;\n\n var _useState = useState(undefined),\n _useState2 = _slicedToArray$1(_useState, 2),\n inputValue = _useState2[0],\n setInputValue = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray$1(_useState3, 2),\n hasError = _useState4[0],\n setHasError = _useState4[1];\n\n function goToPreviousPage() {\n goToPage(page - 1);\n }\n\n function goToNextPage() {\n goToPage(page + 1);\n }\n\n function goToPage(pageNo) {\n if (isNaN(pageNo)) {\n // not a valid number\n doInputError();\n return;\n }\n\n if (pageNo < 1) {\n // can't go beyond the first page\n doInputError();\n return;\n }\n\n if (pageNo > totalPages) {\n // can't go beyond the last page\n doInputError();\n return;\n } // once we've determined that we *do* want to do this page change, clear the user's input\n // because the input should be driven by props again\n\n\n setInputValue(undefined); // inform the consumer that we've changed pages\n\n onPageChange(pageNo);\n }\n /**\r\n * Returns the input value for the pager input control. If the user has typed in a value into the input then\r\n * that value will be returned; otherwise, the page value passed in via props will be returned.\r\n */\n\n\n function getInputValue() {\n if (inputValue !== undefined) {\n // if the user typed an input, that's the page value for the control\n return inputValue || '';\n } // otherwise, fall back to what's passed in through props\n\n\n return page;\n }\n\n function onKeyDown(event) {\n var wantedPageNo = parseInt(event.currentTarget.value, 10);\n\n if (event.key === 'Enter') {\n goToPage(wantedPageNo);\n }\n }\n\n function onInput(event) {\n var wantedPageNo = parseInt(event.currentTarget.value, 10);\n\n if (wantedPageNo > totalPages) {\n wantedPageNo = totalPages;\n event.currentTarget.value = '';\n event.preventDefault();\n }\n\n if (wantedPageNo < 1) {\n wantedPageNo = 1;\n event.currentTarget.value = '';\n event.preventDefault();\n }\n }\n\n function doInputError() {\n setHasError(true); // in 500ms, clear the error animation\n\n setTimeout(function () {\n setHasError(false);\n }, 500);\n }\n\n function onChange(event) {\n setInputValue(event.currentTarget.value);\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-pagination__controls\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"hawk-pagination__item\",\n onClick: goToPreviousPage\n }, /*#__PURE__*/React__default.createElement(LeftChevronSVG, {\n \"class\": \"hawk-pagination__left\"\n }), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Previous page\")), /*#__PURE__*/React__default.createElement(\"input\", {\n type: \"number\",\n value: getInputValue(),\n onChange: onChange,\n onInput: onInput,\n onKeyDown: onKeyDown,\n min: \"1\",\n max: totalPages,\n className: hasError ? 'hawk-pagination__input error' : 'hawk-pagination__input'\n }), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"hawk-pagination__total-text\"\n }, \"\\xA0 of \", totalPages), /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"hawk-pagination__item\",\n onClick: goToNextPage\n }, /*#__PURE__*/React__default.createElement(RightChevronSVG, {\n \"class\": \"hawk-pagination__right\"\n }), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"Next page\")));\n}\n\nfunction ItemsPerPage() {\n var _useHawkSearch = useHawkSearch(),\n _useHawkSearch$store = _useHawkSearch.store,\n searchResults = _useHawkSearch$store.searchResults,\n pendingSearch = _useHawkSearch$store.pendingSearch,\n actor = _useHawkSearch.actor;\n\n function onChange(event) {\n actor.setSearch({\n MaxPerPage: Number(event.currentTarget.value),\n PageNo: 1 // if we change our max items per page, reset to page 1\n\n });\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-items-per-page\"\n }, /*#__PURE__*/React__default.createElement(\"select\", {\n value: pendingSearch.MaxPerPage,\n onChange: onChange\n }, searchResults ? searchResults.Pagination.Items.map(function (paginationItem) {\n return /*#__PURE__*/React__default.createElement(\"option\", {\n key: paginationItem.PageSize,\n value: paginationItem.PageSize\n }, paginationItem.Label);\n }) : /*#__PURE__*/React__default.createElement(\"option\", null, \"12 Items Per Page\")));\n}\n\nfunction Pagination$1() {\n var _useHawkSearch = useHawkSearch(),\n _useHawkSearch$store = _useHawkSearch.store,\n searchResults = _useHawkSearch$store.searchResults,\n pendingSearch = _useHawkSearch$store.pendingSearch,\n actor = _useHawkSearch.actor;\n\n function onPageChange(pageNo) {\n // when the pager's page changes, trigger a new search\n actor.setSearch({\n PageNo: pageNo\n });\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-pagination\"\n }, /*#__PURE__*/React__default.createElement(Pager, {\n page: searchResults ? pendingSearch.PageNo || 1 : 0,\n totalPages: searchResults ? searchResults.Pagination.NofPages : 0,\n onPageChange: onPageChange\n }), /*#__PURE__*/React__default.createElement(ItemsPerPage, null));\n}\n\nfunction ToolRow() {\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-tool-row\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-tool-row__item\"\n }, /*#__PURE__*/React__default.createElement(Sorting$1, null)), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-tool-row__item\"\n }, /*#__PURE__*/React__default.createElement(Pagination$1, null)));\n}\n\nfunction PlaceholderImage(_ref) {\n var showSpinner = _ref.showSpinner;\n\n var _useState = useState(Math.round(Math.random() * (175 - 125) + 125)),\n _useState2 = _slicedToArray$1(_useState, 1),\n height = _useState2[0];\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__item-placeholder\",\n style: {\n height: \"\".concat(height, \"px\")\n }\n }, showSpinner && /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-placeholder__image\"\n }, \"Loading...\"));\n}\n\nfunction PlaceholderItem() {\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__item\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__item-image\"\n }, /*#__PURE__*/React__default.createElement(PlaceholderImage, {\n showSpinner: false\n })), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__item-name\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__item-name-placeholder\"\n })));\n}\n\nfunction Spinner(_ref) {\n var isVisible = _ref.isVisible;\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n if (!isVisible) {\n return null;\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: 'hawk-modal'\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n className: 'hawk-modal__content'\n }, t('Loading'), \"...\"));\n}\n\nfunction ResultImage(_ref) {\n var item = _ref.item,\n websiteUrl = _ref.websiteUrl,\n itemTitleFieldName = _ref.itemTitleFieldName,\n imageUrlFieldName = _ref.imageUrlFieldName;\n\n var _useState = useState(false),\n _useState2 = _slicedToArray$1(_useState, 2),\n imageLoaded = _useState2[0],\n setImageLoaded = _useState2[1];\n\n var imageUrl = imageUrlFieldName ? item.getDocumentValue(imageUrlFieldName) : item.getDocumentValue('image');\n\n if (!imageUrl) {\n return null;\n }\n\n var itemName = itemTitleFieldName ? item.getDocumentValue(itemTitleFieldName) : item.getDocumentValue('itemname');\n var absoluteUrlTester = new RegExp('^https?://|^//', 'i');\n\n if (!absoluteUrlTester.test(imageUrl) && websiteUrl) {\n imageUrl = websiteUrl + imageUrl;\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__item-image\"\n }, /*#__PURE__*/React__default.createElement(\"div\", {\n style: imageLoaded ? {} : {\n overflow: 'hidden',\n width: '0px',\n height: '0px'\n }\n }, /*#__PURE__*/React__default.createElement(\"img\", {\n onLoad: function onLoad() {\n return setImageLoaded(true);\n },\n src: imageUrl,\n alt: \"Image for \".concat(itemName)\n })), !imageLoaded ?\n /*#__PURE__*/\n // if the main image hasn't loaded yet, show a placeholder\n React__default.createElement(PlaceholderImage, {\n showSpinner: true\n }) : null);\n}\n\nfunction ResultItem(_ref) {\n var item = _ref.item;\n var itemName = item.getDocumentValue('itemname');\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__item\"\n }, /*#__PURE__*/React__default.createElement(ResultImage, {\n item: item\n }), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__item-name\"\n }, /*#__PURE__*/React__default.createElement(\"span\", null, itemName)));\n}\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction ResultHeader() {\n var _useHawkConfig = useHawkConfig(),\n config = _useHawkConfig.config;\n\n var client = new HawkClient(config);\n\n var _useState = useState({}),\n _useState2 = _slicedToArray$1(_useState, 2),\n entityData = _useState2[0],\n setEntityData = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray$1(_useState3, 2),\n entityDataLoaded = _useState4[0],\n setEntityDataLoaded = _useState4[1];\n\n var _useState5 = useState(''),\n _useState6 = _slicedToArray$1(_useState5, 2),\n storedIssuerId = _useState6[0],\n setStoredIssuerId = _useState6[1];\n\n var url = window.location.href;\n var urlSearchString = window.location.search;\n var urlParams = new URLSearchParams(urlSearchString);\n\n if (url.includes('issuerid=') && storedIssuerId.length < 1) {\n var urlIssuerId = urlParams.get('issuerid') || '';\n setStoredIssuerId(urlIssuerId);\n }\n\n function getEntityHeaderData(_x, _x2) {\n return _getEntityHeaderData.apply(this, arguments);\n }\n\n function _getEntityHeaderData() {\n _getEntityHeaderData = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(facetData, cancellationToken) {\n var response, entityParams;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n response = null;\n entityParams = _objectSpread$6({\n ClientGuid: config.clientGuid\n }, facetData);\n _context.prev = 2;\n _context.next = 5;\n return client.search(entityParams, cancellationToken);\n\n case 5:\n response = _context.sent;\n _context.next = 13;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](2);\n\n if (!axios$1.isCancel(_context.t0)) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 12:\n console.error('Search request error:', _context.t0);\n\n case 13:\n if (response) {\n setEntityDataLoaded(true);\n setEntityData(response);\n }\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[2, 8]]);\n }));\n return _getEntityHeaderData.apply(this, arguments);\n }\n\n function padZerosToString(str) {\n var withAdditionalZeros = str;\n\n while (withAdditionalZeros.length < 10) {\n withAdditionalZeros = '0' + withAdditionalZeros;\n }\n\n return withAdditionalZeros;\n }\n\n var headeritem;\n var entityResult;\n\n switch (true) {\n case url.includes('firmid='):\n if (!entityDataLoaded) {\n var firmInfo = {\n FacetSelections: {\n firmid: [urlParams.get('firmid')]\n },\n CustomUrl: '/resources/auditorsearch/firm/card'\n };\n getEntityHeaderData(firmInfo);\n } else if (entityData.Results && entityData.Results.length > 0) {\n var filteredResults = entityData.Results.filter(function (data) {\n return data.DocId.startsWith('Registeredfirm') || data.DocId.startsWith('Firm');\n });\n entityResult = filteredResults.length > 0 && filteredResults[0];\n }\n\n headeritem = /*#__PURE__*/React__default.createElement(\"div\", null, /*#__PURE__*/React__default.createElement(\"h3\", {\n className: \"hawk-results-hero__title break-word\"\n }, entityDataLoaded && entityResult && entityResult.Document && entityResult.Document.firmname ? entityResult.Document.firmname[0] : ''), /*#__PURE__*/React__default.createElement(\"p\", null, /*#__PURE__*/React__default.createElement(\"a\", {\n className: \"hawk-results-hero__link\",\n href: entityDataLoaded && entityResult && entityResult.Document && entityResult.Document.encodedfirmid ? \"https://rasr.pcaobus.org/Firms/FirmSummaryPublic.aspx?FirmID=\".concat(entityResult.Document.encodedfirmid[0]) : '/',\n target: \"_blank\"\n }, \"View Firm Summary Page\")), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results-hero__footer\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", null, /*#__PURE__*/React__default.createElement(\"li\", null, \"Firm\"), /*#__PURE__*/React__default.createElement(\"li\", null, \"ID\", ' ', entityDataLoaded && entityResult && entityResult.Document && entityResult.Document.firmid ? entityResult.Document.firmid[0] : ''), entityDataLoaded && entityResult && entityResult.Document && entityResult.Document.firmcountry ? /*#__PURE__*/React__default.createElement(\"li\", null, entityResult.Document.firmcountry[0]) : null)));\n break;\n\n case url.includes('engagementpartnermasterid='):\n var engagementPartnerAllIds;\n\n if (!entityDataLoaded) {\n var partnerInfo = {\n FacetSelections: {\n engagementpartnermasterid: [urlParams.get('engagementpartnermasterid')]\n },\n CustomUrl: '/resources/auditorsearch/engagement-partners/card'\n };\n getEntityHeaderData(partnerInfo);\n } else if (entityData.Results && entityData.Results.length > 0) {\n var _filteredResults = entityData.Results.filter(function (data) {\n return data.DocId.startsWith('EngagementPartner');\n });\n\n entityResult = _filteredResults.length > 0 && _filteredResults[0];\n\n if (entityResult && entityResult.Document && entityResult.Document.engagementpartnerid && entityResult.Document.engagementpartnerotherids) {\n engagementPartnerAllIds = entityResult.Document.engagementpartnerid.concat(entityResult.Document.engagementpartnerotherids);\n } else if (entityResult && entityResult.Document && entityResult.Document.engagementpartnerid) {\n engagementPartnerAllIds = entityResult.Document.engagementpartnerid;\n }\n }\n\n headeritem = /*#__PURE__*/React__default.createElement(\"div\", null, /*#__PURE__*/React__default.createElement(\"h3\", {\n className: \"hawk-results-hero__title\"\n }, entityDataLoaded && entityResult && entityResult.Document && entityResult.Document.engagementpartnername ? entityResult.Document.engagementpartnername[0] : ''), entityDataLoaded && entityResult && entityResult.Document && entityResult.Document.engagementpartnerothernames ? /*#__PURE__*/React__default.createElement(\"p\", {\n className: \"hawk-results-hero__subtitle\"\n }, \"Other Reported Names: \".concat(entityResult.Document.engagementpartnerothernames.join(', '))) : null, /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results-hero__footer\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", null, /*#__PURE__*/React__default.createElement(\"li\", null, \"Engagement Partner\"), /*#__PURE__*/React__default.createElement(\"li\", null, \"ID \".concat(entityDataLoaded && engagementPartnerAllIds ? engagementPartnerAllIds.join(', ') : '')))));\n break;\n\n case url.includes('issuerid=') || url.includes('issuercik='):\n var urlParamIssuerCik = urlParams.get('issuercik') || '';\n\n if (!entityDataLoaded) {\n var issuerInfo = {\n FacetSelections: {\n issuerid: [storedIssuerId],\n issuercik: [urlParamIssuerCik]\n },\n CustomUrl: '/resources/auditorsearch/issuers/card'\n };\n getEntityHeaderData(issuerInfo);\n } else if (entityData.Results && entityData.Results.length > 0) {\n var _filteredResults2 = entityData.Results.filter(function (data) {\n return data.DocId.startsWith('Issuer');\n });\n\n entityResult = _filteredResults2.length > 0 && _filteredResults2[0];\n }\n\n headeritem = /*#__PURE__*/React__default.createElement(\"div\", null, /*#__PURE__*/React__default.createElement(\"h3\", {\n className: \"hawk-results-hero__title\"\n }, entityDataLoaded && entityResult && entityResult.Document && entityResult.Document.issuername ? entityResult.Document.issuername[0] : ''), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results-hero__footer\"\n }, /*#__PURE__*/React__default.createElement(\"ul\", null, /*#__PURE__*/React__default.createElement(\"li\", null, \"Issuer\"), entityDataLoaded && entityResult && entityResult.Document.issuercik && entityResult.Document.issuercik.length > 0 ? /*#__PURE__*/React__default.createElement(\"li\", null, \"CIK \".concat(padZerosToString(entityResult.Document.issuercik[0]))) : null, entityDataLoaded && entityResult && entityResult.Document.issuerticker && entityResult.Document.issuerticker.length > 0 && /*#__PURE__*/React__default.createElement(\"li\", null, \"Ticker \".concat(entityResult.Document.issuerticker[0])))));\n break;\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results-hero\"\n }, headeritem);\n}\n\nfunction ResultListing(_ref) {\n var _ref$ResultItem = _ref.ResultItem,\n ResultItem$1 = _ref$ResultItem === void 0 ? ResultItem : _ref$ResultItem,\n toggle = _ref.toggle;\n\n var _useHawkSearch = useHawkSearch(),\n _useHawkSearch$store = _useHawkSearch.store,\n isLoading = _useHawkSearch$store.isLoading,\n searchResults = _useHawkSearch$store.searchResults;\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t;\n\n var results = searchResults ? searchResults.Results : [];\n var params = new URLSearchParams(window.location.search);\n var currentSearch;\n\n if (params.get('searchWithin')) {\n currentSearch = params.get('searchWithin').toString();\n }\n\n var listingClass = 'hawk-results__listing';\n var url = window.location.href;\n url.includes('/auditorsearch/') ? listingClass = 'hawk-results__listing hawk-results__listing--grid' : listingClass = 'hawk-results__listing';\n\n function checkNetworks() {\n var name = '';\n var globalNetworks = ['PricewaterhouseCoopers International Limited', 'KPMG International Cooperative', 'Grant Thornton International Limited', 'Ernst & Young Global Limited', 'Deloitte Touche Tohmatsu Limited', 'BDO International Limited'];\n\n for (var _i = 0, _globalNetworks = globalNetworks; _i < _globalNetworks.length; _i++) {\n var network = _globalNetworks[_i];\n\n if (network.includes(currentSearch) || network.toLowerCase().includes(currentSearch)) {\n name = \"Did you mean \".concat(network, \"? It looks like you are trying to search for a global network firm. Note that all the global network affiliate firms may not have \").concat(currentSearch, \" in their names.\");\n }\n }\n\n return name;\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", null, url.includes('engagementpartnermasterid=') || url.includes('firmid=') || url.includes('issuerid=') || url.includes('issuercik=') ? /*#__PURE__*/React__default.createElement(ResultHeader, null) : null, url.includes('oversight/inspections') && url.includes('searchWithin=') ? results.length > 0 && currentSearch.length >= 3 && checkNetworks().length > 0 && /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-card\"\n }, checkNetworks(), ' ', /*#__PURE__*/React__default.createElement(\"a\", {\n href: \"/oversight/international/global-network-firms\"\n }, \"You can see a full list of the currently registered firms that report being a member of this network.\")) : '', /*#__PURE__*/React__default.createElement(\"div\", {\n className: listingClass\n }, /*#__PURE__*/React__default.createElement(Spinner, {\n isVisible: isLoading\n }), results.length > 0 ? // if we have results, display placeholder until loaded\n !isLoading ? results.map(function (result) {\n return /*#__PURE__*/React__default.createElement(ResultItem$1, {\n key: result.DocId,\n item: result,\n toggle: toggle\n });\n }) : _toConsumableArray(Array(12)).map(function (_, i) {\n return /*#__PURE__*/React__default.createElement(PlaceholderItem, {\n key: i\n });\n }) :\n /*#__PURE__*/\n // otherwise display no results\n React__default.createElement(\"div\", {\n className: \"hawk-result-listing__no-results\"\n }, /*#__PURE__*/React__default.createElement(\"h5\", null, t('No Results')), /*#__PURE__*/React__default.createElement(\"p\", null, \"Your search did not return any results.\"))));\n}\n\nfunction Results(_ref) {\n var _ref$ResultItem = _ref.ResultItem,\n ResultItem$1 = _ref$ResultItem === void 0 ? ResultItem : _ref$ResultItem;\n\n var _useHawkSearch = useHawkSearch(),\n _useHawkSearch$store = _useHawkSearch.store,\n isLoading = _useHawkSearch$store.isLoading,\n searchResults = _useHawkSearch$store.searchResults,\n requestError = _useHawkSearch$store.requestError;\n\n var anyResultsHaveParticipatingFirmInfo = searchResults && searchResults.Results && searchResults.Results.map(function (result) {\n return new Result(result);\n }).some(function (result) {\n return result.getDocumentValue('hasotherparticipant') && result.getDocumentValue('hasotherparticipant') === 'True';\n });\n\n var _useState = useState(false),\n _useState2 = _slicedToArray$1(_useState, 2),\n toggleParticipatingFirms = _useState2[0],\n setToggleParticipatingFirms = _useState2[1];\n\n var pageUrl = window.location.href;\n var paramExists = pageUrl.includes('?');\n\n var _useTranslation = useTranslation(),\n t = _useTranslation.t,\n i18n = _useTranslation.i18n;\n\n if (requestError) {\n return /*#__PURE__*/React__default.createElement(\"span\", null, t('response_error_generic'));\n } // end of overrides\n\n\n if ((!searchResults || searchResults.Results.length === 0) && !isLoading) {\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results\"\n }, paramExists ? /*#__PURE__*/React__default.createElement(SearchResultsLabel, null) : null, /*#__PURE__*/React__default.createElement(Selections$1, null), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__top-tool-row\"\n }, /*#__PURE__*/React__default.createElement(ToolRow, null), searchResults && searchResults.Pagination && searchResults.Pagination.NofResults > 0 && /*#__PURE__*/React__default.createElement(\"p\", null, /*#__PURE__*/React__default.createElement(\"strong\", null, \"Total Results:\"), \" \".concat(searchResults.Pagination.NofResults))), /*#__PURE__*/React__default.createElement(ResultListing, {\n ResultItem: ResultItem$1\n }), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__bottom-tool-row\"\n }, /*#__PURE__*/React__default.createElement(ToolRow, null)));\n }\n\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results\"\n }, paramExists ? /*#__PURE__*/React__default.createElement(SearchResultsLabel, null) : null, /*#__PURE__*/React__default.createElement(Selections$1, null), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__top-tool-row\"\n }, /*#__PURE__*/React__default.createElement(ToolRow, null), anyResultsHaveParticipatingFirmInfo && /*#__PURE__*/React__default.createElement(\"p\", {\n className: \"participating-firm-toggle\"\n }, /*#__PURE__*/React__default.createElement(\"button\", {\n className: \"hawk-results__toggle-firms-btn\",\n onClick: function onClick() {\n return setToggleParticipatingFirms(!toggleParticipatingFirms);\n },\n \"aria-expanded\": toggleParticipatingFirms\n }, /*#__PURE__*/React__default.createElement(\"strong\", null, \"\".concat(toggleParticipatingFirms ? 'Collapse' : 'Expand', \" All\"), /*#__PURE__*/React__default.createElement(\"span\", {\n className: \"visually-hidden\"\n }, \"participating firms\")), toggleParticipatingFirms ? /*#__PURE__*/React__default.createElement(MinusSVG, null) : /*#__PURE__*/React__default.createElement(PlusSVG, null))), searchResults && searchResults.Pagination && searchResults.Pagination.NofResults > 0 && /*#__PURE__*/React__default.createElement(\"p\", null, /*#__PURE__*/React__default.createElement(\"strong\", null, \"Total Results:\"), \" \".concat(searchResults.Pagination.NofResults))), /*#__PURE__*/React__default.createElement(ResultListing, {\n ResultItem: ResultItem$1,\n toggle: toggleParticipatingFirms\n }), /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"hawk-results__bottom-tool-row\"\n }, /*#__PURE__*/React__default.createElement(ToolRow, null)));\n}\n\nfunction isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nvar isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nvar isProduction$1 = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction$1) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar history = createBrowserHistory();\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createForOfIteratorHelper$2(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$4(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$4(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen); }\n\nfunction _arrayLikeToArray$4(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/** Represents parts of the browser query string that are fixed and are always single strings. */\n\n/**\r\n * Represents the parts of the browser query string that are dynamic (the selected facets). Facets\r\n * can have multiple values, so the value of these is always an array of strings.\r\n */\n\n/**\r\n * Parses the input query string and returns an object that can be used to build a search request.\r\n * The object returned will usually have the keys: `keyword`, `sort`, `pg`,`lp`,`lpurl`, `mpp`, and then more keys\r\n * for every selected facet.\r\n * @param search The input query string.\r\n */\nfunction parseQueryStringToObject(search) {\n var params = new URLSearchParams(search);\n var parsed = {};\n params.forEach(function (value, key) {\n if (key === 'keyword' || key === 'sort' || key === 'pg' || key === 'lp' || key === 'PageId' || key === 'lpurl' || key === 'mpp' || key === 'searchWithin' || key === 'is100Coverage' || key === 'indexName') {\n // `keyword` is special and should never be turned into an array\n parsed[key] = encodeURIComponent(value);\n } else {\n // everything else should be turned into an array\n if (!value) {\n // no useful value for this query param, so skip it\n return;\n } // multiple selections are split by commas, so split into an array\n\n\n var multipleValues = value.split(','); // and now handle any comma escaping - any single value that contained a comma is escaped to '::'\n\n for (var x = 0; x < multipleValues.length; ++x) {\n multipleValues[x] = multipleValues[x].replace('::', ',');\n }\n\n parsed[key] = multipleValues;\n }\n });\n return parsed;\n}\n/**\r\n * Parses the abosulte url into a `HawkClient` client search request object.\r\n * @param location The input location\r\n */\n\n\nfunction parseLocation(location) {\n var searchUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '/search';\n var searchRequest = parseSearchQueryString(location.search); // customUrl have priority over keywords\n\n if (checkIfUrlRefsLandingPage(location.pathname, searchUrl)) {\n searchRequest.Keyword = undefined;\n searchRequest.CustomUrl = location.pathname.replace(searchUrl, '');\n }\n\n return searchRequest;\n}\n/**\r\n * Parses the input query string into a `HawkClient` client search request object.\r\n * @param search The input query string.\r\n */\n\nfunction parseSearchQueryString(search) {\n var queryObj = parseQueryStringToObject(search); // extract out components, including facet selections\n\n var keyword = queryObj.keyword,\n sort = queryObj.sort,\n pg = queryObj.pg,\n mpp = queryObj.mpp,\n lp = queryObj.lp,\n PageId = queryObj.PageId,\n lpurl = queryObj.lpurl,\n searchWithin = queryObj.searchWithin,\n is100Coverage = queryObj.is100Coverage,\n indexName = queryObj.indexName,\n facetSelections = _objectWithoutProperties(queryObj, [\"keyword\", \"sort\", \"pg\", \"mpp\", \"lp\", \"PageId\", \"lpurl\", \"searchWithin\", \"is100Coverage\", \"indexName\"]); // ignore landing pages if keyword is passed\n\n\n var pageId = lp || PageId;\n return {\n Keyword: lpurl || pageId ? '' : keyword,\n SortBy: sort,\n PageNo: pg ? Number(pg) : undefined,\n MaxPerPage: mpp ? Number(mpp) : undefined,\n PageId: pageId ? Number(pageId) : undefined,\n CustomUrl: lpurl,\n SearchWithin: searchWithin,\n Is100CoverageTurnedOn: is100Coverage ? Boolean(is100Coverage) : undefined,\n FacetSelections: facetSelections,\n IndexName: indexName\n };\n}\nfunction checkIfUrlRefsLandingPage(path, searchUrl) {\n if (!path) {\n // if there's no path, this request can't be for a landing page\n return false;\n }\n\n if (!path.endsWith('/')) {\n path = path + '/';\n }\n\n if (!searchUrl.endsWith('/')) {\n searchUrl = searchUrl + '/';\n }\n\n return path !== searchUrl;\n}\n/**\r\n * Converts a search query object (such as one returned from `parseSearchQueryString`) and converts\r\n * it into a browser query string\r\n * @param queryObj The query object to convert to a query string.\r\n */\n\nfunction convertObjectToQueryString(queryObj) {\n var queryStringValues = [];\n\n for (var _key in queryObj) {\n if (queryObj.hasOwnProperty(_key)) {\n if (_key === 'keyword' || _key === 'sort' || _key === 'pg' || _key === 'mpp' || _key === 'searchWithin' || _key === 'is100Coverage' || _key === 'indexName') {\n var value = queryObj[_key];\n\n if (value === undefined || value === null) {\n // if any of the special keys just aren't defined or are null, don't include them in\n // the query string\n continue;\n }\n\n if (typeof value !== 'string') {\n throw new Error(\"\".concat(_key, \" must be a string\"));\n } // certain strings are special and are never arrays\n\n\n queryStringValues.push(_key + '=' + value);\n } else {\n var values = queryObj[_key]; // handle comma escaping - if any of the values contains a comma, they need to be escaped first\n\n var escapedValues = [];\n\n var _iterator = _createForOfIteratorHelper$2(values),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var unescapedValue = _step.value;\n escapedValues.push(unescapedValue.replace(',', '::'));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n queryStringValues.push(_key + '=' + encodeURIComponent(escapedValues.join(',')));\n }\n }\n }\n\n return '?' + queryStringValues.join('&');\n}\n/**\r\n * Converts a partial search request object into a browser query string.\r\n * @param searchRequest The search request object to convert.\r\n */\n\n\nfunction getSearchQueryString(searchRequest) {\n var searchQuery = _objectSpread$7({\n keyword: searchRequest.Keyword,\n sort: searchRequest.SortBy,\n pg: searchRequest.PageNo ? String(searchRequest.PageNo) : undefined,\n mpp: searchRequest.MaxPerPage ? String(searchRequest.MaxPerPage) : undefined,\n is100Coverage: searchRequest.Is100CoverageTurnedOn ? String(searchRequest.Is100CoverageTurnedOn) : undefined,\n searchWithin: searchRequest.SearchWithin,\n indexName: searchRequest.IndexName\n }, searchRequest.FacetSelections);\n\n return convertObjectToQueryString(searchQuery);\n}\n\nvar doSearch = true;\n\nfunction QueryStringListener() {\n var _useHawkSearch = useHawkSearch(),\n store = _useHawkSearch.store,\n actor = _useHawkSearch.actor;\n\n useEffect(function () {\n // listen to history so that when we navigate backward/forward, trigger a new search based off\n // the new query string\n var unlisten = history.listen(function (location) {\n if (!doSearch) {\n // if the previous history change specified that we shouldn't do a search, clear the flag and bail\n doSearch = true;\n return;\n }\n\n var searchRequest = parseSearchQueryString(location.search);\n actor.setSearch(searchRequest, // explicitly flag this next search as not needing to push additional history, since this search\n // _is_ the result of history.\n\n /*doHistory*/\n false);\n });\n return function () {\n unlisten();\n };\n });\n useEffect(function () {\n // listen to changes in the pending search so that history records can be pushed to the browser's\n // query string\n if (store.doHistory) {\n // if we're pushing history, we don't want to to trigger a search as a result of this history\n // change\n doSearch = false;\n history.push({\n search: getSearchQueryString(store.pendingSearch)\n });\n }\n }, [store.pendingSearch]);\n return null;\n}\n\nexport { Checkbox, ConfigProvider, ContentType, Facet$1 as Facet, FacetList, FacetRail, FacetSelectionState, FacetType, GlobalSearchBox, HawkClient, HawkSearch, Link, Nested as NestedCheckbox, OpenRange, Pagination$1 as Pagination, PlaceholderItem, QueryStringListener, Result, ResultImage, ResultListing, Results, RuleOperatorType, RuleType, Search, SearchBox, Response as SearchResponse, SearchResultsLabel, Selections$1 as Selections, Slider, Sorting$1 as Sorting, Spinner, StoreProvider, Swatch$1 as Swatch, SwatchItem, ToolRow, TrackingEvent$1 as TrackingEvent, checkIfUrlRefsLandingPage, getSearchQueryString, parseLocation, parseSearchQueryString, i18next as tConfig, useFacet, useHawkConfig, useHawkSearch };\n//# sourceMappingURL=react-hawksearch.js.map\n","var map = {\n\t\"./af\": 191,\n\t\"./af.js\": 191,\n\t\"./ar\": 192,\n\t\"./ar-dz\": 193,\n\t\"./ar-dz.js\": 193,\n\t\"./ar-kw\": 194,\n\t\"./ar-kw.js\": 194,\n\t\"./ar-ly\": 195,\n\t\"./ar-ly.js\": 195,\n\t\"./ar-ma\": 196,\n\t\"./ar-ma.js\": 196,\n\t\"./ar-sa\": 197,\n\t\"./ar-sa.js\": 197,\n\t\"./ar-tn\": 198,\n\t\"./ar-tn.js\": 198,\n\t\"./ar.js\": 192,\n\t\"./az\": 199,\n\t\"./az.js\": 199,\n\t\"./be\": 200,\n\t\"./be.js\": 200,\n\t\"./bg\": 201,\n\t\"./bg.js\": 201,\n\t\"./bm\": 202,\n\t\"./bm.js\": 202,\n\t\"./bn\": 203,\n\t\"./bn.js\": 203,\n\t\"./bo\": 204,\n\t\"./bo.js\": 204,\n\t\"./br\": 205,\n\t\"./br.js\": 205,\n\t\"./bs\": 206,\n\t\"./bs.js\": 206,\n\t\"./ca\": 207,\n\t\"./ca.js\": 207,\n\t\"./cs\": 208,\n\t\"./cs.js\": 208,\n\t\"./cv\": 209,\n\t\"./cv.js\": 209,\n\t\"./cy\": 210,\n\t\"./cy.js\": 210,\n\t\"./da\": 211,\n\t\"./da.js\": 211,\n\t\"./de\": 212,\n\t\"./de-at\": 213,\n\t\"./de-at.js\": 213,\n\t\"./de-ch\": 214,\n\t\"./de-ch.js\": 214,\n\t\"./de.js\": 212,\n\t\"./dv\": 215,\n\t\"./dv.js\": 215,\n\t\"./el\": 216,\n\t\"./el.js\": 216,\n\t\"./en-au\": 217,\n\t\"./en-au.js\": 217,\n\t\"./en-ca\": 218,\n\t\"./en-ca.js\": 218,\n\t\"./en-gb\": 219,\n\t\"./en-gb.js\": 219,\n\t\"./en-ie\": 220,\n\t\"./en-ie.js\": 220,\n\t\"./en-il\": 221,\n\t\"./en-il.js\": 221,\n\t\"./en-in\": 222,\n\t\"./en-in.js\": 222,\n\t\"./en-nz\": 223,\n\t\"./en-nz.js\": 223,\n\t\"./en-sg\": 224,\n\t\"./en-sg.js\": 224,\n\t\"./eo\": 225,\n\t\"./eo.js\": 225,\n\t\"./es\": 226,\n\t\"./es-do\": 227,\n\t\"./es-do.js\": 227,\n\t\"./es-us\": 228,\n\t\"./es-us.js\": 228,\n\t\"./es.js\": 226,\n\t\"./et\": 229,\n\t\"./et.js\": 229,\n\t\"./eu\": 230,\n\t\"./eu.js\": 230,\n\t\"./fa\": 231,\n\t\"./fa.js\": 231,\n\t\"./fi\": 232,\n\t\"./fi.js\": 232,\n\t\"./fil\": 233,\n\t\"./fil.js\": 233,\n\t\"./fo\": 234,\n\t\"./fo.js\": 234,\n\t\"./fr\": 235,\n\t\"./fr-ca\": 236,\n\t\"./fr-ca.js\": 236,\n\t\"./fr-ch\": 237,\n\t\"./fr-ch.js\": 237,\n\t\"./fr.js\": 235,\n\t\"./fy\": 238,\n\t\"./fy.js\": 238,\n\t\"./ga\": 239,\n\t\"./ga.js\": 239,\n\t\"./gd\": 240,\n\t\"./gd.js\": 240,\n\t\"./gl\": 241,\n\t\"./gl.js\": 241,\n\t\"./gom-deva\": 242,\n\t\"./gom-deva.js\": 242,\n\t\"./gom-latn\": 243,\n\t\"./gom-latn.js\": 243,\n\t\"./gu\": 244,\n\t\"./gu.js\": 244,\n\t\"./he\": 245,\n\t\"./he.js\": 245,\n\t\"./hi\": 246,\n\t\"./hi.js\": 246,\n\t\"./hr\": 247,\n\t\"./hr.js\": 247,\n\t\"./hu\": 248,\n\t\"./hu.js\": 248,\n\t\"./hy-am\": 249,\n\t\"./hy-am.js\": 249,\n\t\"./id\": 250,\n\t\"./id.js\": 250,\n\t\"./is\": 251,\n\t\"./is.js\": 251,\n\t\"./it\": 252,\n\t\"./it-ch\": 253,\n\t\"./it-ch.js\": 253,\n\t\"./it.js\": 252,\n\t\"./ja\": 254,\n\t\"./ja.js\": 254,\n\t\"./jv\": 255,\n\t\"./jv.js\": 255,\n\t\"./ka\": 256,\n\t\"./ka.js\": 256,\n\t\"./kk\": 257,\n\t\"./kk.js\": 257,\n\t\"./km\": 258,\n\t\"./km.js\": 258,\n\t\"./kn\": 259,\n\t\"./kn.js\": 259,\n\t\"./ko\": 260,\n\t\"./ko.js\": 260,\n\t\"./ku\": 261,\n\t\"./ku.js\": 261,\n\t\"./ky\": 262,\n\t\"./ky.js\": 262,\n\t\"./lb\": 263,\n\t\"./lb.js\": 263,\n\t\"./lo\": 264,\n\t\"./lo.js\": 264,\n\t\"./lt\": 265,\n\t\"./lt.js\": 265,\n\t\"./lv\": 266,\n\t\"./lv.js\": 266,\n\t\"./me\": 267,\n\t\"./me.js\": 267,\n\t\"./mi\": 268,\n\t\"./mi.js\": 268,\n\t\"./mk\": 269,\n\t\"./mk.js\": 269,\n\t\"./ml\": 270,\n\t\"./ml.js\": 270,\n\t\"./mn\": 271,\n\t\"./mn.js\": 271,\n\t\"./mr\": 272,\n\t\"./mr.js\": 272,\n\t\"./ms\": 273,\n\t\"./ms-my\": 274,\n\t\"./ms-my.js\": 274,\n\t\"./ms.js\": 273,\n\t\"./mt\": 275,\n\t\"./mt.js\": 275,\n\t\"./my\": 276,\n\t\"./my.js\": 276,\n\t\"./nb\": 277,\n\t\"./nb.js\": 277,\n\t\"./ne\": 278,\n\t\"./ne.js\": 278,\n\t\"./nl\": 279,\n\t\"./nl-be\": 280,\n\t\"./nl-be.js\": 280,\n\t\"./nl.js\": 279,\n\t\"./nn\": 281,\n\t\"./nn.js\": 281,\n\t\"./oc-lnc\": 282,\n\t\"./oc-lnc.js\": 282,\n\t\"./pa-in\": 283,\n\t\"./pa-in.js\": 283,\n\t\"./pl\": 284,\n\t\"./pl.js\": 284,\n\t\"./pt\": 285,\n\t\"./pt-br\": 286,\n\t\"./pt-br.js\": 286,\n\t\"./pt.js\": 285,\n\t\"./ro\": 287,\n\t\"./ro.js\": 287,\n\t\"./ru\": 288,\n\t\"./ru.js\": 288,\n\t\"./sd\": 289,\n\t\"./sd.js\": 289,\n\t\"./se\": 290,\n\t\"./se.js\": 290,\n\t\"./si\": 291,\n\t\"./si.js\": 291,\n\t\"./sk\": 292,\n\t\"./sk.js\": 292,\n\t\"./sl\": 293,\n\t\"./sl.js\": 293,\n\t\"./sq\": 294,\n\t\"./sq.js\": 294,\n\t\"./sr\": 295,\n\t\"./sr-cyrl\": 296,\n\t\"./sr-cyrl.js\": 296,\n\t\"./sr.js\": 295,\n\t\"./ss\": 297,\n\t\"./ss.js\": 297,\n\t\"./sv\": 298,\n\t\"./sv.js\": 298,\n\t\"./sw\": 299,\n\t\"./sw.js\": 299,\n\t\"./ta\": 300,\n\t\"./ta.js\": 300,\n\t\"./te\": 301,\n\t\"./te.js\": 301,\n\t\"./tet\": 302,\n\t\"./tet.js\": 302,\n\t\"./tg\": 303,\n\t\"./tg.js\": 303,\n\t\"./th\": 304,\n\t\"./th.js\": 304,\n\t\"./tk\": 305,\n\t\"./tk.js\": 305,\n\t\"./tl-ph\": 306,\n\t\"./tl-ph.js\": 306,\n\t\"./tlh\": 307,\n\t\"./tlh.js\": 307,\n\t\"./tr\": 308,\n\t\"./tr.js\": 308,\n\t\"./tzl\": 309,\n\t\"./tzl.js\": 309,\n\t\"./tzm\": 310,\n\t\"./tzm-latn\": 311,\n\t\"./tzm-latn.js\": 311,\n\t\"./tzm.js\": 310,\n\t\"./ug-cn\": 312,\n\t\"./ug-cn.js\": 312,\n\t\"./uk\": 313,\n\t\"./uk.js\": 313,\n\t\"./ur\": 314,\n\t\"./ur.js\": 314,\n\t\"./uz\": 315,\n\t\"./uz-latn\": 316,\n\t\"./uz-latn.js\": 316,\n\t\"./uz.js\": 315,\n\t\"./vi\": 317,\n\t\"./vi.js\": 317,\n\t\"./x-pseudo\": 318,\n\t\"./x-pseudo.js\": 318,\n\t\"./yo\": 319,\n\t\"./yo.js\": 319,\n\t\"./zh-cn\": 320,\n\t\"./zh-cn.js\": 320,\n\t\"./zh-hk\": 321,\n\t\"./zh-hk.js\": 321,\n\t\"./zh-mo\": 322,\n\t\"./zh-mo.js\": 322,\n\t\"./zh-tw\": 323,\n\t\"./zh-tw.js\": 323\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 525;","export function parseApiUrl({ searchApi, autocompleteApi }) {\r\n var search = new URL(searchApi);\r\n var autocomplete = new URL(autocompleteApi);\r\n\r\n return {\r\n apiUrl: search.origin,\r\n searchUrl: search.pathname,\r\n autocompleteUrl: autocomplete.href\r\n }\r\n}\r\n\r\nexport function getDashboardUrl(baseApi) {\r\n var obj = new URL(baseApi);\r\n\r\n return obj.origin;\r\n}\r\n\r\nexport function customPolyfills() {\r\n if (!Promise.hasOwnProperty('allSettled')) {\r\n const formatSettledResult = (success, value) => success ? { status: 'fulfilled', value } : {\r\n status: 'rejected',\r\n reason: value\r\n };\r\n Promise.allSettled = function (iterators) {\r\n const promises = Array.from(iterators);\r\n const num = promises.length;\r\n const settledList = new Array(num);\r\n let settledNum = 0;\r\n return new Promise(resolve => {\r\n promises.forEach((promise, index) => {\r\n Promise.resolve(promise).then(value => {\r\n settledList[index] = formatSettledResult(true, value);\r\n if (++settledNum === num) {\r\n resolve(settledList);\r\n }\r\n }).catch(error => {\r\n settledList[index] = formatSettledResult(false, error);\r\n if (++settledNum === num) {\r\n resolve(settledList);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n }\r\n\r\n if (!String.prototype.replaceAll) {\r\n String.prototype.replaceAll = function (str, newStr) {\r\n\r\n if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') {\r\n return this.replace(str, newStr);\r\n }\r\n\r\n return this.replace(new RegExp(str, 'g'), newStr);\r\n };\r\n }\r\n\r\n if (typeof fetch == 'undefined') {\r\n var polyfillElement = document.createElement('script');\r\n polyfillElement.setAttribute('src', 'https://cdn.polyfill.io/v3/polyfill.min.js?features=fetch');\r\n document.head.appendChild(polyfillElement);\r\n }\r\n}","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\n\r\nimport { ConfigProvider, GlobalSearchBox, tConfig } from \"react-hawksearch\";\r\nimport \"react-hawksearch/dist/esm/react-hawksearch.css\";\r\nimport { parseApiUrl, getDashboardUrl } from \"../util/helper\";\r\n\r\nwindow.addEventListener(\"load\", () => {\r\n var components = document.querySelectorAll(\r\n '[data-component=\"react-search-box-bootstrap\"]'\r\n );\r\n\r\n if (components) {\r\n components.forEach((component) => {\r\n var dashboardUrl = getDashboardUrl(\r\n component.getAttribute(\"data-hawksearch-base-api\")\r\n );\r\n var apiUrlObj = parseApiUrl({\r\n searchApi: component.getAttribute(\"data-hawksearch-search-api\"),\r\n autocompleteApi: component.getAttribute(\r\n \"data-hawksearch-autocomplete-api\"\r\n ),\r\n });\r\n\r\n const hawkConfig = {\r\n clientGuid: component.getAttribute(\"data-client-guid\"),\r\n dashboardUrl: dashboardUrl,\r\n searchPageUrl: component.getAttribute(\"data-search-page\"),\r\n indexName: component.getAttribute(\"data-index-name\"),\r\n trackEventUrl: component.getAttribute('data-hawksearch-tracking-api'),\r\n ...apiUrlObj,\r\n };\r\n\r\n var trackingEvents = component.getAttribute('data-tracking-events');\r\n\r\n if (trackingEvents) {\r\n try {\r\n hawkConfig.trackConfig = JSON.parse(trackingEvents.replaceAll(\""\", '\"'));\r\n }\r\n catch (e) {\r\n console.error(e);\r\n console.error(\"Wrong Track event configuration\");\r\n }\r\n }\r\n\r\n // for auditorsearch setup autosuggest\r\n const isAuditorSearch = component.getAttribute(\"data-autosuggest\");\r\n\r\n // apply translations if available\r\n var translationsEl = document.querySelectorAll(\r\n '[data-translations=\"react-translations\"]'\r\n );\r\n\r\n if (translationsEl && translationsEl.length) {\r\n var translations = JSON.parse(translationsEl[0].innerHTML);\r\n\r\n tConfig.addResourceBundle(\r\n \"custom\",\r\n \"translation\",\r\n translations,\r\n true,\r\n true\r\n );\r\n tConfig.changeLanguage(\"custom\");\r\n }\r\n\r\n function SearcBox() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n ReactDOM.render(, component);\r\n });\r\n }\r\n});\r\n","import moment from \"moment\";\r\n\r\nexport const getField = function (item, field) {\r\n return item.getDocumentValue(field);\r\n};\r\n\r\nexport const deserializeField = function (item, field) {\r\n if (item && item.Document && item.Document.hasOwnProperty(field)) {\r\n var data = item.Document[field];\r\n\r\n if (data.length) {\r\n try {\r\n data = data.map(function (i) { return JSON.parse(i); });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n};\r\n\r\nexport const tooltip = function (event) {\r\n var toggletip = event.target;\r\n var message = toggletip.getAttribute(\"data-toggletip-content\");\r\n\r\n // Get the live region element\r\n var liveRegion = toggletip.nextElementSibling;\r\n\r\n // Toggle the message\r\n liveRegion.innerHTML = \"\";\r\n window.setTimeout(function () {\r\n liveRegion.innerHTML =\r\n '' + message + \"\";\r\n }, 100);\r\n\r\n // Close on outside click\r\n document.addEventListener(\"click\", function (e) {\r\n if (toggletip !== e.target) {\r\n liveRegion.innerHTML = \"\";\r\n }\r\n });\r\n\r\n // Remove toggletip on ESC\r\n toggletip.addEventListener(\"keydown\", function (e) {\r\n if ((e.keyCode || e.which) === 27) liveRegion.innerHTML = \"\";\r\n });\r\n};\r\n\r\nexport const isElementThisPercentInViewport = function (\r\n element,\r\n percentVisible\r\n) {\r\n let rect = element.getBoundingClientRect();\r\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\r\n\r\n return !(\r\n Math.floor(\r\n 100 - ((rect.left >= 0 ? 0 : rect.left) / +-(rect.width / 1)) * 100\r\n ) < percentVisible ||\r\n Math.floor(100 - ((rect.right - windowWidth) / rect.width) * 100) <\r\n percentVisible\r\n );\r\n};\r\n\r\nexport const padZerosToString = function (str) {\r\n let withAdditionalZeros = str;\r\n while (withAdditionalZeros.length < 10) {\r\n withAdditionalZeros = \"0\" + withAdditionalZeros;\r\n }\r\n return withAdditionalZeros;\r\n};\r\n\r\nexport const formatDate = function (date) {\r\n let monthFormat;\r\n let dayFormat;\r\n const dateMonth = moment(date).month();\r\n const dateDay = moment(date).date();\r\n\r\n if (dateMonth === 4) {\r\n monthFormat = \"MMM\";\r\n } else {\r\n monthFormat = \"MMM.\";\r\n }\r\n\r\n if (dateDay >= 10) {\r\n dayFormat = \"D,\";\r\n } else if (dateDay < 10) {\r\n dayFormat = \"D,\";\r\n }\r\n\r\n return `${monthFormat} ${dayFormat} YYYY`;\r\n};\r\n","import React from \"react\";\r\nimport { getField } from \"../../util/DynamicItemUtils\";\r\nimport Truncate from \"react-truncate\";\r\nimport ReactDOMServer from \"react-dom/server\";\r\n\r\nexport default function PageNode({ item }: any) {\r\n return (\r\n
\r\n

{getField(item, \"contenttypelabel\")}

\r\n

\r\n {getField(item, \"title\")}\r\n

\r\n {getField(item, \"parentpagetitle\") && (\r\n

{getField(item, \"parentpagetitle\")}

\r\n )}\r\n
\r\n \r\n {ReactDOMServer.renderToString(getField(item, \"content\"))}\r\n \r\n
\r\n
\r\n

\r\n \r\n Read More\r\n \r\n

\r\n
\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\n\r\nfunction SubsequentActions({ items }: any) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n function toggleContainer() {\r\n setIsVisible(!isVisible);\r\n }\r\n\r\n return items && items.length ? (\r\n
\r\n \r\n Subsequent actions\r\n \r\n \r\n {items.map((item) => (\r\n \r\n {item.title}\r\n \r\n ))}\r\n
\r\n \r\n ) : null;\r\n}\r\n\r\nexport default SubsequentActions;\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport {\r\n getField,\r\n deserializeField,\r\n formatDate,\r\n} from \"../../util/DynamicItemUtils\";\r\n\r\nimport SubsequentActions from \"../SubsequentActions\";\r\n\r\nexport default function EnforcementDocument({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n const effectiveDateFormat =\r\n getField(item, \"effectivedate\") &&\r\n formatDate(getField(item, \"effectivedate\"));\r\n const showEffectiveDate = getField(item, \"hideeffectivedate\") === \"False\";\r\n const boardActionDateFormat =\r\n getField(item, \"boardactiondate\") &&\r\n formatDate(getField(item, \"boardactiondate\"));\r\n const releaseDateFormat =\r\n getField(item, \"releasedate\") && formatDate(getField(item, \"releasedate\"));\r\n\r\n const sanctionsCancelled = getField(item, \"sanctionscancelled\") === \"True\";\r\n\r\n var getSequentialDocuments = function (field) {\r\n if (item && item.Document && item.Document.hasOwnProperty(field)) {\r\n var data = item.Document[field];\r\n\r\n if (data.length) {\r\n try {\r\n data = data.map((i) => JSON.parse(i));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n

{getField(item, \"contenttypelabel\")}

\r\n {getField(item, \"enforcementorderdocument\") && (\r\n

\r\n \r\n {getField(item, \"title\")}\r\n \r\n

\r\n )}\r\n
\r\n {getField(item, \"enforcementordertypes\") && (\r\n
\r\n
Types
\r\n
\r\n {getField(item, \"enforcementordertypes\")}\r\n
\r\n
\r\n )}\r\n {getField(item, \"country\") && (\r\n
\r\n
Country
\r\n
{getField(item, \"country\")}
\r\n
\r\n )}\r\n {showEffectiveDate && getField(item, \"effectivedate\") && (\r\n
\r\n
\r\n {sanctionsCancelled ? \"Sanctions cancelled\" : \"Effective date\"}\r\n
\r\n
\r\n {moment(\r\n getField(item, \"effectivedate\"),\r\n dateParsingFormat\r\n ).format(effectiveDateFormat)}\r\n
\r\n
\r\n )}\r\n {getField(item, \"boardactiondate\") && (\r\n
\r\n
Board Action date
\r\n
\r\n {moment(\r\n getField(item, \"boardactiondate\"),\r\n dateParsingFormat\r\n ).format(boardActionDateFormat)}\r\n
\r\n
\r\n )}\r\n {getField(item, \"releasedate\") && (\r\n
\r\n
Release date
\r\n
\r\n {moment(getField(item, \"releasedate\"), dateParsingFormat).format(\r\n releaseDateFormat\r\n )}\r\n
\r\n
\r\n )}\r\n
\r\n {getField(item, \"practicelimitationexpirationnotice\") && (\r\n
\r\n
\r\n
\r\n Practice Limitation Expiration Notice\r\n
\r\n
\r\n {getField(item, \"practicelimitationexpirationnotice\")}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n {deserializeField(item, \"enforcementorderdocument\") && (\r\n
\r\n \r\n Download PDF\r\n \r\n
\r\n )}\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport {\r\n getField,\r\n deserializeField,\r\n tooltip,\r\n formatDate,\r\n} from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function InspectionReport({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n const dateDisplayFormat =\r\n getField(item, \"effectivedate\") &&\r\n formatDate(getField(item, \"effectivedate\"));\r\n\r\n const modalId =\r\n \"public-criticism-\" +\r\n getField(item, \"title\")\r\n .replace(/[^\\w\\s]/gi, \"\")\r\n .replace(/\\s+/g, \"\");\r\n const modalHref = \"#\" + modalId;\r\n\r\n return (\r\n
\r\n

{getField(item, \"contenttypelabel\")}

\r\n {getField(item, \"name\") ? (\r\n

\r\n \r\n {getField(item, \"title\")}\r\n \r\n

\r\n ) : (\r\n

{getField(item, \"title\")}

\r\n )}\r\n
\r\n {getField(item, \"country\") && (\r\n
\r\n
Country
\r\n
{getField(item, \"country\")}
\r\n
\r\n )}\r\n {getField(item, \"globalnetworks\") && (\r\n
\r\n
Global Network
\r\n
{getField(item, \"globalnetworks\")}
\r\n
\r\n )}\r\n {getField(item, \"inspectionyear\") && (\r\n
\r\n
Inspection Year
\r\n
{getField(item, \"inspectionyear\")}
\r\n
\r\n )}\r\n {getField(item, \"totalissuerauditclients\") && (\r\n
\r\n
Total Issuer Audit Clients
\r\n
{getField(item, \"totalissuerauditclients\")}
\r\n
\r\n )}\r\n {getField(item, \"totalauditsreviewed\") && (\r\n
\r\n
Audits Reviewed
\r\n
{getField(item, \"totalauditsreviewed\")}
\r\n
\r\n )}\r\n {getField(item, \"partiadeficiencyrate\") && (\r\n
\r\n
Part I.A Deficiency Rate
\r\n
{getField(item, \"partiadeficiencyrate\")}%
\r\n
\r\n )}\r\n {getField(item, \"effectivedate\") && (\r\n
\r\n
Inspection report date
\r\n
\r\n {getField(item, \"effectivedate\")\r\n ? moment(\r\n getField(item, \"effectivedate\"),\r\n dateParsingFormat\r\n ).format(dateDisplayFormat)\r\n : null}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n {deserializeField(item, \"name\") && (\r\n \r\n Download PDF\r\n \r\n )}\r\n
\r\n {getField(item, \"expandeddisclosure\") &&\r\n (getField(item, \"expandeddisclosure\") === \"Yes\" ? (\r\n
\r\n \r\n Includes public quality control criticisms\r\n \r\n \r\n
\r\n ) : (\r\n \"\"\r\n ))}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { getField, formatDate } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function NewsRelease({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n const dateDisplayFormat =\r\n getField(item, \"displayarticledate\") &&\r\n formatDate(getField(item, \"displayarticledate\"));\r\n\r\n return (\r\n
\r\n

News Release

\r\n

\r\n {getField(item, \"title\")}\r\n

\r\n
\r\n {getField(item, \"displayarticledate\") && (\r\n
\r\n
Date
\r\n
\r\n {getField(item, \"displayarticledate\")\r\n ? moment(\r\n getField(item, \"displayarticledate\"),\r\n dateParsingFormat\r\n ).format(dateDisplayFormat)\r\n : null}\r\n
\r\n
\r\n )}\r\n
\r\n \r\n Read More\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { getField, formatDate } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function OtherUpdate({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n const dateDisplayFormat =\r\n getField(item, \"displayarticledate\") &&\r\n formatDate(getField(item, \"displayarticledate\"));\r\n\r\n return (\r\n
\r\n

Other Update

\r\n

\r\n {getField(item, \"title\")}\r\n

\r\n
\r\n {getField(item, \"displayarticledate\") && (\r\n
\r\n
Date
\r\n
\r\n {getField(item, \"displayarticledate\")\r\n ? moment(\r\n getField(item, \"displayarticledate\"),\r\n dateParsingFormat\r\n ).format(dateDisplayFormat)\r\n : null}\r\n
\r\n
\r\n )}\r\n
\r\n \r\n Read More\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField, deserializeField } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function Document({ item }: any) {\r\n return (\r\n
\r\n

Document

\r\n

\r\n \r\n {getField(item, \"title\")}\r\n \r\n

\r\n
\r\n \r\n Download PDF\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function DeniedIssuerAuditClient({ item }: any) {\r\n var companyFormatted = getField(item, \"publiccompany\").replace(\",\", \"::\");\r\n var url =\r\n \"/oversight/international/denied-access-to-inspections?publiccompany=\" +\r\n companyFormatted;\r\n\r\n return (\r\n
\r\n

Denied Issuer Audit Client

\r\n

{getField(item, \"publiccompany\")}

\r\n
\r\n {getField(item, \"auditorname\") && (\r\n
\r\n
Auditor Name
\r\n
{getField(item, \"auditorname\")}
\r\n
\r\n )}\r\n {getField(item, \"auditorlocations\") && (\r\n
\r\n
Auditor Locations
\r\n
\r\n {getField(item, \"auditorlocations\")}\r\n
\r\n
\r\n )}\r\n
\r\n {window.location.href.includes(\"oversight/international\") ? (\r\n \"\"\r\n ) : (\r\n \r\n Read More\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport {\r\n getField,\r\n deserializeField,\r\n formatDate,\r\n} from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function SupportingDocumentation({ item }: any) {\r\n var dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n var dateDisplayFormat =\r\n getField(item, \"releasedate\") && formatDate(getField(item, \"releasedate\"));\r\n\r\n const nameData = getField(item, \"name\") && deserializeField(item, \"name\")[0];\r\n\r\n return (\r\n
\r\n

Docket Document

\r\n

\r\n {nameData ? (\r\n \r\n {getField(item, \"title\")}\r\n \r\n ) : (\r\n
{getField(item, \"title\")}
\r\n )}\r\n

\r\n
\r\n {getField(item, \"docketdocumenttypes\") && (\r\n
\r\n
Docket Document Type
\r\n
\r\n {getField(item, \"docketdocumenttypes\")}\r\n
\r\n
\r\n )}\r\n {getField(item, \"docket\") && (\r\n
\r\n
Docket
\r\n
\r\n {deserializeField(item, \"docket\")[0].title}\r\n
\r\n
\r\n )}\r\n {getField(item, \"releasedate\") && (\r\n
\r\n
Date
\r\n
\r\n {getField(item, \"releasedate\")\r\n ? moment(\r\n getField(item, \"releasedate\"),\r\n dateParsingFormat\r\n ).format(dateDisplayFormat)\r\n : null}\r\n
\r\n
\r\n )}\r\n
\r\n {getField(item, \"name\") && (\r\n \r\n Download PDF\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function GlobalNetworkFirm({ item }: any) {\r\n var href =\r\n \"https://rasr.pcaobus.org/Firms/FirmSummaryPublic.aspx?FirmID=\" +\r\n getField(item, \"encryptedfirmid\");\r\n\r\n return (\r\n
\r\n

Global Network Firms

\r\n

\r\n {getField(item, \"title\")}\r\n

\r\n
\r\n {getField(item, \"firmname\") && (\r\n
\r\n
Firm Name
\r\n
\r\n {getField(item, \"firmname\")}\r\n
\r\n
\r\n )}\r\n {getField(item, \"globalnetwork\") && (\r\n
\r\n
Global Network
\r\n
\r\n {getField(item, \"globalnetwork\")}\r\n
\r\n
\r\n )}\r\n {getField(item, \"city\") && (\r\n
\r\n
City
\r\n
{getField(item, \"city\")}
\r\n
\r\n )}\r\n {getField(item, \"country\") && (\r\n
\r\n
Country
\r\n
{getField(item, \"country\")}
\r\n
\r\n )}\r\n {getField(item, \"hasinspectionreport\") && (\r\n
\r\n
Inspection report issued
\r\n
\r\n {getField(item, \"hasinspectionreport\")\r\n .replace(\"False\", \"No\")\r\n .replace(\"True\", \"Yes\")}\r\n
\r\n
\r\n )}\r\n
\r\n \r\n Read More\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField } from \"../../util/DynamicItemUtils\";\r\nimport Truncate from \"react-truncate\";\r\n\r\nexport default function StandardsAndInterpretations({ item }: any) {\r\n const originalUrl = getField(item, \"pageurl\");\r\n let finalUrl = originalUrl || \"\";\r\n\r\n if (finalUrl.length > 0) {\r\n switch (getField(item, \"standardsgroups\")) {\r\n case \"Attestation\":\r\n finalUrl = originalUrl;\r\n break;\r\n\r\n case \"Ethics & Independence\":\r\n finalUrl = originalUrl.replace(\r\n \"attestation-standards\",\r\n \"ethics-independence-rules\"\r\n );\r\n break;\r\n\r\n case \"Quality Control\":\r\n finalUrl = originalUrl.replace(\"attestation-standards\", \"qc-standards\");\r\n break;\r\n\r\n case \"Auditing Standards\":\r\n finalUrl = originalUrl.replace(\r\n \"attestation-standards\",\r\n \"auditing-standards\"\r\n );\r\n break;\r\n\r\n case \"Archived Standards\":\r\n finalUrl = originalUrl.replace(\r\n \"attestation-standards\",\r\n \"archived-standards\"\r\n );\r\n break;\r\n\r\n case null:\r\n finalUrl = originalUrl.replace(\r\n \"attestation-standards\",\r\n \"archived-standards\"\r\n );\r\n break;\r\n\r\n case \"\":\r\n finalUrl = originalUrl.replace(\r\n \"attestation-standards\",\r\n \"archived-standards\"\r\n );\r\n break;\r\n\r\n default:\r\n finalUrl = originalUrl.replace(\r\n \"attestation-standards\",\r\n \"archived-standards\"\r\n );\r\n break;\r\n }\r\n }\r\n\r\n return (\r\n
\r\n

\r\n {getField(item, \"standardpagetypes\") === \"Auditing Interpretations\"\r\n ? \"Auditing Interpretation\"\r\n : \"Standards\"}\r\n

\r\n

\r\n {finalUrl.length > 0 ? (\r\n {getField(item, \"title\")}\r\n ) : (\r\n
{getField(item, \"title\")}
\r\n )}\r\n

\r\n
\r\n {getField(item, \"standardsgroups\") && (\r\n
\r\n
Standard Type
\r\n
\r\n {getField(item, \"standardsgroups\")}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n {getField(item, \"pagecontent\") && (\r\n
\r\n
\r\n {getField(item, \"pagecontent\")}\r\n
\r\n
\r\n )}\r\n
\r\n {finalUrl.length > 0 && (\r\n \r\n Read More\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField, deserializeField } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function PcaobOperationsDocument({ item }: any) {\r\n return (\r\n
\r\n

Document

\r\n {getField(item, \"documentlink\") ? (\r\n

\r\n \r\n {getField(item, \"title\")}\r\n \r\n

\r\n ) : (\r\n

{getField(item, \"title\")}

\r\n )}\r\n
\r\n {getField(item, \"operationsdocumenttypes\") && (\r\n
\r\n
Standard Type
\r\n
\r\n {getField(item, \"operationsdocumenttypes\")}\r\n
\r\n
\r\n )}\r\n
\r\n {getField(item, \"documentlink\") && (\r\n \r\n Download PDF\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { getField, formatDate } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function SpeechAndStatement({ item }: any) {\r\n var dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n var dateDisplayFormat =\r\n getField(item, \"articlestartdate\") &&\r\n formatDate(getField(item, \"articlestartdate\"));\r\n\r\n return (\r\n
\r\n

Speech

\r\n

\r\n {getField(item, \"title\")}\r\n

\r\n
\r\n {getField(item, \"speaker\") && (\r\n
\r\n
Speaker
\r\n
{getField(item, \"speaker\")}
\r\n
\r\n )}\r\n {getField(item, \"articlestartdate\") && (\r\n
\r\n
Date
\r\n
\r\n {getField(item, \"articlestartdate\")\r\n ? moment(\r\n getField(item, \"articlestartdate\"),\r\n dateParsingFormat\r\n ).format(dateDisplayFormat)\r\n : null}\r\n
\r\n
\r\n )}\r\n {getField(item, \"eventname\") && (\r\n
\r\n
\r\n
Event
\r\n
\r\n {`${getField(item, \"eventname\")}${\r\n getField(item, \"location\")\r\n ? ` in ${getField(item, \"location\")}`\r\n : \"\"\r\n }`}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n \r\n Read More\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function RulemakingDocket({ item }: any) {\r\n return (\r\n
\r\n

Rulemaking Docket

\r\n

\r\n \r\n {getField(item, \"title\")}\r\n \r\n

\r\n
\r\n {getField(item, \"docketstatus\") && (\r\n
\r\n
Status
\r\n
{getField(item, \"docketstatus\")}
\r\n
\r\n )}\r\n
\r\n \r\n Read More\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function GlobalNetwork({ item }: any) {\r\n const href = \"/oversight/registration/global-network-firms\";\r\n const finalHref = `${href}?globalnetwork=${encodeURIComponent(\r\n getField(item, \"title\")\r\n )}`;\r\n\r\n return (\r\n
\r\n

Global Network

\r\n

\r\n {getField(item, \"title\")}\r\n

\r\n \r\n View Global Network Firms\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport { getField, formatDate } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function PcaobEvent({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n const startDateDisplayFormat =\r\n getField(item, \"startdatetime\") &&\r\n formatDate(getField(item, \"startdatetime\"));\r\n const endDateDisplayFormat =\r\n getField(item, \"enddatetime\") &&\r\n formatDate(getField(item, \"enddatetime\"));\r\n\r\n const startDate = moment(\r\n getField(item, \"startdatetime\"),\r\n dateParsingFormat\r\n ).format(startDateDisplayFormat);\r\n const endDate = moment(\r\n getField(item, \"enddatetime\"),\r\n dateParsingFormat\r\n ).format(endDateDisplayFormat);\r\n let date;\r\n\r\n if (startDate === endDate) {\r\n date = startDate;\r\n } else {\r\n date = startDate + \" - \" + endDate;\r\n }\r\n\r\n return (\r\n
\r\n

Event

\r\n

\r\n {getField(item, \"title\")}\r\n

\r\n
\r\n {getField(item, \"eventtypes\") && (\r\n
\r\n
Event Types
\r\n
{getField(item, \"eventtypes\")}
\r\n
\r\n )}\r\n {getField(item, \"startdatetime\") && (\r\n
\r\n
Date(s)
\r\n
{date}
\r\n
\r\n )}\r\n {getField(item, \"Location\") ||\r\n getField(item, \"city\") ||\r\n getField(item, \"state\") ||\r\n getField(item, \"country\") ? (\r\n
\r\n
Location
\r\n
{getField(item, \"Location\")}
\r\n
\r\n {getField(item, \"city\")}{\" \"}\r\n {getField(item, \"state\") && \",\" + getField(item, \"state\")}{\" \"}\r\n {getField(item, \"country\") && \",\" + getField(item, \"country\")}\r\n
\r\n
\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n {getField(item, \"speakers\") && (\r\n
\r\n
\r\n
Speakers
\r\n
{getField(item, \"speakers\")}
\r\n
\r\n
\r\n )}\r\n \r\n View Event\r\n \r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField, deserializeField } from \"../../util/DynamicItemUtils\";\r\n\r\nexport default function Biography({ item }: any) {\r\n var originalUrl = getField(item, \"pageurl\");\r\n var finalUrl = originalUrl;\r\n\r\n switch (getField(item, \"biographytypes\")) {\r\n case \"Board Member\":\r\n break;\r\n\r\n case \"Staff Member\":\r\n finalUrl = originalUrl\r\n .replace(\"/about/the-board/\", \"/about/senior-staff/senior-staff-bios/\")\r\n .replace(\"board-bios/\", \"\");\r\n break;\r\n\r\n case \"Former Board Member\":\r\n break;\r\n \r\n default:\r\n finalUrl = originalUrl.replace(\r\n \"/about/the-board/\",\r\n \"/about/senior-staff/senior-staff-bios/\"\r\n );\r\n break;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {deserializeField(item, \"pageimage\") && (\r\n \r\n \r\n
\r\n )}\r\n
\r\n

Biography

\r\n

\r\n {getField(item, \"title\")}\r\n

\r\n\r\n {getField(item, \"biographytypes\") && (\r\n
\r\n
Position
\r\n
\r\n {getField(item, \"biographytypes\")}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n {getField(item, \"JobTitle\") && (\r\n
\r\n
JobTitle
\r\n
{getField(item, \"JobTitle\")}
\r\n
\r\n )}\r\n {getField(item, \"company\") && (\r\n
\r\n
Company
\r\n
{getField(item, \"company\")}
\r\n
\r\n )}\r\n {getField(item, \"divisions\") && (\r\n
\r\n
Divisions
\r\n
{getField(item, \"divisions\")}
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n {getField(item, \"summary\") && (\r\n
\r\n
{getField(item, \"summary\")}
\r\n
\r\n )}\r\n
\r\n \r\n Read More\r\n \r\n \r\n );\r\n}\r\n","import React, { useState, useRef } from \"react\";\r\nimport {\r\n getField,\r\n isElementThisPercentInViewport,\r\n} from \"../../../../util/DynamicItemUtils\";\r\n\r\nexport default function RegisteredFirms({ item }: any) {\r\n const [showTooltip, setShowTooltip] = useState(false);\r\n const tooltipRef = useRef(null);\r\n\r\n const auditReportTooltip =\r\n \"Audit report activity as reported by the firm in its most recent annual report\";\r\n\r\n function checkTooltipPosition() {\r\n return !!tooltipRef && !!tooltipRef.current\r\n ? !isElementThisPercentInViewport(tooltipRef.current, 100)\r\n ? \" reposition\"\r\n : \"\"\r\n : \"\";\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

{getField(item, \"firmname\")}

\r\n

\r\n City:\r\n {getField(item, \"firmcity\") && ` ${getField(item, \"firmcity\")}`}\r\n

\r\n

\r\n State:\r\n {getField(item, \"firmstate\") && ` ${getField(item, \"firmstate\")}`}\r\n

\r\n

\r\n Country:\r\n {getField(item, \"firmcountry\") && ` ${getField(item, \"firmcountry\")}`}\r\n

\r\n
\r\n
\r\n {getField(item, \"category\") &&\r\n item.Document.category.map((cat, i) => {\r\n return

{cat}

;\r\n })}\r\n
\r\n
\r\n setShowTooltip(!showTooltip)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {auditReportTooltip}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Firm Summary\r\n \r\n \r\n AuditorSearch Profile\r\n \r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField } from \"../../../../util/DynamicItemUtils\";\r\n\r\nexport default function Amendments({ item }: any) {\r\n const partTwoAmendmentLabels = [\r\n { document: \"amendmentauditreport\", text: \"Item 3.1, Audit Report\" },\r\n {\r\n document: \"amendmentotherfirms\",\r\n text: \"Item 3.2, Other Accounting Firms\",\r\n },\r\n {\r\n document: \"amendmentdividedresponsibility\",\r\n text: \"Item 3.3, Divided Responsibility\",\r\n },\r\n ];\r\n\r\n const partThreeAmendmentLabels = [\r\n {\r\n document: \"amendmentparticipantsmorethan5\",\r\n text:\r\n \"Item 4.1, Other Accounting Firm(s) Individually 5% or Greater of Total Audit Hours \",\r\n },\r\n {\r\n document: \"amendmentparticipantslessthan5\",\r\n text:\r\n \"Item 4.2, Other Accounting Firm(s) Individually Less Than 5% of Total Audit Hours \",\r\n },\r\n ];\r\n\r\n const partTwoAmendments = partTwoAmendmentLabels.filter(\r\n (amendment) => getField(item, amendment.document) === \"True\"\r\n );\r\n\r\n const partThreeAmendments = partThreeAmendmentLabels.filter(\r\n (amendment) => getField(item, amendment.document) === \"True\"\r\n );\r\n\r\n return (\r\n
\r\n

Amendments

\r\n

Parts of FORM AP that are changed from most recent FORM AP filed

\r\n
    \r\n {getField(item, \"amendmentfirmidentification\") === \"True\" && (\r\n
  • \r\n \r\n Part Ⅰ, Identity of the firm\r\n
  • \r\n )}\r\n {partTwoAmendments.length > 0 && (\r\n
  • \r\n Part Ⅲ, Audit Client & Audit Report\r\n
      \r\n {partTwoAmendments.map((amendment, i) => (\r\n
    • \r\n \r\n {amendment.text}\r\n
    • \r\n ))}\r\n
    \r\n
  • \r\n )}\r\n {partThreeAmendments.length > 0 && (\r\n
  • \r\n Part Ⅳ, Responsibility for the Audit is not Divided\r\n
      \r\n {partThreeAmendments.map((amendment, i) => (\r\n
    • \r\n \r\n {amendment.text}\r\n
    • \r\n ))}\r\n
    \r\n
  • \r\n )}\r\n {getField(item, \"amendmentauditdivided\") === \"True\" && (\r\n
  • \r\n \r\n Part Ⅴ, Responsibility for the Audit is Divided\r\n
  • \r\n )}\r\n {getField(item, \"amendmentcertifiedfirm\") === \"True\" && (\r\n
  • \r\n \r\n Part Ⅵ, Certification of the Firm\r\n
  • \r\n )}\r\n
\r\n {getField(item, \"amendmentcertifiedfirm\") === \"True\" && (\r\n
\r\n

\r\n Information that describes the error or omission in Part Ⅵ as\r\n previously filed\r\n

\r\n

{getField(item, \"amendmentcertifiedfirminfo\")}

\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport moment from \"moment\";\r\nimport {\r\n getField,\r\n deserializeField,\r\n padZerosToString,\r\n formatDate,\r\n} from \"../../../../util/DynamicItemUtils\";\r\n\r\nexport default function AuditClientAndReport({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ss\";\r\n const dateDisplayFormat = \"MM/DD/YYYY\";\r\n\r\n const [showAllFundSeriesInfo, setShowAllFundSeriesInfo] = useState(false);\r\n\r\n const issuerCik = getField(item, \"issuercik\");\r\n const auditFundSeries = deserializeField(item, \"auditfundseries\");\r\n const secEngagementPartnerID = getField(item, \"secengagementpartnerid\");\r\n\r\n // getField pulls first element of array, declare directly to preserve array n concat\r\n const engagementPartnerOtherIDs = getField(item, \"engagementpartnerotherids\");\r\n const engagementPartnerOtherIDsConcat =\r\n engagementPartnerOtherIDs &&\r\n item.Document[\"engagementpartnerotherids\"].join(\", \");\r\n\r\n // Locations are split into individual strings, declaring in array filtering/concatenating\r\n const firmLocation = [\r\n getField(item, \"engagementpartnercity\"),\r\n getField(item, \"engagementpartnerstate\"),\r\n getField(item, \"engagementpartnercountry\"),\r\n ]\r\n .filter((name) => !!name && name !== \"United States\")\r\n .join(\", \");\r\n\r\n // Format dates but keep in array\r\n const auditDualDate = getField(item, \"auditdualdate\");\r\n const auditDualDates =\r\n auditDualDate &&\r\n item.Document[\"auditdualdate\"]\r\n .map((date) => {\r\n return moment(date, dateParsingFormat).format(formatDate(date));\r\n })\r\n .join(\", \");\r\n\r\n // Names are split into individual strings, declaring in array n concatenating\r\n const secEngagementPartnerName = [\r\n getField(item, \"secengagementpartnerfirstname\"),\r\n getField(item, \"secengagementpartnermiddlename\"),\r\n getField(item, \"secengagementpartnerlastname\"),\r\n ]\r\n .filter((name) => !!name)\r\n .join(\" \");\r\n\r\n // getField pulls first element of array, declare directly to preserve array n concat\r\n const secOtherEngagementPartnerIDs = getField(\r\n item,\r\n \"secengagementpartnerotherids\"\r\n );\r\n const secEngagementPartnerOtherIDsConcat =\r\n secOtherEngagementPartnerIDs &&\r\n item.Document[\"secengagementpartnerotherids\"].join(\", \");\r\n\r\n function generateFundSeriesTable(fundSeries) {\r\n return (\r\n
\r\n

Fund Series

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {fundSeries[0].map((series, i) => (\r\n 2 && !showAllFundSeriesInfo ? \"hide-row\" : \"\"}\r\n >\r\n \r\n \r\n \r\n ))}\r\n {fundSeries[0].length > 3 && (\r\n \r\n \r\n \r\n )}\r\n \r\n
Series IdentifierFund Name
{series.FundSeriesID}{series.FundName}
\r\n \r\n setShowAllFundSeriesInfo(!showAllFundSeriesInfo)\r\n }\r\n >\r\n Show {showAllFundSeriesInfo ? \"Less\" : \"More\"}\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n

Audit Client and Audit Report

\r\n

Issuer

\r\n

{getField(item, \"issuername\")}

\r\n

CIK: {issuerCik ? `${padZerosToString(issuerCik)}` : \"N/A\"}

\r\n {auditFundSeries && generateFundSeriesTable(auditFundSeries)}\r\n

Engagement Partner

\r\n

{getField(item, \"engagementpartnername\")}

\r\n

Partner ID: {getField(item, \"engagementpartnerid\")}

\r\n {engagementPartnerOtherIDs && (\r\n

{`Other Partners ID(s): ${engagementPartnerOtherIDsConcat}`}

\r\n )}\r\n

Audit Report

\r\n

\r\n {`Audit Report Date: ${moment(\r\n getField(item, \"auditreportdate\"),\r\n dateParsingFormat\r\n ).format(formatDate(getField(item, \"auditreportdate\")))}`}\r\n

\r\n

\r\n {`Financial Statement Date: ${moment(\r\n getField(item, \"fiscalperiodenddate\"),\r\n dateParsingFormat\r\n ).format(formatDate(getField(item, \"fiscalperiodenddate\")))}`}\r\n

\r\n

{`Firm Location: ${firmLocation}`}

\r\n {getField(item, \"dualdatedindicator\") === \"True\" && (\r\n
\r\n

Dual Dated

\r\n

{`Audit Dual Date: ${auditDualDates}`}

\r\n {secEngagementPartnerName && (\r\n

\r\n {`Engagement partner for dual dated content: ${secEngagementPartnerName}`}\r\n

\r\n )}\r\n {secEngagementPartnerID && (\r\n

Partner ID: {secEngagementPartnerID}

\r\n )}\r\n {secOtherEngagementPartnerIDs && (\r\n

\r\n {`Other Partner ID(s): ${secEngagementPartnerOtherIDsConcat}`}\r\n

\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField, deserializeField } from \"../../../../util/DynamicItemUtils\";\r\n\r\nexport default function ResponsibilityNotDivided({ item }: any) {\r\n const auditNotDividedPercent = deserializeField(\r\n item,\r\n \"auditnotdividedpercent\"\r\n );\r\n const numberOfParticipants = getField(item, \"numberofparticipants\");\r\n const participantRange = getField(item, \"participantrange\");\r\n const participantPercentage = getField(item, \"participantpercentage\");\r\n\r\n function generateFirmCardFivePercentOrGreater(firmsInfo) {\r\n return firmsInfo.map((firm) => {\r\n const formattedLocation = [firm.City, firm.State, firm.Country]\r\n .filter((x) => !!x && x !== \"United States\")\r\n .join(\", \");\r\n return (\r\n
\r\n

\r\n {firm.FirmName}\r\n

\r\n

{`FirmID: ${firm.FirmID.length > 0 ? firm.FirmID : \"N/A\"}`}

\r\n {formattedLocation && (\r\n

{`Headquarters' Office: ${formattedLocation}`}

\r\n )}\r\n

{`Extent of Participation: ${\r\n firm.Range ? firm.Range : firm.Percentage + \"%\"\r\n }`}

\r\n
\r\n );\r\n });\r\n }\r\n\r\n return (\r\n
\r\n

\r\n Participation of Other Accounting Firms - Responsibility Not Divided\r\n

\r\n

\r\n Other Accounting Firm(s) individually 5% or greater of total audit hours\r\n

\r\n {auditNotDividedPercent ? (\r\n
\r\n {generateFirmCardFivePercentOrGreater(auditNotDividedPercent[0])}\r\n
\r\n ) : (\r\n \r\n

None reported

\r\n
\r\n )}\r\n

\r\n Other Accounting Firm(s) individually less than 5% of total audit hours\r\n

\r\n {numberOfParticipants ? (\r\n
\r\n

{`Number of Firms: ${numberOfParticipants\r\n .replace(\"+000000000000000\", \"\")\r\n .replace(\".0000\", \"\")}`}

\r\n

{`Aggregate participation: ${\r\n participantRange ? participantRange : participantPercentage + \"%\"\r\n }`}

\r\n
\r\n ) : (\r\n \r\n

None reported

\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField, deserializeField } from \"../../../../util/DynamicItemUtils\";\r\n\r\nexport default function ResponsibilityDivided({ item }: any) {\r\n const auditDividedInfo = deserializeField(item, \"auditdividedinfo\");\r\n\r\n function formatAuditString({\r\n DollarAmount,\r\n Percentage,\r\n Criterion,\r\n OtherCriterion,\r\n }) {\r\n const auditString = [\r\n Criterion === \"Other\" ? OtherCriterion : Criterion,\r\n DollarAmount ? `$${Number(DollarAmount).toLocaleString()}` : \"\",\r\n DollarAmount && Percentage ? \"and\" : \"\",\r\n Percentage ? `${Percentage}%` : \"\",\r\n ].join(\" \");\r\n return auditString;\r\n }\r\n\r\n function generateFirmCardAuditDividedInfo(firmsInfo) {\r\n return firmsInfo.map((firm) => {\r\n const formattedLocation = [firm.City, firm.State, firm.Country]\r\n .filter((x) => !!x && x !== \"United States\")\r\n .join(\", \");\r\n return (\r\n
\r\n \r\n

{firm.AuditorName}

\r\n
\r\n

{`FirmID: ${firm.FirmID.length > 0 ? firm.FirmID : \"N/A\"}`}

\r\n {formattedLocation && (\r\n

{`Office Location: ${formattedLocation}`}

\r\n )}\r\n

{`Audited: ${formatAuditString(firm)}`}

\r\n
\r\n );\r\n });\r\n }\r\n\r\n return (\r\n
\r\n

Participation of Other Accounting Firms - Divided Responsibility

\r\n

\r\n Identity of the other Public Accounting Firm(s) to which the firm makes\r\n reference\r\n

\r\n {auditDividedInfo ? (\r\n
\r\n {generateFirmCardAuditDividedInfo(auditDividedInfo[0])}\r\n
\r\n ) : (\r\n \r\n

None Reported

\r\n
\r\n )}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\n\r\nimport Amendments from \"./Amendments\";\r\nimport AuditClientAndReport from \"./AuditClientAndReport\";\r\nimport ResponsibilityNotDivided from \"./ResponsibilityNotDivided\";\r\nimport ResponsibilityDivided from \"./ResponsibilityDivided\";\r\n\r\nimport { getField, padZerosToString, formatDate } from \"../../../../util/DynamicItemUtils\";\r\n\r\nexport default function FormAPFilingDetails({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ss\";\r\n\r\n const issuerName = getField(item, \"issuername\");\r\n const issuerTicker = getField(item, \"issuerticker\");\r\n const issuerCikExists = !(getField(item, \"issuerciknone\") === \"True\");\r\n const issuerCik = getField(item, \"issuercik\");\r\n\r\n const engagementLink =\r\n \"/resources/auditorsearch/engagement-partners/?engagementpartnermasterid=\" +\r\n getField(item, \"engagementpartnermasterid\");\r\n const firmLink =\r\n \"/resources/auditorsearch/firms/?firmid=\" + getField(item, \"firmid\");\r\n const issuerLink =\r\n \"/resources/auditorsearch/issuers/?issuerid=\" +\r\n getField(item, \"issuerid\") +\r\n \"&issuercik=\" +\r\n getField(item, \"issuercik\");\r\n const pdfLink = `/api/auditorsearch/downloadfiling?ID=${getField(\r\n item,\r\n \"filingid\"\r\n )}&filename=${issuerName && issuerName.replace(/[^\\w\\s]/gi, \"\")}_${moment(\r\n getField(item, \"filingdate\"),\r\n dateParsingFormat\r\n ).format(\"MMM DD YYYY\")}.pdf`;\r\n return (\r\n
\r\n
\r\n

\r\n {getField(item, \"issuerid\") && issuerCik ? (\r\n {issuerName}\r\n ) : (\r\n
{issuerName}
\r\n )}\r\n

\r\n
\r\n
\r\n
    \r\n
  • Issuer
  • \r\n {issuerCikExists && (\r\n
  • {`CIK ${padZerosToString(issuerCik)}`}
  • \r\n )}\r\n {issuerTicker &&
  • {`Ticker ${issuerTicker}`}
  • }\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Identity Of Firm

\r\n \r\n

{getField(item, \"firmname\")}

\r\n
\r\n {getField(item, \"firmothername\") && (\r\n

{`Legal Name: ${getField(item, \"firmothername\")}`}

\r\n )}\r\n
\r\n\r\n {getField(item, \"amendmentpreviousfiling\") === \"True\" && (\r\n \r\n )}\r\n\r\n \r\n\r\n {getField(item, \"isauditnotdivided\") === \"True\" && (\r\n \r\n )}\r\n\r\n {getField(item, \"isauditdivided\") === \"True\" && (\r\n \r\n )}\r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport {\r\n getField,\r\n deserializeField,\r\n padZerosToString,\r\n} from \"../../../../util/DynamicItemUtils\";\r\n\r\nexport default function ChinaBasedReferredWork({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n const dateDisplayFormat = \"MMMM D, YYYY\";\r\n\r\n const filingAuditYear = getField(item, \"filingaudityear\");\r\n const filingAuditYearFormatted =\r\n filingAuditYear &&\r\n filingAuditYear.replace(\"+000000000000\", \"\").replace(\".0000\", \"\");\r\n const issuerName = getField(item, \"issuername\");\r\n const issuerCik = getField(item, \"issuercik\");\r\n const filingId = getField(item, \"filingid\");\r\n const originalFirmFormId = getField(item, \"originalfirmformid\");\r\n const otherAccountingFirmParticipation = deserializeField(\r\n item,\r\n \"auditnotdividedpercent\"\r\n );\r\n const useRangeIndicator = getField(item, \"userangeindicator\") === \"True\";\r\n\r\n const title = `${filingAuditYearFormatted}${\r\n filingAuditYear ? ` ${issuerName}` : `${issuerName}`\r\n }${issuerCik ? ` CIK (${padZerosToString(issuerCik)})` : \"\"}`;\r\n const titleHref =\r\n filingId &&\r\n originalFirmFormId &&\r\n `/resources/auditorsearch/form-ap-filing?filingid=${filingId}&originalfirmformid=${originalFirmFormId}`;\r\n return (\r\n
\r\n
\r\n

\r\n {titleHref ? {title} :
{title}
}\r\n

\r\n {getField(item, \"firmname\") && (\r\n

\r\n Firm Name:\r\n {` ${getField(item, \"firmname\")}`}\r\n

\r\n )}\r\n {getField(item, \"firmcountrymasked\") && (\r\n

\r\n Firm Location:\r\n {` ${getField(item, \"firmcountrymasked\")}`}\r\n

\r\n )}\r\n {getField(item, \"filingdate\") && (\r\n

\r\n Filing Date:\r\n {` ${moment(getField(item, \"filingdate\"), dateParsingFormat).format(\r\n dateDisplayFormat\r\n )}`}\r\n

\r\n )}\r\n {otherAccountingFirmParticipation && (\r\n <>\r\n
\r\n Participation of Other Accounting Firms:\r\n
\r\n
    \r\n {otherAccountingFirmParticipation[0].map((firm) => {\r\n return (\r\n
  • {`${firm.FirmName}${\r\n firm.FirmID ? ` (${firm.FirmID})` : \"\"\r\n } – ${firm.Country} – ${\r\n useRangeIndicator ? firm.Range : `${firm.Percentage}%`\r\n }`}
  • \r\n );\r\n })}\r\n
\r\n \r\n )}\r\n
\r\n {titleHref ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport moment from \"moment\";\r\nimport {\r\n getField,\r\n deserializeField,\r\n padZerosToString,\r\n} from \"../../../../util/DynamicItemUtils\";\r\n\r\nexport default function DeniedIssuerAuditClient({ item }: any) {\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n const dateDisplayFormat = \"MMMM D, YYYY\";\r\n\r\n const filingAuditYear = getField(item, \"filingaudityear\");\r\n const filingAuditYearFormatted =\r\n filingAuditYear &&\r\n filingAuditYear.replace(\"+000000000000\", \"\").replace(\".0000\", \"\");\r\n const issuerName = getField(item, \"issuername\");\r\n const issuerCik = getField(item, \"issuercik\");\r\n const filingId = getField(item, \"filingid\");\r\n const originalFirmFormId = getField(item, \"originalfirmformid\");\r\n const otherAccountingFirmParticipation = deserializeField(\r\n item,\r\n \"auditnotdividedpercent\"\r\n );\r\n const useRangeIndicator = getField(item, \"userangeindicator\") === \"True\";\r\n\r\n const title = `${filingAuditYearFormatted}${\r\n filingAuditYear ? ` ${issuerName}` : `${issuerName}`\r\n }${issuerCik ? ` CIK (${padZerosToString(issuerCik)})` : \"\"}`;\r\n const titleHref =\r\n filingId &&\r\n originalFirmFormId &&\r\n `/resources/auditorsearch/form-ap-filing?filingid=${filingId}&originalfirmformid=${originalFirmFormId}`;\r\n return (\r\n
\r\n
\r\n

\r\n {titleHref ? {title} :
{title}
}\r\n

\r\n {getField(item, \"firmname\") && (\r\n

\r\n Firm Name:\r\n {` ${getField(item, \"firmname\")}`}\r\n

\r\n )}\r\n {getField(item, \"firmcountrymasked\") && (\r\n

\r\n Firm Location:\r\n {` ${getField(item, \"firmcountrymasked\")}`}\r\n

\r\n )}\r\n {getField(item, \"filingdate\") && (\r\n

\r\n Filing Date:\r\n {` ${moment(getField(item, \"filingdate\"), dateParsingFormat).format(\r\n dateDisplayFormat\r\n )}`}\r\n

\r\n )}\r\n {otherAccountingFirmParticipation && (\r\n <>\r\n
\r\n Participation of Other Accounting Firms:\r\n
\r\n
    \r\n {otherAccountingFirmParticipation[0].map((firm) => {\r\n return (\r\n
  • {`${firm.FirmName}${\r\n firm.FirmID ? ` (${firm.FirmID})` : \"\"\r\n } – ${firm.Country} – ${\r\n useRangeIndicator ? firm.Range : `${firm.Percentage}%`\r\n }`}
  • \r\n );\r\n })}\r\n
\r\n \r\n )}\r\n
\r\n {titleHref ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport moment from \"moment\";\r\nimport axios, { CancelToken } from \"axios\";\r\nimport {\r\n ResultItemProps,\r\n HawkClient,\r\n useHawkConfig,\r\n SearchResponse,\r\n Result,\r\n} from \"react-hawksearch\";\r\nimport {\r\n getField,\r\n padZerosToString,\r\n deserializeField,\r\n formatDate\r\n} from \"../../../../util/DynamicItemUtils\";\r\n\r\nimport RegisteredFirms from \"./RegisteredFirms\";\r\nimport FormAPFileDetails from \"./FormAPFilingDetails\";\r\nimport ChinaBasedReferredWork from \"./ChinaBasedReferredWork\";\r\nimport DeniedIssuerAuditClient from \"./DeniedIssuerAuditClient\";\r\n\r\nexport default function FormAPFiling({ item, shouldToggle }: any) {\r\n // client setup for hawksearch api call\r\n const { config } = useHawkConfig();\r\n const client = new HawkClient(config);\r\n\r\n const urlSearchString = window.location.search;\r\n const urlParams = new URLSearchParams(urlSearchString);\r\n\r\n const [expandedFirms, setExpandedFirms] = useState(false);\r\n const [formData, setFormData] = useState([] as ResultItemProps[]);\r\n const [formDataLoaded, setFormDataLoaded] = useState(false);\r\n const [activeFormIndex, setActiveFormIndex] = useState(0);\r\n\r\n const dateParsingFormat = \"YYYY-MM-DDTHH:mm:ssZ\";\r\n const urlString = window.location.href;\r\n\r\n const issuerTicker = getField(item, \"issuerticker\");\r\n const issuerCikExists = !(getField(item, \"issuerciknone\") === \"True\");\r\n const issuerCik = getField(item, \"issuercik\");\r\n const otherParticpatingFirmInfo = deserializeField(\r\n item,\r\n \"otherparticipantinfo\"\r\n );\r\n const originalFirmFormId = getField(item, \"originalfirmformid\");\r\n\r\n let divclass = \"\";\r\n getField(item, \"iscurrent\") === \"True\" ? \"\" : (divclass = \"superseded\");\r\n\r\n useEffect(() => {\r\n if (shouldToggle !== expandedFirms) {\r\n setExpandedFirms(shouldToggle);\r\n }\r\n }, [shouldToggle])\r\n\r\n async function getFormFilingData(cancellationToken?: CancelToken) {\r\n let response: SearchResponse | null = null;\r\n let activeForm = 0;\r\n\r\n const formParams = {\r\n CustomUrl: \"/resources/auditorsearch/form-ap-filing\",\r\n ClientGuid: config.clientGuid,\r\n FacetSelections: {\r\n originalfirmformid: [originalFirmFormId],\r\n },\r\n IndexName: \"\",\r\n };\r\n\r\n try {\r\n response = await client.search(formParams, cancellationToken);\r\n } catch (error) {\r\n if (axios.isCancel(error)) {\r\n return;\r\n }\r\n\r\n console.error(\"Search request error:\", error);\r\n }\r\n\r\n if (response && response.Results && response.Results.length > 1) {\r\n const orderedResults = [...response.Results]\r\n .sort(({ Document: documentA }, { Document: documentB }) => {\r\n if (\r\n documentA.filingdate &&\r\n documentA.filingdate.length > 0 &&\r\n documentB.filingdate &&\r\n documentB.filingdate.length > 0\r\n ) {\r\n if (\r\n moment(documentA.filingdate[0]).isAfter(documentB.filingdate[0])\r\n ) {\r\n return -1;\r\n } else if (\r\n moment(documentA.filingdate[0]).isBefore(documentB.filingdate[0])\r\n ) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n } else {\r\n return 0;\r\n }\r\n })\r\n .map((doc, i) => {\r\n if (\r\n doc.Document &&\r\n doc.Document.filingid &&\r\n doc.Document.filingid.length > 0\r\n ) {\r\n if (doc.Document.filingid[0] === urlParams.get(\"filingid\")) {\r\n activeForm = i;\r\n }\r\n }\r\n return new Result(doc);\r\n });\r\n\r\n setFormDataLoaded(true);\r\n setFormData(orderedResults);\r\n setActiveFormIndex(activeForm);\r\n }\r\n }\r\n\r\n function formatIssuerTickerandCik() {\r\n let tickerCikString = \"\";\r\n if (issuerTicker && issuerCikExists) {\r\n tickerCikString = `(${issuerTicker} | ${padZerosToString(issuerCik)})`;\r\n }\r\n if (issuerTicker && !issuerCikExists) {\r\n tickerCikString = `(${issuerTicker})`;\r\n }\r\n if (!issuerTicker && issuerCikExists) {\r\n tickerCikString = `(${padZerosToString(issuerCik)})`;\r\n }\r\n return tickerCikString;\r\n }\r\n\r\n function populateNewFormData(index) {\r\n urlParams.set(\"filingid\", getField(formData[index], \"filingid\"));\r\n const newParams = urlParams.toString();\r\n window.history.replaceState(\r\n null,\r\n \"\",\r\n `/resources/auditorsearch/form-ap-filing?${newParams}`\r\n );\r\n setActiveFormIndex(index);\r\n }\r\n\r\n let page;\r\n switch (true) {\r\n case urlString.includes(\"filingid=\"):\r\n page = null;\r\n if (!formDataLoaded) {\r\n getFormFilingData();\r\n }\r\n if (formData.length > 1) {\r\n page = (\r\n
\r\n
    \r\n {formData.map((data, i) => {\r\n const isCurrent = i === 0;\r\n const isLast = i === formData.length - 1;\r\n return (\r\n
  • \r\n populateNewFormData(i)}\r\n >\r\n
    \r\n \r\n {moment(\r\n getField(data, \"filingdate\"),\r\n dateParsingFormat\r\n ).format(formatDate(getField(data, \"filingdate\")))}\r\n \r\n
    \r\n
    {`Form AP${!isLast ? \"/A\" : \"\"}`}
    \r\n
    \r\n \r\n {isCurrent ? (\r\n (current)\r\n ) : (\r\n \"(superceded)\"\r\n )}\r\n \r\n
    \r\n \r\n
  • \r\n );\r\n })}\r\n
\r\n \r\n
\r\n );\r\n }\r\n if (formData.length === 1) {\r\n page = ;\r\n }\r\n if (formData.length < 1) {\r\n page = ;\r\n }\r\n break;\r\n\r\n case urlString.includes(\"/registered-firms\"):\r\n page = ;\r\n break;\r\n\r\n case urlString.includes(\"/china-referred-work\"):\r\n page = ;\r\n break;\r\n\r\n case urlString.includes(\"/denied-access-to-inspections\"):\r\n page = ;\r\n break;\r\n\r\n default:\r\n page = (\r\n
\r\n
\r\n
\r\n
\r\n Form AP Filing {divclass}\r\n
\r\n
\r\n \r\n {moment(\r\n getField(item, \"filingdate\"),\r\n dateParsingFormat\r\n ).format(formatDate(getField(item, \"filingdate\")))}\r\n \r\n
\r\n
\r\n
\r\n
Year
\r\n
\r\n {getField(item, \"filingaudityear\") &&\r\n getField(item, \"filingaudityear\")\r\n .replace(\"+000000000000\", \"\")\r\n .replace(\".0000\", \"\")}\r\n
\r\n
\r\n
\r\n
Engagement Partner
\r\n
\r\n \r\n {getField(item, \"engagementpartnername\")}\r\n \r\n
\r\n
\r\n
\r\n
Firm
\r\n
\r\n \r\n {getField(item, \"firmname\")} ({getField(item, \"firmid\")})\r\n \r\n
\r\n
\r\n
\r\n
Issuer
\r\n
\r\n {getField(item, \"issuerid\") && issuerCikExists ? (\r\n \r\n {`${getField(\r\n item,\r\n \"issuername\"\r\n )} ${formatIssuerTickerandCik()}`}\r\n \r\n ) : (\r\n
{`${getField(\r\n item,\r\n \"issuername\"\r\n )} ${formatIssuerTickerandCik()}`}
\r\n )}\r\n
\r\n
\r\n {otherParticpatingFirmInfo ? (\r\n
\r\n setExpandedFirms(!expandedFirms)}\r\n >\r\n Other Participating Firms\r\n \r\n
\r\n \r\n {otherParticpatingFirmInfo[0].map((f) => {\r\n let firmElement;\r\n if (f.FirmID) {\r\n firmElement = (\r\n
  • \r\n {`${f.FirmName} (${f.FirmID})`}\r\n
  • \r\n );\r\n } else {\r\n firmElement = (\r\n
  • {f.FirmName}
  • \r\n );\r\n }\r\n return firmElement;\r\n })}\r\n \r\n
    \r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n );\r\n break;\r\n }\r\n\r\n return page;\r\n}\r\n","import React from \"react\";\r\nimport { getField } from \"../../../util/DynamicItemUtils\";\r\n\r\nimport FormAPFiling from \"./FormAPFiling\";\r\n\r\nexport default function DefaultItem({ item, toggle }: any) {\r\n return getField(item, \"contenttypetitle\") ? (\r\n \r\n ) : (\r\n
    \r\n

    {getField(item, \"title\")}

    \r\n
    {getField(item, \"content\")}
    \r\n
    \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { getField } from \"../util/DynamicItemUtils\";\r\n\r\nimport PageNode from \"./ContentTypeComponents/PageNode\";\r\nimport EnforcementDocument from \"./ContentTypeComponents/EnforcementDocument\";\r\nimport InspectionReport from \"./ContentTypeComponents/InspectionReport\";\r\nimport NewsRelease from \"./ContentTypeComponents/NewsRelease\";\r\nimport OtherUpdate from \"./ContentTypeComponents/OtherUpdate\";\r\nimport Document from \"./ContentTypeComponents/Document\";\r\nimport DeniedIssuerAuditClient from \"./ContentTypeComponents/DeniedIssuerAuditClient\";\r\nimport SupportingDocumentation from \"./ContentTypeComponents/SupportingDocumentation\";\r\nimport GlobalNetworkFirm from \"./ContentTypeComponents/GlobalNetworkFirm\";\r\nimport StandardsAndInterpretations from \"./ContentTypeComponents/StandardsAndInterpretations\";\r\nimport PcaobOperationsDocument from \"./ContentTypeComponents/PcaobOperationsDocument\";\r\nimport SpeechAndStatement from \"./ContentTypeComponents/SpeechAndStatement\";\r\nimport RulemakingDocket from \"./ContentTypeComponents/RulemakingDocket\";\r\nimport GlobalNetwork from \"./ContentTypeComponents/GlobalNetwork\";\r\nimport PcaobEvent from \"./ContentTypeComponents/PcaobEvent\";\r\nimport Biography from \"./ContentTypeComponents/Biography\";\r\nimport DefaultItem from \"./ContentTypeComponents/Default\";\r\nimport { ResultItemProps, TrackingEvent, useHawkSearch } from 'react-hawksearch';\r\n\r\nfunction ContentTypeDynamicItem({ item, toggle }: any) {\r\n\r\n const {\r\n store: { searchResults },\r\n } = useHawkSearch();\r\n\r\n let dynamicItem;\r\n switch (getField(item, \"contenttype\")) {\r\n case \"Telerik.Sitefinity.Pages.Model.PageNode\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.EnforcementDocuments.EnforcementDocument\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.InspectionReports.InspectionReport\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.NewsReleases.NewsRelease\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.OtherUpdates.OtherUpdate\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.Libraries.Model.Document\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.DeniedIssuerAuditClients.DeniedIssuerAuditClient\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.SupportingDocumentation.SupportingDocumentation\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.GlobalNetworkFirms.GlobalNetworkFirm\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.StandardsAndInterpretations.StandardsAndInterpretations\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.PcaobOperationsDocuments.PcaobOperationsDocument\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.SpeechAndStatement.SpeechAndStatement\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.RulemakingDocket.RulemakingDocket\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.GlobalNetworks.GlobalNetwork\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.PcaobEvents.PcaobEvent\":\r\n dynamicItem = ;\r\n break;\r\n\r\n case \"Telerik.Sitefinity.DynamicTypes.Model.Biography.Biography\":\r\n dynamicItem = ;\r\n break;\r\n\r\n default:\r\n dynamicItem = ;\r\n break;\r\n }\r\n\r\n const pageurl = window.location.href;\r\n const isAuditorSearchPage = pageurl.includes(\"/auditorsearch/\") && !pageurl.includes(\"filingid=\");\r\n const isFormAPFilePage = pageurl.includes(\"filingid=\");\r\n\r\n return (\r\n
    {\r\n TrackingEvent.track('click', {\r\n event: e,\r\n uniqueId: item.DocId,\r\n trackingId: searchResults.TrackingId\r\n });\r\n }}>\r\n
    {dynamicItem}
    \r\n
    \r\n );\r\n}\r\n\r\nexport default ContentTypeDynamicItem;\r\n","import React, { useEffect } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\n\r\nimport {\r\n HawkSearch,\r\n QueryStringListener,\r\n SearchBox,\r\n FacetRail,\r\n Results,\r\n parseLocation,\r\n tConfig,\r\n TrackingEvent\r\n} from \"react-hawksearch\";\r\nimport ContentTypeDynamicItem from \"../components/ContentTypeDynamicItem\";\r\nimport SitefinityResultItem from \"../components/SitefinityResultItem\";\r\nimport \"react-hawksearch/dist/esm/react-hawksearch.css\";\r\n\r\nimport { parseApiUrl, getDashboardUrl } from \"../util/helper\";\r\n\r\nwindow.addEventListener(\"load\", () => {\r\n var components = document.querySelectorAll(\r\n '[data-component=\"react-app-custom\"]'\r\n );\r\n\r\n if (components) {\r\n components.forEach((component) => {\r\n var dashboardUrl = getDashboardUrl(\r\n component.getAttribute(\"data-hawksearch-base-api\")\r\n );\r\n var apiUrlObj = parseApiUrl({\r\n searchApi: component.getAttribute(\"data-hawksearch-search-api\"),\r\n autocompleteApi: component.getAttribute(\r\n \"data-hawksearch-autocomplete-api\"\r\n ),\r\n });\r\n\r\n let hawkConfig = {\r\n clientGuid: component.getAttribute(\"data-client-guid\"),\r\n dashboardUrl: dashboardUrl,\r\n searchPageUrl: location.pathname,\r\n indexName: component.getAttribute(\"data-index-name\"),\r\n trackEventUrl: component.getAttribute('data-hawksearch-tracking-api'),\r\n indexNameRequired: false,\r\n facetTruncateLimit: parseInt(\r\n component.getAttribute(\"data-facet-truncate-limit\"),\r\n 10\r\n ),\r\n ...apiUrlObj,\r\n };\r\n\r\n var showSearchBox =\r\n component.getAttribute(\"data-show-searchbox\") == \"True\";\r\n\r\n // pull the initial search from location\r\n let searchRequest = parseLocation(location, location.pathname);\r\n\r\n // on issuer pages, filter out issuerid for the initial api request\r\n if (location.href.includes(\"issuerid=\")) {\r\n const {\r\n FacetSelections: { issuerid, issuercik },\r\n ...searchRequestWithoutIssuerIdProperty\r\n } = searchRequest;\r\n searchRequest = Object.assign(searchRequestWithoutIssuerIdProperty, {\r\n FacetSelections: { issuercik },\r\n });\r\n }\r\n\r\n var trackingEvents = component.getAttribute('data-tracking-events');\r\n\r\n if (trackingEvents) {\r\n try {\r\n hawkConfig.trackConfig = JSON.parse(trackingEvents);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n console.error(\"Wrong Track event configuration\");\r\n }\r\n }\r\n\r\n\r\n // used to set high level css class to hide facets with css based on page\r\n const hideAllFacets = location.href.includes(\"filingid=\");\r\n\r\n const hideQueryFacet =\r\n location.href.includes(\"issuercik=\") ||\r\n location.href.includes(\"firmid=\") ||\r\n location.href.includes(\"engagementpartnermasterid=\");\r\n\r\n if (component.getAttribute(\"data-json-params\")) {\r\n try {\r\n var additionalParameters = JSON.parse(\r\n component.getAttribute(\"data-json-params\")\r\n );\r\n\r\n hawkConfig.additionalParameters = additionalParameters;\r\n\r\n if (additionalParameters.hasOwnProperty(\"CustomUrl\")) {\r\n searchRequest.CustomUrl = additionalParameters.CustomUrl.replace(\r\n /\\/$/,\r\n \"\"\r\n );\r\n hawkConfig.CustomUrl = additionalParameters.CustomUrl.replace(\r\n /\\/$/,\r\n \"\"\r\n );\r\n }\r\n } catch (e) { }\r\n }\r\n\r\n // apply translations if available\r\n var translationsEl = document.querySelectorAll(\r\n '[data-translations=\"react-translations\"]'\r\n );\r\n\r\n if (translationsEl && translationsEl.length) {\r\n var translations = JSON.parse(translationsEl[0].innerHTML);\r\n\r\n tConfig.addResourceBundle(\r\n \"custom\",\r\n \"translation\",\r\n translations,\r\n true,\r\n true\r\n );\r\n tConfig.changeLanguage(\"custom\");\r\n }\r\n\r\n function App() {\r\n useEffect(() => {\r\n TrackingEvent.track('pageload', { pageType: hawkConfig.CustomUrl ? 'landing' : 'custom' });\r\n }, []);\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n {showSearchBox ? : null}\r\n
    \r\n\r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n ReactDOM.render(, component);\r\n });\r\n }\r\n});\r\n","import '@babel/polyfill';\r\nimport 'url-polyfill';\r\nimport 'core-js/es6/string';\r\n\r\nimport { polyfill as arrayForEachPolyfill } from 'foreach-polyfill';\r\nimport { customPolyfills } from './util/helper';\r\n\r\narrayForEachPolyfill();\r\ncustomPolyfills();\r\n\r\nimport 'rheostat/css/rheostat.css';\r\nimport 'react-dates/lib/css/_datepicker.css';\r\n\r\nimport ThemedStyleSheet from 'react-hawksearch/node_modules/react-with-styles/lib/ThemedStyleSheet';\r\nimport cssInterface from 'react-hawksearch/node_modules/react-with-styles-interface-css';\r\nimport RheostatDefaultTheme from 'rheostat/lib/themes/DefaultTheme';\r\nimport ReactDatesDefaultTheme from 'react-dates/lib/theme/DefaultTheme';\r\n\r\nThemedStyleSheet.registerInterface(cssInterface);\r\nThemedStyleSheet.registerTheme({\r\n\t...RheostatDefaultTheme,\r\n\t...ReactDatesDefaultTheme,\r\n});\r\n\r\nimport \"./widgets/hawksearch-box\";\r\nimport \"./widgets/hawksearch-results\";"],"sourceRoot":""}