{"version":3,"sources":["../main.js","../webpack/bootstrap 56e1b231e2a38504906e","../node_modules/axios/lib/utils.js","../node_modules/loglevel/lib/loglevel.js","settings.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_getMapData.js","../node_modules/store/src/util.js","../node_modules/webpack/buildin/global.js","../node_modules/lodash/get.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_root.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/isObject.js","../node_modules/store/dist/store.modern.js","liid.js","../node_modules/axios/lib/defaults.js","../node_modules/promise/lib/core.js","../node_modules/js-cookie/src/js.cookie.js","../node_modules/load-js/index.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/eq.js","../node_modules/lodash/_toKey.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/tiny-sha256/index.js","../config/polyfills.js","../node_modules/promise/lib/rejection-tracking.js","../node_modules/asap/browser-raw.js","../node_modules/promise/lib/es6-extensions.js","../node_modules/object-assign/index.js","index.js","../node_modules/when-dom-ready/dist/index.es2015.js","bootstrap.js","Sailthru.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_arrayMap.js","Braze.js","../node_modules/store/src/store-engine.js","../node_modules/store/storages/localStorage.js","../node_modules/store/storages/sessionStorage.js","../node_modules/store/storages/cookieStorage.js","../node_modules/store/storages/memoryStorage.js","../node_modules/uuid/v4.js","../node_modules/uuid/lib/rng-browser.js","../node_modules/uuid/lib/bytesToUuid.js","PIP.js","../node_modules/lodash/set.js","../node_modules/lodash/_baseSet.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_isIndex.js","../node_modules/ismobilejs/isMobile.js","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/webpack/buildin/amd-options.js","../node_modules/axios/index.js","../node_modules/axios/lib/axios.js","../node_modules/is-buffer/index.js","../node_modules/axios/lib/core/Axios.js","../node_modules/process/browser.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/btoa.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","message.js","../node_modules/nonce/index.js","MediaOS.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","isArray","val","toString","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isObject","isDate","isFile","isBlob","isFunction","isStream","pipe","isURLSearchParams","URLSearchParams","trim","str","replace","isStandardBrowserEnv","navigator","product","window","document","forEach","obj","fn","length","key","merge","assignValue","result","arguments","extend","a","b","thisArg","bind","isBuffer","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","root","definition","undefined","this","bindMethod","methodName","method","Function","e","apply","realMethod","console","undefinedType","log","noop","replaceLoggingMethods","level","loggerName","logMethods","methodFactory","debug","enableLoggingWhenConsoleArrives","defaultMethodFactory","Logger","defaultLevel","factory","persistLevelIfPossible","levelNum","levelName","toUpperCase","localStorage","storageKey","ignore","cookie","encodeURIComponent","getPersistedLevel","storedLevel","location","indexOf","exec","slice","self","levels","currentLevel","TRACE","DEBUG","INFO","WARN","ERROR","SILENT","getLevel","setLevel","persist","setDefaultLevel","enableAll","disableAll","initialLevel","defaultLogger","_loggersByName","getLogger","TypeError","logger","_log","noConflict","getLoggers","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0_loglevel__","__WEBPACK_IMPORTED_MODULE_0_loglevel___default","settings","defaultLogLevel","timeout","sessionLength","sailthru","scripts","braze","enableHtmlInAppMessages","METAPHOR_SETTINGS","getNative","nativeCreate","assocIndexOf","array","eq","getMapData","map","data","__data__","isKeyable","global","Array","arr","index","each","pluck","res","isList","v","k","assign","props1","props2","etc","create","F","assignProps1","assignProps2","assignArgsList","concat","String","Global","g","eval","path","defaultValue","baseGet","isSymbol","value","isObjectLike","baseGetTag","symbolTag","Symbol","freeGlobal","freeSelf","getValue","baseIsNative","type","engine","storages","plugins","createStore","liid","__WEBPACK_IMPORTED_MODULE_1_store_dist_store_modern___default","enabled","error","__WEBPACK_IMPORTED_MODULE_2_uuid_v4___default","liidValue","liidKey","set","__WEBPACK_IMPORTED_MODULE_1_store_dist_store_modern__","__WEBPACK_IMPORTED_MODULE_2_uuid_v4__","Metaphor","getLiid","process","setContentTypeIfUnset","headers","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","defaults","adapter","XMLHttpRequest","transformRequest","JSON","stringify","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","Accept","getThen","then","ex","LAST_ERROR","IS_ERROR","tryCallOne","tryCallTwo","Promise","_75","_83","_18","_38","doResolve","safeThen","onFulfilled","onRejected","constructor","resolve","reject","handle","Handler","deferred","_47","push","handleResolved","asap","cb","promise","ret","newValue","finale","_71","done","reason","_44","registeredInModuleLoader","OldCookies","Cookies","api","attributes","init","converter","expires","Date","setMilliseconds","getMilliseconds","toUTCString","test","write","decodeURIComponent","escape","stringifiedAttributes","attributeName","cookies","split","rdecode","parts","join","json","charAt","read","getJSON","remove","withConverter","require","r","t","u","Error","code","1","url","id","allowExternal","getElementById","loadJS","warn","querySelector","text","onload","onreadystatechange","readyState","onerror","appendChild","createElement","charset","async","src","cache","getElementsByTagName","documentElement","all","castPath","isKey","stringToPath","undefinedTag","nullTag","symToStringTag","getRawTag","objectToString","toStringTag","other","toKey","INFINITY","args","settle","buildURL","parseHeaders","isURLSameOrigin","createError","btoa","config","requestData","requestHeaders","request","loadEvent","xDomain","XDomainRequest","onprogress","ontimeout","auth","username","password","Authorization","open","params","paramsSerializer","responseURL","responseHeaders","getAllResponseHeaders","responseData","responseType","response","responseText","statusText","xsrfValue","withCredentials","toLowerCase","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","cancel","abort","send","enhanceError","message","__CANCEL__","Cancel","__WEBPACK_AMD_DEFINE_ARRAY__","sha256","ascii","rightRotate","amount","j","mathPow","Math","pow","maxWord","words","asciiBitLength","hash","h","primeCounter","isComposite","candidate","charCodeAt","w","oldHash","w15","w2","temp1","enable","disable","options","onUnhandled","allRejections","matchWhitelist","rejections","whitelist","DEFAULT_WHITELIST","displayId","logged","logError","onHandled","_56","clearTimeout","err","setTimeout","stack","line","list","some","cls","ReferenceError","RangeError","rawAsap","task","queue","requestFlush","flushing","flush","currentIndex","capacity","scan","newLength","makeRequestCallFromTimer","callback","handleTimer","timeoutHandle","clearInterval","intervalHandle","setInterval","scope","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","toggle","observer","node","createTextNode","observe","characterData","valuePromise","TRUE","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","remaining","race","values","toObject","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","keys","target","source","from","symbols","to","__WEBPACK_IMPORTED_MODULE_2__settings__","__WEBPACK_IMPORTED_MODULE_1_when_dom_ready__","__WEBPACK_IMPORTED_MODULE_3__bootstrap__","loadedStates","whenDomReady","doc","resume","syncUserVeryLocal","pip","isSailthruReady","isBrazeReady","fetchCurrentUserData","changeUser","userEmailHash","openSession","setCustomAttributes","sendUserLinkingData","userId","getUserLocationPermissionStatus","getUserLocation","getUserNeighborhoods","sendUserLocationData","setLastKnownLocation","neighborhoods","pushRequest","catch","syncUserMediaOS","cid","__WEBPACK_IMPORTED_MODULE_1_js_cookie___default","__WEBPACK_IMPORTED_MODULE_5__MediaOS__","updateWeather","bootstrap","__WEBPACK_IMPORTED_MODULE_2__Sailthru__","__WEBPACK_IMPORTED_MODULE_3__Braze__","__WEBPACK_IMPORTED_MODULE_4__PIP__","components","__WEBPACK_IMPORTED_MODULE_6__liid__","component","load","VLCL","HRST","__WEBPACK_IMPORTED_MODULE_1_js_cookie__","_classCallCheck","instance","Constructor","__WEBPACK_IMPORTED_MODULE_1_load_js__","__WEBPACK_IMPORTED_MODULE_1_load_js___default","__WEBPACK_IMPORTED_MODULE_2_lodash_get__","__WEBPACK_IMPORTED_MODULE_2_lodash_get___default","__WEBPACK_IMPORTED_MODULE_3__settings__","_typeof","iterator","_createClass","defineProperties","props","descriptor","writable","protoProps","staticProps","Sailthru","parms","currentUserData","usedSignedUp","scriptsFound","customerIdFound","customerId","registerVLWindowMessageHandler","registerMediaOSWindowMessageHandler","_this","event","origin","email","userSignUp","siteId","postMessage","lists","vars","integration","onSuccess","onError","_this2","emailHash","reIsPlainProp","reIsDeepProp","isOwn","tag","unmasked","nativeObjectToString","objectProto","memoizeCapped","rePropName","reEscapeChar","string","match","number","quote","subString","func","memoize","size","MAX_MEMOIZE_SIZE","clear","resolver","FUNC_ERROR_TEXT","memoized","has","Cache","MapCache","entries","entry","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Hash","Map","ListCache","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","reIsNative","reIsHostCtor","toSource","reRegExpChar","funcProto","funcToString","RegExp","funcTag","genTag","asyncTag","proxyTag","maskSrcKey","coreJsData","uid","IE_PROTO","HASH_UNDEFINED","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","pop","splice","arrayProto","baseToString","arrayMap","symbolToString","symbolProto","iteratee","__WEBPACK_IMPORTED_MODULE_3_store_dist_store_modern__","__WEBPACK_IMPORTED_MODULE_3_store_dist_store_modern___default","__WEBPACK_IMPORTED_MODULE_4__settings__","__WEBPACK_IMPORTED_MODULE_5__liid__","Braze","lastPushRequestKey","apiKeyFound","apiKey","appboy","initialize","doNotLoadFontAwesome","safariWebsitePushId","display","automaticallyShowNewInAppMessages","getUser","getUserId","eventName","logCustomEvent","user","addToCustomAttributeArray","isPushSupported","isPushBlocked","isPushPermissionGranted","canRequestPushPermission","now","registerAppboyPushMessages","_location$","lat","lon","neighborhood","lastRequest","_warn","_console","namespace","namespacePrefix","namespaceRegexp","_privateStoreProps","_namespacePrefix","_namespaceRegexp","_testStorage","storage","testStr","ok","_assignPluginFnProp","pluginFnProp","propName","oldFn","super_fn","arg","newFnArgs","_serialize","_deserialize","strVal","defaultVal","_addStorage","_addPlugin","plugin","seenPlugin","pluginProperties","addStorage","store","storeAPI","raw","prop","util","version","optionalDefaultValue","namespacedKey","clearAll","hasNamespace","addPlugin","getItem","setItem","removeItem","sessionStorage","_has","regexpStr","unescape","kvp","_","memoryStorage","v4","buf","offset","rnds","random","rng","ii","bytesToUuid","getRandomValues","crypto","msCrypto","rnds8","Uint8Array","bth","byteToHex","substr","__WEBPACK_IMPORTED_MODULE_1_lodash_get__","__WEBPACK_IMPORTED_MODULE_1_lodash_get___default","__WEBPACK_IMPORTED_MODULE_2_lodash_set__","__WEBPACK_IMPORTED_MODULE_2_lodash_set___default","__WEBPACK_IMPORTED_MODULE_3_ismobilejs__","__WEBPACK_IMPORTED_MODULE_3_ismobilejs___default","__WEBPACK_IMPORTED_MODULE_4_ua_parser_js__","__WEBPACK_IMPORTED_MODULE_4_ua_parser_js___default","__WEBPACK_IMPORTED_MODULE_5_axios__","__WEBPACK_IMPORTED_MODULE_5_axios___default","__WEBPACK_IMPORTED_MODULE_6_js_cookie__","__WEBPACK_IMPORTED_MODULE_6_js_cookie___default","__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern__","__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern___default","__WEBPACK_IMPORTED_MODULE_8_tiny_sha256__","__WEBPACK_IMPORTED_MODULE_8_tiny_sha256___default","__WEBPACK_IMPORTED_MODULE_9__settings__","__WEBPACK_IMPORTED_MODULE_10__liid__","__WEBPACK_IMPORTED_MODULE_11__message__","PIP","globalConfig","ids","lastLocationRequestKey","lastPIPRequestKey","userLocationPermissionGranted","pipUrl","env","topics","allTopics","filteredTopics","filter","topic","topicName","topicManager","topicData","find","rawFormat","endpoint","context","hashed","user_id","user_id_context","user_id_source","sailthruId","brazeId","anonUserCookie","idsDebug","ts","parser","getResult","platform","any","device","user_agent","client_version","site_id","isPIPReady","getUserLinkingIds","getUserLinkingPayload","getApiKey","getDifficulty","postSuccess","post","getEndpoint","requestUrl","hoodieUrl","_this3","permission","permissions","query","state","latitude","longitude","motion_recognition","motion_type","motion_confidence_score","_this4","canRequestUserLocation","enableHighAccuracy","maximumAge","geolocation","getCurrentPosition","setUserLocation","coords","canSendUserLocationToPIP","getUserLocationPayload","baseSet","customizer","lastIndex","nested","objValue","isIndex","baseAssignValue","MAX_SAFE_INTEGER","reIsUint","apple_phone","apple_ipod","apple_tablet","android_phone","android_tablet","amazon_phone","amazon_tablet","windows_phone","windows_tablet","other_blackberry","other_blackberry_10","other_opera","other_chrome","other_firefox","seven_inch","regex","userAgent","IsMobileClass","ua","tmp","apple","phone","ipod","tablet","amazon","android","windows","blackberry","blackberry10","opera","firefox","chrome","instantiate","IM","Class","isMobile","MODEL","NAME","TYPE","VENDOR","VERSION","MOBILE","TABLET","regexes","extensions","margedRegexes","str1","str2","lowerize","major","mapper","rgx","arrays","q","matches","maps","browser","oldsafari","1.0","1.2","1.3","2.0","2.0.2","2.0.3","2.0.4","?","model","Fire Phone","sprint","Evo Shift 4G","vendor","HTC","Sprint","os","ME","NT 3.11","NT 4.0","2000","XP","Vista","7","8","8.1","10","RT","cpu","UAParser","uastring","rgxmap","getBrowser","getCPU","architecture","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","DEVICE","CONSOLE","SMARTTV","WEARABLE","EMBEDDED","ENGINE","OS","$","jQuery","Zepto","__webpack_amd_options__","createInstance","defaultConfig","Axios","axios","instanceConfig","CancelToken","isCancel","promises","spread","default","isSlowBuffer","readFloatLE","_isBuffer","interceptors","InterceptorManager","dispatchRequest","chain","interceptor","unshift","fulfilled","rejected","shift","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","len","run","Item","nextTick","title","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","normalizedName","encode","serializedParams","toISOString","ignoreDuplicateOf","parsed","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hostname","port","pathname","originURL","requestURL","E","input","block","charCode","output","idx","chars","domain","secure","toGMTString","handlers","use","eject","throwIfCancellationRequested","throwIfRequested","transformData","isAbsoluteURL","combineURLs","baseURL","fns","relativeURL","executor","resolvePromise","token","getHeader","epoch","header","apikey","tpc","headerJson","getNonce","NonceGenerator","getCandidateMessage","messageBody","getNumberOfLeadingZeroes","targetString","getPublishedMessageFormat","body","difficulty","candidateHash","__WEBPACK_IMPORTED_MODULE_1_tiny_sha256___default","numLeadingZeroes","__WEBPACK_IMPORTED_MODULE_0_nonce__","__WEBPACK_IMPORTED_MODULE_0_nonce___default","__WEBPACK_IMPORTED_MODULE_1_tiny_sha256__","last","repeat","MediaOS","Dewy","updateUserLocation"],"mappings":"CAAS,SAAUA,GCInB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QAvBA,GAAAD,KA4BAF,GAAAQ,EAAAT,EAGAC,EAAAS,EAAAP,EAGAF,EAAAU,EAAA,SAAAP,EAAAQ,EAAAC,GACAZ,EAAAa,EAAAV,EAAAQ,IACAG,OAAAC,eAAAZ,EAAAQ,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAZ,EAAAmB,EAAA,SAAAf,GACA,GAAAQ,GAAAR,KAAAgB,WACA,WAA2B,MAAAhB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAjB,KAAAc,EAAAC,IAGtDtB,EAAAyB,EAAA,KAGAzB,IAAA0B,EAAA,MDMM,SAAUtB,EAAQD,EAASH,GAEjC,YEpDA,SAAA2B,GAAAC,GACA,yBAAAC,EAAAtB,KAAAqB,GASA,QAAAE,GAAAF,GACA,+BAAAC,EAAAtB,KAAAqB,GASA,QAAAG,GAAAH,GACA,0BAAAI,WAAAJ,YAAAI,UASA,QAAAC,GAAAL,GAOA,MALA,oBAAAM,0BAAA,OACAA,YAAAC,OAAAP,GAEA,GAAAA,EAAA,QAAAA,EAAAQ,iBAAAF,aAWA,QAAAG,GAAAT,GACA,uBAAAA,GASA,QAAAU,GAAAV,GACA,uBAAAA,GASA,QAAAW,GAAAX,GACA,0BAAAA,GASA,QAAAY,GAAAZ,GACA,cAAAA,GAAA,iBAAAA,GASA,QAAAa,GAAAb,GACA,wBAAAC,EAAAtB,KAAAqB,GASA,QAAAc,GAAAd,GACA,wBAAAC,EAAAtB,KAAAqB,GASA,QAAAe,GAAAf,GACA,wBAAAC,EAAAtB,KAAAqB,GASA,QAAAgB,GAAAhB,GACA,4BAAAC,EAAAtB,KAAAqB,GASA,QAAAiB,GAAAjB,GACA,MAAAY,GAAAZ,IAAAgB,EAAAhB,EAAAkB,MASA,QAAAC,GAAAnB,GACA,0BAAAoB,kBAAApB,YAAAoB,iBASA,QAAAC,GAAAC,GACA,MAAAA,GAAAC,QAAA,WAAAA,QAAA,WAgBA,QAAAC,KACA,2BAAAC,YAAA,gBAAAA,UAAAC,WAIA,oBAAAC,SACA,oBAAAC,WAgBA,QAAAC,GAAAC,EAAAC,GAEA,UAAAD,GAAA,oBAAAA,GAUA,GALA,iBAAAA,KAEAA,OAGA/B,EAAA+B,GAEA,OAAArD,GAAA,EAAAC,EAAAoD,EAAAE,OAAmCvD,EAAAC,EAAOD,IAC1CsD,EAAApD,KAAA,KAAAmD,EAAArD,KAAAqD,OAIA,QAAAG,KAAAH,GACA5C,OAAAS,UAAAC,eAAAjB,KAAAmD,EAAAG,IACAF,EAAApD,KAAA,KAAAmD,EAAAG,KAAAH,GAuBA,QAAAI,KAEA,QAAAC,GAAAnC,EAAAiC,GACA,iBAAAG,GAAAH,IAAA,iBAAAjC,GACAoC,EAAAH,GAAAC,EAAAE,EAAAH,GAAAjC,GAEAoC,EAAAH,GAAAjC,EAIA,OATAoC,MASA3D,EAAA,EAAAC,EAAA2D,UAAAL,OAAuCvD,EAAAC,EAAOD,IAC9CoD,EAAAQ,UAAA5D,GAAA0D,EAEA,OAAAC,GAWA,QAAAE,GAAAC,EAAAC,EAAAC,GAQA,MAPAZ,GAAAW,EAAA,SAAAxC,EAAAiC,GAEAM,EAAAN,GADAQ,GAAA,mBAAAzC,GACA0C,EAAA1C,EAAAyC,GAEAzC,IAGAuC,EApRA,GAAAG,GAAAtE,EAAA,IACAuE,EAAAvE,EAAA,KAMA6B,EAAAf,OAAAS,UAAAM,QAgRAzB,GAAAD,SACAwB,UACAG,gBACAyC,WACAxC,aACAE,oBACAI,WACAC,WACAE,WACAD,cACAE,SACAC,SACAC,SACAC,aACAC,WACAE,oBACAK,uBACAK,UACAK,QACAI,SACAjB,SF4EM,SAAU7C,EAAQD,EAASH,GGzXjC,GAAAwE,GAAAC,GAMA,SAAAC,EAAAC,GACA,YAEAH,GAAA,MAAAI,MAAAH,EAAA,mBAAAD,KAAAjE,KAAAJ,EAAAH,EAAAG,EAAAC,GAAAoE,KAAApE,EAAAD,QAAAsE,IAMCI,EAAA,WACD,YAeA,SAAAC,GAAApB,EAAAqB,GACA,GAAAC,GAAAtB,EAAAqB,EACA,uBAAAC,GAAAV,KACA,MAAAU,GAAAV,KAAAZ,EAEA,KACA,MAAAuB,UAAA1D,UAAA+C,KAAA/D,KAAAyE,EAAAtB,GACa,MAAAwB,GAEb,kBACA,MAAAD,UAAA1D,UAAA4D,YAAAH,GAAAtB,EAAAO,cAQA,QAAAmB,GAAAL,GAKA,MAJA,UAAAA,IACAA,EAAA,aAGAM,WAAAC,QAESV,KAAAS,QAAAN,GACTD,EAAAO,QAAAN,OACSH,KAAAS,QAAAE,IACTT,EAAAO,QAAA,OAEAG,GAMA,QAAAC,GAAAC,EAAAC,GAEA,OAAAtF,GAAA,EAAuBA,EAAAuF,EAAAhC,OAAuBvD,IAAA,CAC9C,GAAA0E,GAAAa,EAAAvF,EACAwE,MAAAE,GAAA1E,EAAAqF,EACAF,EACAX,KAAAgB,cAAAd,EAAAW,EAAAC,GAIAd,KAAAU,IAAAV,KAAAiB,MAKA,QAAAC,GAAAhB,EAAAW,EAAAC,GACA,wBACAN,WAAAC,IACAG,EAAAlF,KAAAsE,KAAAa,EAAAC,GACAd,KAAAE,GAAAI,MAAAN,KAAAZ,aAOA,QAAA+B,GAAAjB,EAAAW,EAAAC,GAEA,MAAAP,GAAAL,IACAgB,EAAAZ,MAAAN,KAAAZ,WAGA,QAAAgC,GAAAtF,EAAAuF,EAAAC,GAQA,QAAAC,GAAAC,GACA,GAAAC,IAAAV,EAAAS,IAAA,UAAAE,aAEA,UAAAhD,UAAA+B,EAAA,CAGA,IAEA,YADA/B,OAAAiD,aAAAC,GAAAH,GAEW,MAAAI,IAGX,IACAnD,OAAAC,SAAAmD,OACAC,mBAAAH,GAAA,IAAAH,EAAA,IACW,MAAAI,MAGX,QAAAG,KACA,GAAAC,EAEA,UAAAvD,UAAA+B,EAAA,CAEA,IACAwB,EAAAvD,OAAAiD,aAAAC,GACW,MAAAC,IAGX,SAAAI,KAAAxB,EACA,IACA,GAAAqB,GAAApD,OAAAC,SAAAmD,OACAI,EAAAJ,EAAAK,QACAJ,mBAAAH,GAAA,MACA,IAAAM,IACAD,EAAA,WAA0CG,KAAAN,EAAAO,MAAAH,IAAA,IAE3B,MAAAL,IAQf,WAJA9B,KAAAuC,EAAAC,OAAAN,KACAA,MAAAlC,IAGAkC,GAnDA,GACAO,GADAF,EAAAtC,KAEA4B,EAAA,UACA9F,KACA8F,GAAA,IAAA9F,GAwDAwG,EAAAxG,OAEAwG,EAAAC,QAAqBE,MAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,KAAA,EACrBC,MAAA,EAAAC,OAAA,GAEAR,EAAAtB,cAAAM,GAAAH,EAEAmB,EAAAS,SAAA,WACA,MAAAP,IAGAF,EAAAU,SAAA,SAAAnC,EAAAoC,GAIA,GAHA,iBAAApC,QAAAd,KAAAuC,EAAAC,OAAA1B,EAAAa,iBACAb,EAAAyB,EAAAC,OAAA1B,EAAAa,kBAEA,iBAAAb,OAAA,GAAAA,GAAAyB,EAAAC,OAAAO,QAUA,kDAAAjC,CAJA,IALA2B,EAAA3B,GACA,IAAAoC,GACA1B,EAAAV,GAEAD,EAAAlF,KAAA4G,EAAAzB,EAAA/E,SACA0E,WAAAC,GAAAI,EAAAyB,EAAAC,OAAAO,OACA,0CAOAR,EAAAY,gBAAA,SAAArC,GACAmB,KACAM,EAAAU,SAAAnC,GAAA,IAIAyB,EAAAa,UAAA,SAAAF,GACAX,EAAAU,SAAAV,EAAAC,OAAAE,MAAAQ,IAGAX,EAAAc,WAAA,SAAAH,GACAX,EAAAU,SAAAV,EAAAC,OAAAO,OAAAG,GAIA,IAAAI,GAAArB,GACA,OAAAqB,IACAA,EAAA,MAAAhC,EAAA,OAAAA,GAEAiB,EAAAU,SAAAK,GAAA,GA7LA,GAAA1C,GAAA,aACAF,EAAA,YAEAM,GACA,QACA,QACA,OACA,OACA,SA8LAuC,EAAA,GAAAlC,GAEAmC,IACAD,GAAAE,UAAA,SAAA1H,GACA,oBAAAA,IAAA,KAAAA,EACA,SAAA2H,WAAA,iDAGA,IAAAC,GAAAH,EAAAzH,EAKA,OAJA4H,KACAA,EAAAH,EAAAzH,GAAA,GAAAsF,GACAtF,EAAAwH,EAAAP,WAAAO,EAAAtC,gBAEA0C,EAIA,IAAAC,SAAAjF,UAAA+B,EAAA/B,OAAAgC,QAAAX,EAcA,OAbAuD,GAAAM,WAAA,WAMA,aALAlF,UAAA+B,GACA/B,OAAAgC,MAAA4C,IACA5E,OAAAgC,IAAAiD,GAGAL,GAGAA,EAAAO,WAAA,WACA,MAAAN,IAGAD,KHqYM,SAAU/H,EAAQuI,EAAqB3I,GAE7C,YI/nBA,IAAA4I,GAAA5I,EAAA,GAAA6I,EAAA7I,EAAAmB,EAAAyH,GAIME,iBACJC,gBAAiBF,EAAA1E,EAAIiD,OAAOK,KAC5BuB,QAAS,IACTC,cAAe,KAEfC,UACEC,SACE,qEAIJC,OACED,SACE,oEAEFE,yBAAyB,IAGxB9F,OAAO+F,kBAGZX,GAAA,KJ6mBM,SAAUvI,EAAQD,EAASH,GKtoBjC,GAAAuJ,GAAAvJ,EAAA,IAGAwJ,EAAAD,EAAAzI,OAAA,SAEAV,GAAAD,QAAAqJ,GL6oBM,SAAUpJ,EAAQD,EAASH,GMxoBjC,QAAAyJ,GAAAC,EAAA7F,GAEA,IADA,GAAAD,GAAA8F,EAAA9F,OACAA,KACA,GAAA+F,EAAAD,EAAA9F,GAAA,GAAAC,GACA,MAAAD,EAGA,UAjBA,GAAA+F,GAAA3J,EAAA,GAoBAI,GAAAD,QAAAsJ,GNypBM,SAAUrJ,EAAQD,EAASH,GOnqBjC,QAAA4J,GAAAC,EAAAhG,GACA,GAAAiG,GAAAD,EAAAE,QACA,OAAAC,GAAAnG,GACAiG,EAAA,gBAAAjG,GAAA,iBACAiG,EAAAD,IAdA,GAAAG,GAAAhK,EAAA,GAiBAI,GAAAD,QAAAyJ,GPorBM,SAAUxJ,EAAQD,EAASH,IQrsBjC,SAAAiK,GA+DA,QAAA3F,GAAAZ,EAAAC,GACA,kBACA,MAAAA,GAAAwB,MAAAzB,EAAAwG,MAAA3I,UAAA2F,MAAA3G,KAAA0D,UAAA,KAIA,QAAAiD,GAAAiD,EAAAC,GACA,MAAAF,OAAA3I,UAAA2F,MAAA3G,KAAA4J,EAAAC,GAAA,GAGA,QAAAC,GAAA3G,EAAAC,GACA2G,EAAA5G,EAAA,SAAA9B,EAAAiC,GAEA,MADAF,GAAA/B,EAAAiC,IACA,IAIA,QAAAgG,GAAAnG,EAAAC,GACA,GAAA4G,GAAAC,EAAA9G,QAKA,OAJA4G,GAAA5G,EAAA,SAAA+G,EAAAC,GAEA,MADAH,GAAAG,GAAA/G,EAAA8G,EAAAC,IACA,IAEAH,EAGA,QAAAD,GAAA5G,EAAAC,GACA,GAAA6G,EAAA9G,IACA,OAAArD,GAAA,EAAeA,EAAAqD,EAAAE,OAAcvD,IAC7B,GAAAsD,EAAAD,EAAArD,MACA,MAAAqD,GAAArD,OAIA,QAAAwD,KAAAH,GACA,GAAAA,EAAAlC,eAAAqC,IACAF,EAAAD,EAAAG,MACA,MAAAH,GAAAG,GAOA,QAAA2G,GAAA5I,GACA,aAAAA,GAAA,kBAAAA,IAAA,gBAAAA,GAAAgC,OAGA,QAAAhB,GAAAhB,GACA,MAAAA,IAAiB,yBAAAC,SAAAtB,KAAAqB,GAGjB,QAAAY,GAAAZ,GACA,MAAAA,IAAiB,uBAAAC,SAAAtB,KAAAqB,GApHjB,GAAA+I,GAoBA,WACA,MAAA7J,QAAA6J,OACA7J,OAAA6J,OAEA,SAAAjH,EAAAkH,EAAAC,EAAAC,GACA,OAAAzK,GAAA,EAAkBA,EAAA4D,UAAAL,OAAsBvD,IACxCgK,EAAAvJ,OAAAmD,UAAA5D,IAAA,SAAAuB,EAAAiC,GACAH,EAAAG,GAAAjC,GAGA,OAAA8B,OA7BAqH,EAkCA,WAOA,QAAAC,MANA,MAAAlK,QAAAiK,OACA,SAAArH,EAAAuH,EAAAC,EAAAJ,GACA,GAAAK,GAAAjE,EAAAjD,UAAA,EACA,OAAA0G,GAAAxF,MAAAN,MAAA/D,OAAAiK,OAAArH,IAAA0H,OAAAD,KAIA,SAAAzH,EAAAuH,EAAAC,EAAAJ,GACA,GAAAK,GAAAjE,EAAAjD,UAAA,EAEA,OADA+G,GAAAzJ,UAAAmC,EACAiH,EAAAxF,MAAAN,MAAA,GAAAmG,IAAAI,OAAAD,QA5CAlI,EAiDA,WACA,MAAAoI,QAAA9J,UAAA0B,KACA,SAAAC,GACA,MAAAmI,QAAA9J,UAAA0B,KAAA1C,KAAA2C,IAGA,SAAAA,GACA,MAAAA,GAAAC,QAAA,6CAvDAmI,EAAA,oBAAA/H,eAAA0G,CAEA7J,GAAAD,SACAwK,SACAI,SACA9H,OACAqB,OACA4C,QACAmD,OACAR,MACAS,QACAE,SACA5H,aACAJ,WACA8I,YR6yB6B/K,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,GSl0BxB,GAAAoL,EAGAA,GAAA,WACA,MAAA1G,QAGA,KAEA0G,KAAAtG,SAAA,qBAAAuG,MAAA,QACC,MAAAtG,GAED,iBAAA3B,UACAgI,EAAAhI,QAOAnD,EAAAD,QAAAoL,GTy0BM,SAAUnL,EAAQD,EAASH,GUl0BjC,QAAAkB,GAAAG,EAAAoK,EAAAC,GACA,GAAA1H,GAAA,MAAA3C,MAAAuD,GAAA+G,EAAAtK,EAAAoK,EACA,YAAA7G,KAAAZ,EAAA0H,EAAA1H,EA7BA,GAAA2H,GAAA3L,EAAA,GAgCAI,GAAAD,QAAAe,GVo2BM,SAAUd,EAAQD,GW72BxB,GAAAwB,GAAAuI,MAAAvI,OAEAvB,GAAAD,QAAAwB,GX24BM,SAAUvB,EAAQD,EAASH,GY74BjC,QAAA4L,GAAAC,GACA,sBAAAA,IACAC,EAAAD,IAAAE,EAAAF,IAAAG,EAzBA,GAAAD,GAAA/L,EAAA,IACA8L,EAAA9L,EAAA,IAGAgM,EAAA,iBAwBA5L,GAAAD,QAAAyL,GZ26BM,SAAUxL,EAAQD,EAASH,Gav8BjC,GAAA0E,GAAA1E,EAAA,IAGAiM,EAAAvH,EAAAuH,MAEA7L,GAAAD,QAAA8L,Gb88BM,SAAU7L,EAAQD,EAASH,Gcn9BjC,GAAAkM,GAAAlM,EAAA,IAGAmM,EAAA,gBAAAhF,kBAAArG,iBAAAqG,KAGAzC,EAAAwH,GAAAC,GAAAlH,SAAA,gBAEA7E,GAAAD,QAAAuE,Gd09BM,SAAUtE,EAAQD,EAASH,Gev9BjC,QAAAuJ,GAAAlI,EAAAwC,GACA,GAAAgI,GAAAO,EAAA/K,EAAAwC,EACA,OAAAwI,GAAAR,SAAAjH,GAbA,GAAAyH,GAAArM,EAAA,IACAoM,EAAApM,EAAA,GAeAI,GAAAD,QAAAoJ,Gfy+BM,SAAUnJ,EAAQD,GgBh+BxB,QAAAqC,GAAAqJ,GACA,GAAAS,SAAAT,EACA,cAAAA,IAAA,UAAAS,GAAA,YAAAA,GAGAlM,EAAAD,QAAAqC,GhBggCM,SAAUpC,EAAQD,EAASH,GiB9hCjC,GAAAuM,GAAAvM,EAAA,IAEAwM,GACAxM,EAAA,IACAA,EAAA,IACAA,EAAA,IACAA,EAAA,KAEAyM,IAEArM,GAAAD,QAAAoM,EAAAG,YAAAF,EAAAC,IjBqiCM,SAAUrM,EAAQuI,EAAqB3I,GAE7C,YkBniCA,SAAS2M,KACP,IAAKC,EAAAzI,EAAM0I,QAET,MADAhE,GAAA1E,EAAI2I,MAAM,0BACHC,KAGT,IAAIC,GAAYJ,EAAAzI,EAAMjD,IAAI+L,EAQ1B,OANyB,oBAAdD,KACTA,EAAYD,MACZH,EAAAzI,EAAM+I,IAAID,EAASD,GACnBnE,EAAA1E,EAAI2B,MAAM,sBAGLkH,ElBshCY,GAAIpE,GAAyC5I,EAAoB,GAC7D6I,EAAiD7I,EAAoBmB,EAAEyH,GACvEuE,EAAwDnN,EAAoB,IAC5E4M,EAAgE5M,EAAoBmB,EAAEgM,GkBrjC/GC,EAAApN,EAAA,IAAA+M,EAAA/M,EAAAmB,EAAAiM,GAMMH,EAAU,MAyBhBtE,GAAA,IAEApF,OAAO8J,SAAW9J,OAAO8J,aACzB9J,OAAO8J,SAASC,QAAUX,GlB+hCpB,SAAUvM,EAAQD,EAASH,GAEjC,cAC4B,SAASuN,GmB3jCrC,QAAAC,GAAAC,EAAA5B,IACA6B,EAAAnL,YAAAkL,IAAAC,EAAAnL,YAAAkL,EAAA,mBACAA,EAAA,gBAAA5B,GATA,GAAA6B,GAAA1N,EAAA,GACA2N,EAAA3N,EAAA,KAEA4N,GACAC,eAAA,qCAqBAC,GACAC,QAbA,WACA,GAAAA,EAQA,OAPA,oBAAAC,gBAEAD,EAAA/N,EAAA,IACG,oBAAAuN,KAEHQ,EAAA/N,EAAA,KAEA+N,KAMAE,kBAAA,SAAAnE,EAAA2D,GAEA,MADAE,GAAAF,EAAA,gBACAC,EAAA3L,WAAA+H,IACA4D,EAAA5L,cAAAgI,IACA4D,EAAAnJ,SAAAuF,IACA4D,EAAA7K,SAAAiH,IACA4D,EAAAhL,OAAAoH,IACA4D,EAAA/K,OAAAmH,GAEAA,EAEA4D,EAAAzL,kBAAA6H,GACAA,EAAA1H,OAEAsL,EAAA3K,kBAAA+G,IACA0D,EAAAC,EAAA,mDACA3D,EAAAjI,YAEA6L,EAAAlL,SAAAsH,IACA0D,EAAAC,EAAA,kCACAS,KAAAC,UAAArE,IAEAA,IAGAsE,mBAAA,SAAAtE,GAEA,oBAAAA,GACA,IACAA,EAAAoE,KAAAG,MAAAvE,GACO,MAAA5E,IAEP,MAAA4E,KAOAd,QAAA,EAEAsF,eAAA,aACAC,eAAA,eAEAC,kBAAA,EAEAC,eAAA,SAAAC,GACA,MAAAA,IAAA,KAAAA,EAAA,KAIAZ,GAAAL,SACAkB,QACAC,OAAA,sCAIAlB,EAAAjK,SAAA,gCAAAuB,GACA8I,EAAAL,QAAAzI,QAGA0I,EAAAjK,SAAA,+BAAAuB,GACA8I,EAAAL,QAAAzI,GAAA0I,EAAA5J,MAAA8J,KAGAxN,EAAAD,QAAA2N,InBskC6BvN,KAAKJ,EAASH,EAAoB,OAIzD,SAAUI,EAAQD,EAASH,GAEjC,YoBvqCA,SAAAwF,MAqBA,QAAAqJ,GAAAnL,GACA,IACA,MAAAA,GAAAoL,KACG,MAAAC,GAEH,MADAC,GAAAD,EACAE,GAIA,QAAAC,GAAAvL,EAAAQ,GACA,IACA,MAAAR,GAAAQ,GACG,MAAA4K,GAEH,MADAC,GAAAD,EACAE,GAGA,QAAAE,GAAAxL,EAAAQ,EAAAC,GACA,IACAT,EAAAQ,EAAAC,GACG,MAAA2K,GAEH,MADAC,GAAAD,EACAE,GAMA,QAAAG,GAAAzL,GACA,oBAAAkB,MACA,SAAAyD,WAAA,uCAEA,uBAAA3E,GACA,SAAA2E,WAAA,mDAEAzD,MAAAwK,IAAA,EACAxK,KAAAyK,IAAA,EACAzK,KAAA0K,IAAA,KACA1K,KAAA2K,IAAA,KACA7L,IAAA6B,GACAiK,EAAA9L,EAAAkB,MAeA,QAAA6K,GAAAvI,EAAAwI,EAAAC,GACA,UAAAzI,GAAA0I,YAAA,SAAAC,EAAAC,GACA,GAAAxF,GAAA,GAAA6E,GAAA5J,EACA+E,GAAAuE,KAAAgB,EAAAC,GACAC,EAAA7I,EAAA,GAAA8I,GAAAN,EAAAC,EAAArF,MAGA,QAAAyF,GAAA7I,EAAA+I,GACA,SAAA/I,EAAAmI,KACAnI,IAAAoI,GAKA,IAHAH,EAAAe,KACAf,EAAAe,IAAAhJ,GAEA,IAAAA,EAAAmI,IACA,WAAAnI,EAAAkI,KACAlI,EAAAkI,IAAA,OACAlI,EAAAqI,IAAAU,IAGA,IAAA/I,EAAAkI,KACAlI,EAAAkI,IAAA,OACAlI,EAAAqI,KAAArI,EAAAqI,IAAAU,SAGA/I,GAAAqI,IAAAY,KAAAF,EAGAG,GAAAlJ,EAAA+I,GAGA,QAAAG,GAAAlJ,EAAA+I,GACAI,EAAA,WACA,GAAAC,GAAA,IAAApJ,EAAAmI,IAAAY,EAAAP,YAAAO,EAAAN,UACA,WAAAW,EAMA,YALA,IAAApJ,EAAAmI,IACAQ,EAAAI,EAAAM,QAAArJ,EAAAoI,KAEAQ,EAAAG,EAAAM,QAAArJ,EAAAoI,KAIA,IAAAkB,GAAAvB,EAAAqB,EAAApJ,EAAAoI,IACAkB,KAAAxB,EACAc,EAAAG,EAAAM,QAAAxB,GAEAc,EAAAI,EAAAM,QAAAC,KAIA,QAAAX,GAAA3I,EAAAuJ,GAEA,GAAAA,IAAAvJ,EACA,MAAA4I,GACA5I,EACA,GAAAmB,WAAA,6CAGA,IACAoI,IACA,iBAAAA,IAAA,mBAAAA,IACA,CACA,GAAA5B,GAAAD,EAAA6B,EACA,IAAA5B,IAAAG,EACA,MAAAc,GAAA5I,EAAA6H,EAEA,IACAF,IAAA3H,EAAA2H,MACA4B,YAAAtB,GAKA,MAHAjI,GAAAmI,IAAA,EACAnI,EAAAoI,IAAAmB,MACAC,GAAAxJ,EAEK,uBAAA2H,GAEL,WADAW,GAAAX,EAAAxK,KAAAoM,GAAAvJ,GAIAA,EAAAmI,IAAA,EACAnI,EAAAoI,IAAAmB,EACAC,EAAAxJ,GAGA,QAAA4I,GAAA5I,EAAAuJ,GACAvJ,EAAAmI,IAAA,EACAnI,EAAAoI,IAAAmB,EACAtB,EAAAwB,KACAxB,EAAAwB,IAAAzJ,EAAAuJ,GAEAC,EAAAxJ,GAEA,QAAAwJ,GAAAxJ,GAKA,GAJA,IAAAA,EAAAkI,MACAW,EAAA7I,IAAAqI,KACArI,EAAAqI,IAAA,MAEA,IAAArI,EAAAkI,IAAA,CACA,OAAAhP,GAAA,EAAmBA,EAAA8G,EAAAqI,IAAA5L,OAAqBvD,IACxC2P,EAAA7I,IAAAqI,IAAAnP,GAEA8G,GAAAqI,IAAA,MAIA,QAAAS,GAAAN,EAAAC,EAAAY,GACA3L,KAAA8K,YAAA,mBAAAA,KAAA,KACA9K,KAAA+K,WAAA,mBAAAA,KAAA,KACA/K,KAAA2L,UASA,QAAAf,GAAA9L,EAAA6M,GACA,GAAAK,IAAA,EACAtG,EAAA4E,EAAAxL,EAAA,SAAAkI,GACAgF,IACAA,GAAA,EACAf,EAAAU,EAAA3E,KACG,SAAAiF,GACHD,IACAA,GAAA,EACAd,EAAAS,EAAAM,KAEAD,IAAAtG,IAAA0E,IACA4B,GAAA,EACAd,EAAAS,EAAAxB,IAhNA,GAAAsB,GAAAtQ,EAAA,IAqBAgP,EAAA,KACAC,IA2BA7O,GAAAD,QAAAiP,EAgBAA,EAAAe,IAAA,KACAf,EAAAwB,IAAA,KACAxB,EAAA2B,IAAAvL,EAEA4J,EAAA7N,UAAAuN,KAAA,SAAAa,EAAAC,GACA,GAAA/K,KAAAgL,cAAAT,EACA,MAAAM,GAAA7K,KAAA8K,EAAAC,EAEA,IAAArF,GAAA,GAAA6E,GAAA5J,EAEA,OADAwK,GAAAnL,KAAA,GAAAoL,GAAAN,EAAAC,EAAArF,IACAA,IpBwzCM,SAAUnK,EAAQD,EAASH,GqBr4CjC,GAAAwE,GAAAC,GAOC,SAAA0B,GACD,GAAA6K,IAAA,CASA,IAPAxM,EAAA,MAAAI,MAAAH,EAAA,mBAAAD,KAAAjE,KAAAJ,EAAAH,EAAAG,EAAAC,GAAAoE,KAAApE,EAAAD,QAAAsE,GACAuM,GAAA,EAGA5Q,EAAAD,QAAAgG,IACA6K,GAAA,GAEAA,EAAA,CACA,GAAAC,GAAA1N,OAAA2N,QACAC,EAAA5N,OAAA2N,QAAA/K,GACAgL,GAAA1I,WAAA,WAEA,MADAlF,QAAA2N,QAAAD,EACAE,KAGC,WACD,QAAAjN,KAGA,IAFA,GAAA7D,GAAA,EACA2D,KACQ3D,EAAA4D,UAAAL,OAAsBvD,IAAA,CAC9B,GAAA+Q,GAAAnN,UAAA5D,EACA,QAAAwD,KAAAuN,GACApN,EAAAH,GAAAuN,EAAAvN,GAGA,MAAAG,GAGA,QAAAqN,GAAAC,GACA,QAAAH,GAAAtN,EAAAgI,EAAAuF,GACA,GAAApN,EACA,wBAAAR,UAAA,CAMA,GAAAS,UAAAL,OAAA,GAKA,GAJAwN,EAAAlN,GACAuH,KAAA,KACK0F,EAAArD,SAAAsD,GAEL,iBAAAA,GAAAG,QAAA,CACA,GAAAA,GAAA,GAAAC,KACAD,GAAAE,gBAAAF,EAAAG,kBAAA,MAAAN,EAAAG,SACAH,EAAAG,UAIAH,EAAAG,QAAAH,EAAAG,QAAAH,EAAAG,QAAAI,cAAA,EAEA,KACA3N,EAAAkK,KAAAC,UAAAtC,GACA,UAAc+F,KAAA5N,KACd6H,EAAA7H,GAEK,MAAAkB,IAML2G,EAJAyF,EAAAO,MAIAP,EAAAO,MAAAhG,EAAAhI,GAHA+C,mBAAAyE,OAAAQ,IACA1I,QAAA,4DAAA2O,oBAKAjO,EAAA+C,mBAAAyE,OAAAxH,IACAA,IAAAV,QAAA,2BAAA2O,oBACAjO,IAAAV,QAAA,UAAA4O,OAEA,IAAAC,GAAA,EAEA,QAAAC,KAAAb,GACAA,EAAAa,KAGAD,GAAA,KAAgCC,GAChC,IAAAb,EAAAa,KAGAD,GAAA,IAAAZ,EAAAa,IAEA,OAAAzO,UAAAmD,OAAA9C,EAAA,IAAAgI,EAAAmG,EAKAnO,IACAG,KAUA,KAJA,GAAAkO,GAAA1O,SAAAmD,OAAAnD,SAAAmD,OAAAwL,MAAA,SACAC,EAAA,mBACA/R,EAAA,EAESA,EAAA6R,EAAAtO,OAAoBvD,IAAA,CAC7B,GAAAgS,GAAAH,EAAA7R,GAAA8R,MAAA,KACAxL,EAAA0L,EAAAnL,MAAA,GAAAoL,KAAA,IAEAzN,MAAA0N,MAAA,MAAA5L,EAAA6L,OAAA,KACA7L,IAAAO,MAAA,MAGA,KACA,GAAAvG,GAAA0R,EAAA,GAAAlP,QAAAiP,EAAAN,mBAKA,IAJAnL,EAAA2K,EAAAmB,KACAnB,EAAAmB,KAAA9L,EAAAhG,GAAA2Q,EAAA3K,EAAAhG,IACAgG,EAAAxD,QAAAiP,EAAAN,oBAEAjN,KAAA0N,KACA,IACA5L,EAAAuH,KAAAG,MAAA1H,GACO,MAAAzB,IAGP,GAAArB,IAAAlD,EAAA,CACAqD,EAAA2C,CACA,OAGA9C,IACAG,EAAArD,GAAAgG,GAEK,MAAAzB,KAGL,MAAAlB,IAsBA,MAnBAmN,GAAAjE,IAAAiE,EACAA,EAAAjQ,IAAA,SAAA2C,GACA,MAAAsN,GAAA5Q,KAAA4Q,EAAAtN,IAEAsN,EAAAuB,QAAA,WACA,MAAAvB,GAAAhM,OACAoN,MAAA,MACIrL,MAAA3G,KAAA0D,aAEJkN,EAAArD,YAEAqD,EAAAwB,OAAA,SAAA9O,EAAAuN,GACAD,EAAAtN,EAAA,GAAAK,EAAAkN,GACAG,SAAA,MAIAJ,EAAAyB,cAAAvB,EAEAF,EAGA,MAAAE,GAAA,iBrBi5CM,SAAUjR,EAAQD,EAASH,GAEjC,GAAI6S,GsBtjDJA,GACA,SAAA3N,GAAa9E,EAAAD,QAAA+E,KAAgQ,WAAY,eAAAA,GAAA4N,EAAAC,EAAA5R,GAAyB,QAAAN,GAAAR,EAAA2S,GAAgB,IAAAD,EAAA1S,GAAA,CAAU,IAAAyS,EAAAzS,GAAA,CAAU,GAAAC,GAAA,kBAAAuS,KAA0C,KAAAG,GAAA1S,EAAA,MAAAuS,GAAAxS,GAAA,EAAwB,IAAA8D,EAAA,MAAAA,GAAA9D,GAAA,EAAoB,IAAAK,GAAA,GAAAuS,OAAA,uBAAA5S,EAAA,IAA8C,MAAAK,GAAAwS,KAAA,mBAAAxS,EAAkC,GAAAD,GAAAsS,EAAA1S,IAAYF,WAAY2S,GAAAzS,GAAA,GAAAE,KAAAE,EAAAN,QAAA,SAAA+E,GAAoD,MAAArE,GAAjBiS,EAAAzS,GAAA,GAAA6E,IAAiBA,IAAezE,IAAAN,QAAA+E,EAAA4N,EAAAC,EAAA5R,GAAsB,MAAA4R,GAAA1S,GAAAF,QAAoB,OAAAgE,GAAA,kBAAA0O,MAAAxS,EAAA,EAAkDA,EAAAc,EAAAyC,OAAWvD,IAAAQ,EAAAM,EAAAd,GAAY,OAAAQ,KAAWsS,GAAA,SAAAjO,EAAA4N,EAAAC,GAAmB,QAAA5R,KAAa,QAAA+D,MAAc,gBAAAA,QAAwBkO,IAAAlO,GAAQ,IAAA/D,GAAA+D,EAAAmO,IAAAnO,EAAAkO,IAAAvS,EAAAiS,EAAA3R,EAAyB,IAAAN,EAAA,MAAAwE,SAAAE,IAAA,qBAAApE,GAAAN,CAAkD,SAAAqE,EAAAoO,cAAA,CAAyB,GAAAnP,GAAA,SAAAe,GAAkB,GAAA4N,GAAA5N,GAAA1B,SAAA+P,eAAArO,EAAoC,IAAA4N,GAAA,cAAAA,EAAAU,OAAA,MAAAnO,SAAAoO,KAAA,qCAAAvO,GAAA4N,GAA2F5N,EAAAmO,KAAA,SAAAnO,GAAoB,GAAA4N,GAAA5N,GAAA1B,SAAAkQ,cAAA,eAAAxO,EAAA,KAAuD,IAAA4N,GAAA,cAAAA,EAAAU,OAAA,MAAAnO,SAAAoO,KAAA,sCAAAvO,GAAA4N,GAA4F5N,EAAAkO,IAAQ,IAAAjP,EAAA,CAAM,GAAA9D,GAAA+O,QAAAU,QAAA3L,EAAyB,OAAAhD,KAAA2R,EAAA3R,GAAAd,MAAsB,IAAA6E,EAAAkO,MAAAlO,EAAAyO,KAAA,SAAAV,OAAA,8CAAkF,IAAAD,IAAA9N,EAAAkO,IAAA,SAAAlO,EAAA4N,GAA2B,UAAA1D,SAAA,SAAA2D,EAAA5R,GAAiC,GAAAN,IAAA,CAASiS,GAAAc,OAAAd,EAAAe,mBAAA,WAAyChT,GAAAiS,EAAAgB,YAAA,WAAAhB,EAAAgB,YAAA,aAAAhB,EAAAgB,aAAAjT,GAAA,EAAAiS,EAAAc,OAAAd,EAAAe,mBAAA,KAAAd,EAAAD,KAAoHA,EAAAiB,QAAA5S,EAAA+D,EAAA8O,YAAAlB,MAAgC,SAAA5N,EAAA4N,GAAe,MAAA5N,GAAA8O,YAAAlB,GAAA1D,QAAAU,QAAAgD,KAA2CC,EAAA,SAAA7N,GAAgB,GAAA4N,GAAAtP,SAAAyQ,cAAA,SAA0M,OAAnKnB,GAAAoB,QAAAhP,EAAAgP,SAAA,QAAApB,EAAAxG,KAAApH,EAAAoH,MAAA,kBAAAwG,EAAAqB,QAAAjP,EAAAiP,MAAArB,EAAAO,GAAAnO,EAAAmO,IAAAnO,EAAAkO,IAAAN,EAAAU,OAAA,YAAAtO,EAAAkO,MAAAN,EAAAsB,IAAAlP,EAAAkO,KAA2IlO,EAAAyO,OAAAb,EAAAa,KAAAzO,EAAAyO,MAAwBb,GAAS5N,GAAK,OAAA/D,KAAA,IAAA+D,EAAAmP,QAAAvB,EAAA3R,GAAA6R,KAAmC,GAAAF,MAAQC,EAAAvP,SAAA8Q,qBAAA,YAAA9Q,SAAA+Q,eAAsE,iBAAAzB,GAAmB,MAAAA,aAAA5I,OAAAkF,QAAAoF,IAAA1B,EAAAjJ,IAAA3E,MAAA4N,IAAsDA,EAAA3S,QAAAgB,IAAA2R,EAAA3S,QAAA4K,OAAA5J,YAAyC,YtB2jD/kE,SAAUf,EAAQD,EAASH,GuB/iDjC,QAAAyU,GAAA5I,EAAAxK,GACA,MAAAM,GAAAkK,GACAA,EAEA6I,EAAA7I,EAAAxK,IAAAwK,GAAA8I,EAAA9S,EAAAgK,IAjBA,GAAAlK,GAAA3B,EAAA,GACA0U,EAAA1U,EAAA,IACA2U,EAAA3U,EAAA,IACA6B,EAAA7B,EAAA,GAiBAI,GAAAD,QAAAsU,GvBmkDM,SAAUrU,EAAQD,EAASH,GwBrkDjC,QAAA+L,GAAAF,GACA,aAAAA,MACAjH,KAAAiH,EAAA+I,EAAAC,EAEAC,OAAAhU,QAAA+K,GACAkJ,EAAAlJ,GACAmJ,EAAAnJ,GAxBA,GAAAI,GAAAjM,EAAA,IACA+U,EAAA/U,EAAA,IACAgV,EAAAhV,EAAA,IAGA6U,EAAA,gBACAD,EAAA,qBAGAE,EAAA7I,IAAAgJ,gBAAArQ,EAkBAxE,GAAAD,QAAA4L,GxB8lDM,SAAU3L,EAAQD,GyBzlDxB,QAAAwJ,GAAAkC,EAAAqJ,GACA,MAAArJ,KAAAqJ,GAAArJ,OAAAqJ,MAGA9U,EAAAD,QAAAwJ,GzBgoDM,SAAUvJ,EAAQD,EAASH,G0BxpDjC,QAAAmV,GAAAtJ,GACA,mBAAAA,IAAAD,EAAAC,GACA,MAAAA,EAEA,IAAA7H,GAAA6H,EAAA,EACA,YAAA7H,GAAA,EAAA6H,IAAAuJ,EAAA,KAAApR,EAjBA,GAAA4H,GAAA5L,EAAA,IAGAoV,EAAA,GAiBAhV,GAAAD,QAAAgV,G1B2qDM,SAAU/U,EAAQD,EAASH,GAEjC,Y2B/rDAI,GAAAD,QAAA,SAAAwD,EAAAU,GACA,kBAEA,OADAgR,GAAA,GAAAnL,OAAAjG,UAAAL,QACAvD,EAAA,EAAmBA,EAAAgV,EAAAzR,OAAiBvD,IACpCgV,EAAAhV,GAAA4D,UAAA5D,EAEA,OAAAsD,GAAAwB,MAAAd,EAAAgR,M3BysDM,SAAUjV,EAAQD,EAASH,GAEjC,Y4BjtDA,IAAA0N,GAAA1N,EAAA,GACAsV,EAAAtV,EAAA,KACAuV,EAAAvV,EAAA,KACAwV,EAAAxV,EAAA,KACAyV,EAAAzV,EAAA,KACA0V,EAAA1V,EAAA,IACA2V,EAAA,oBAAApS,gBAAAoS,MAAApS,OAAAoS,KAAArR,KAAAf,SAAAvD,EAAA,IAEAI,GAAAD,QAAA,SAAAyV,GACA,UAAAxG,SAAA,SAAAU,EAAAC,GACA,GAAA8F,GAAAD,EAAA9L,KACAgM,EAAAF,EAAAnI,OAEAC,GAAA3L,WAAA8T,UACAC,GAAA,eAGA,IAAAC,GAAA,GAAA/H,gBACAgI,EAAA,qBACAC,GAAA,CAiBA,IAXA,oBAAA1S,UACAA,OAAA2S,gBAAA,mBAAAH,IACAN,EAAAG,EAAAxC,OACA2C,EAAA,GAAAxS,QAAA2S,eACAF,EAAA,SACAC,GAAA,EACAF,EAAAI,WAAA,aACAJ,EAAAK,UAAA,cAIAR,EAAAS,KAAA,CACA,GAAAC,GAAAV,EAAAS,KAAAC,UAAA,GACAC,EAAAX,EAAAS,KAAAE,UAAA,EACAT,GAAAU,cAAA,SAAAb,EAAAW,EAAA,IAAAC,GA+DA,GA5DAR,EAAAU,KAAAb,EAAA5Q,OAAAuB,cAAAgP,EAAAK,EAAAxC,IAAAwC,EAAAc,OAAAd,EAAAe,mBAAA,GAGAZ,EAAA/M,QAAA4M,EAAA5M,QAGA+M,EAAAC,GAAA,WACA,GAAAD,IAAA,IAAAA,EAAAjC,YAAAmC,KAQA,IAAAF,EAAArH,QAAAqH,EAAAa,aAAA,IAAAb,EAAAa,YAAA5P,QAAA,WAKA,GAAA6P,GAAA,yBAAAd,GAAAP,EAAAO,EAAAe,yBAAA,KACAC,EAAAnB,EAAAoB,cAAA,SAAApB,EAAAoB,aAAAjB,EAAAkB,SAAAlB,EAAAmB,aACAD,GACAnN,KAAAiN,EAEArI,OAAA,OAAAqH,EAAArH,OAAA,IAAAqH,EAAArH,OACAyI,WAAA,OAAApB,EAAArH,OAAA,aAAAqH,EAAAoB,WACA1J,QAAAoJ,EACAjB,SACAG,UAGAT,GAAAxF,EAAAC,EAAAkH,GAGAlB,EAAA,OAIAA,EAAAhC,QAAA,WAGAhE,EAAA2F,EAAA,gBAAAE,EAAA,KAAAG,IAGAA,EAAA,MAIAA,EAAAK,UAAA,WACArG,EAAA2F,EAAA,cAAAE,EAAA5M,QAAA,cAAA4M,EAAA,eACAG,IAGAA,EAAA,MAMArI,EAAAtK,uBAAA,CACA,GAAA8O,GAAAlS,EAAA,KAGAoX,GAAAxB,EAAAyB,iBAAA5B,EAAAG,EAAAxC,OAAAwC,EAAAtH,eACA4D,EAAAO,KAAAmD,EAAAtH,oBACA1J,EAEAwS,KACAtB,EAAAF,EAAArH,gBAAA6I,GAuBA,GAlBA,oBAAArB,IACArI,EAAAjK,QAAAqS,EAAA,SAAAlU,EAAAiC,GACA,oBAAAgS,IAAA,iBAAAhS,EAAAyT,oBAEAxB,GAAAjS,GAGAkS,EAAAwB,iBAAA1T,EAAAjC,KAMAgU,EAAAyB,kBACAtB,EAAAsB,iBAAA,GAIAzB,EAAAoB,aACA,IACAjB,EAAAiB,aAAApB,EAAAoB,aACO,MAAA9R,GAGP,YAAA0Q,EAAAoB,aACA,KAAA9R,GAMA,mBAAA0Q,GAAA4B,oBACAzB,EAAA0B,iBAAA,WAAA7B,EAAA4B,oBAIA,mBAAA5B,GAAA8B,kBAAA3B,EAAA4B,QACA5B,EAAA4B,OAAAF,iBAAA,WAAA7B,EAAA8B,kBAGA9B,EAAAgC,aAEAhC,EAAAgC,YAAApH,QAAA1B,KAAA,SAAA+I,GACA9B,IAIAA,EAAA+B,QACA/H,EAAA8H,GAEA9B,EAAA,YAIAnR,KAAAiR,IACAA,EAAA,MAIAE,EAAAgC,KAAAlC,O5B2tDM,SAAUzV,EAAQD,EAASH,GAEjC,Y6B54DA,IAAAgY,GAAAhY,EAAA,IAYAI,GAAAD,QAAA,SAAA8X,EAAArC,EAAA1C,EAAA6C,EAAAkB,GACA,GAAAnK,GAAA,GAAAmG,OAAAgF,EACA,OAAAD,GAAAlL,EAAA8I,EAAA1C,EAAA6C,EAAAkB,K7Bq5DM,SAAU7W,EAAQD,EAASH,GAEjC,Y8Br6DAI,GAAAD,QAAA,SAAA0L,GACA,SAAAA,MAAAqM,c9B86DM,SAAU9X,EAAQD,EAASH,GAEjC,Y+B36DA,SAAAmY,GAAAF,GACApT,KAAAoT,UAGAE,EAAA5W,UAAAM,SAAA,WACA,gBAAAgD,KAAAoT,QAAA,KAAApT,KAAAoT,QAAA,KAGAE,EAAA5W,UAAA2W,YAAA,EAEA9X,EAAAD,QAAAgY,G/By7DM,SAAU/X,EAAQD,EAASH,GgC38DjC,GAAAwE,GAAA4T,EAAA3T,GAAA,SAAAwF,EAAA9D,GAEAiS,KAAA5T,EAAA,MAAAI,MAAAH,EAAA,mBAAAD,KAAAW,MAAAhF,EAAAiY,GAAA5T,KAAApE,EAAAD,QAAAsE,IAMCI,EAAA,WAED,GAAAwT,GAAA,QAAAA,GAAAC,GACA,QAAAC,GAAA1M,EAAA2M,GACA,MAAA3M,KAAA2M,EAAA3M,GAAA,GAAA2M,EAyBA,OAnBAnY,GAAAoY,EAHAC,EAAAC,KAAAC,IACAC,EAAAH,EAAA,MAGA1U,EAAA,GAEA8U,KACAC,EAAA,EAAAT,EAAA,OAKAU,EAAAX,EAAAY,EAAAZ,EAAAY,MAEAvO,EAAA2N,EAAA3N,EAAA2N,EAAA3N,MACAwO,EAAAxO,EAAA,OAMAyO,KACAC,EAAA,EAAwBF,EAAA,GAAmBE,IAC3C,IAAAD,EAAAC,GAAA,CACA,IAAA/Y,EAAA,EAAcA,EAAA,IAASA,GAAA+Y,EACvBD,EAAA9Y,GAAA+Y,CAEAJ,GAAAE,GAAAR,EAAAU,EAAA,IAAAP,EAAA,EACAnO,EAAAwO,KAAAR,EAAAU,EAAA,KAAAP,EAAA,EAKA,IADAP,GAAA,OACAA,EAAA,cAAAA,GAAA,IACA,KAAAjY,EAAA,EAAYA,EAAAiY,EAAA,OAA2BjY,IAAA,CAEvC,IADAoY,EAAAH,EAAAe,WAAAhZ,KACA,QACAyY,GAAAzY,GAAA,IAAAoY,IAAA,EAAApY,GAAA,IAMA,IAJAyY,IAAA,QAAAC,EAAAF,EAAA,EACAC,IAAA,UAGAL,EAAA,EAAYA,EAAAK,EAAA,QAA2B,CACvC,GAAAQ,GAAAR,EAAA5R,MAAAuR,KAAA,IACAc,EAAAP,CAKA,KAFAA,IAAA9R,MAAA,KAEA7G,EAAA,EAAaA,EAAA,GAAQA,IAAA,CACrB,GAGAmZ,GAAAF,EAAAjZ,EAAA,IAAAoZ,EAAAH,EAAAjZ,EAAA,GAGA8D,EAAA6U,EAAA,GAAA9T,EAAA8T,EAAA,GACAU,EAAAV,EAAA,IACAT,EAAArT,EAAA,GAAAqT,EAAArT,EAAA,IAAAqT,EAAArT,EAAA,MACAA,EAAA8T,EAAA,IAAA9T,EAAA8T,EAAA,IACAtO,EAAArK,IAEAiZ,EAAAjZ,KAAA,GAAAiZ,EAAAjZ,GACAiZ,EAAAjZ,EAAA,KACAkY,EAAAiB,EAAA,GAAAjB,EAAAiB,EAAA,IAAAA,IAAA,GACAF,EAAAjZ,EAAA,IACAkY,EAAAkB,EAAA,IAAAlB,EAAAkB,EAAA,IAAAA,IAAA,IACA,EAMAT,IAAAU,IAHAnB,EAAApU,EAAA,GAAAoU,EAAApU,EAAA,IAAAoU,EAAApU,EAAA,MACAA,EAAA6U,EAAA,GAAA7U,EAAA6U,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAEA,GAAA5N,OAAA4N,GACAA,EAAA,GAAAA,EAAA,GAAAU,EAAA,EAGA,IAAArZ,EAAA,EAAaA,EAAA,EAAOA,IACpB2Y,EAAA3Y,GAAA2Y,EAAA3Y,GAAAkZ,EAAAlZ,GAAA,EAIA,IAAAA,EAAA,EAAYA,EAAA,EAAOA,IACnB,IAAAoY,EAAA,EAAaA,EAAA,EAAOA,IAAA,CACpB,GAAArU,GAAA4U,EAAA3Y,IAAA,EAAAoY,EAAA,GACAzU,KAAAI,EAAA,SAAAA,EAAAvC,SAAA,IAGA,MAAAmC,GAMA,OAFAqU,GAAAnF,KAAA,s1BAEAmF,KhCs9DM,SAAUjY,EAAQD,EAASH,GAEjCA,EAAoB,IACpBI,EAAOD,QAAUH,EAAoB,KAK/B,SAAUI,EAAQD,EAASH,GAEjC,YiC5kEA,qBAAAoP,WAIApP,EAAA,IAAA2Z,SACApW,OAAA6L,QAAApP,EAAA,KAKAc,OAAA6J,OAAA3K,EAAA,KjC0lEM,SAAUI,EAAQD,EAASH,GAEjC,YkC5lEA,SAAA4Z,KACA/M,GAAA,EACAuC,EAAAe,IAAA,KACAf,EAAAwB,IAAA,KAIA,QAAA+I,GAAAE,GAwCA,QAAAC,GAAAzG,IAEAwG,EAAAE,eACAC,EACAC,EAAA5G,GAAAvG,MACA+M,EAAAK,WAAAC,MAGAF,EAAA5G,GAAA+G,cACAP,EAAAC,aACAG,EAAA5G,GAAAgH,QAAA,EACAR,EAAAC,YACAG,EAAA5G,GAAA+G,UACAH,EAAA5G,GAAAvG,SAGAmN,EAAA5G,GAAAgH,QAAA,EACAC,EACAL,EAAA5G,GAAA+G,UACAH,EAAA5G,GAAAvG,SAKA,QAAAyN,GAAAlH,GACA4G,EAAA5G,GAAAgH,SACAR,EAAAU,UACAV,EAAAU,UAAAN,EAAA5G,GAAA+G,UAAAH,EAAA5G,GAAAvG,OACOmN,EAAA5G,GAAAyG,cACPzU,QAAAoO,KACA,kCAAAwG,EAAA5G,GAAA+G,UAAA,MAEA/U,QAAAoO,KACA,gHACAwG,EAAA5G,GAAA+G,UAAA,OAzEAP,QACAhN,GAAA+M,IACA/M,GAAA,CACA,IAAAwG,GAAA,EACA+G,EAAA,EACAH,IACA7K,GAAAe,IAAA,SAAAK,GAEA,IAAAA,EAAAlB,KACA2K,EAAAzJ,EAAAgK,OAEAP,EAAAzJ,EAAAgK,KAAAH,OACAE,EAAA/J,EAAAgK,KAEAC,aAAAR,EAAAzJ,EAAAgK,KAAAxR,eAEAiR,GAAAzJ,EAAAgK,OAGApL,EAAAwB,IAAA,SAAAJ,EAAAkK,GACA,IAAAlK,EAAAnB,MACAmB,EAAAgK,IAAAnH,IACA4G,EAAAzJ,EAAAgK,MACAJ,UAAA,KACAtN,MAAA4N,EACA1R,QAAA2R,WACAb,EAAAxV,KAAA,KAAAkM,EAAAgK,KAKAR,EAAAU,EAAAP,GACA,IACA,KAEAE,QAAA,KA6CA,QAAAC,GAAAjH,EAAAvG,GACAzH,QAAAoO,KAAA,6CAAAJ,EAAA,QACAvG,MAAA8N,OAAA9N,IAAA,IACAqF,MAAA,MAAA1O,QAAA,SAAAoX,GACAxV,QAAAoO,KAAA,KAAAoH,KAIA,QAAAb,GAAAlN,EAAAgO,GACA,MAAAA,GAAAC,KAAA,SAAAC,GACA,MAAAlO,aAAAkO,KA5GA,GAAA5L,GAAApP,EAAA,IAEAma,GACAc,eACA3S,UACA4S,YAGArO,GAAA,CACA1M,GAAAyZ,UAOAzZ,EAAAwZ,UlC2sEM,SAAUvZ,EAAQD,EAASH,GAEjC,cAC4B,SAASiK,GmCntErC,QAAAkR,GAAAC,GACAC,EAAAzX,SACA0X,IACAC,GAAA,GAGAF,IAAAzX,QAAAwX,EA0BA,QAAAI,KACA,KAAApR,EAAAiR,EAAAzX,QAAA,CACA,GAAA6X,GAAArR,CAUA,IAPAA,GAAA,EACAiR,EAAAI,GAAAlb,OAMA6J,EAAAsR,EAAA,CAGA,OAAAC,GAAA,EAAAC,EAAAP,EAAAzX,OAAAwG,EAAgEuR,EAAAC,EAAkBD,IAClFN,EAAAM,GAAAN,EAAAM,EAAAvR,EAEAiR,GAAAzX,QAAAwG,EACAA,EAAA,GAGAiR,EAAAzX,OAAA,EACAwG,EAAA,EACAmR,GAAA,EAyHA,QAAAM,GAAAC,GACA,kBAWA,QAAAC,KAGAtB,aAAAuB,GACAC,cAAAC,GACAJ,IAXA,GAAAE,GAAArB,WAAAoB,EAAA,GAIAG,EAAAC,YAAAJ,EAAA,KA5LA3b,EAAAD,QAAAgb,CAUA,IAOAG,GAPAD,KAGAE,GAAA,EAQAnR,EAAA,EAIAsR,EAAA,KA6CAU,EAAA,oBAAAnS,KAAA9C,KACAkV,EAAAD,EAAAE,kBAAAF,EAAAG,sBAcAjB,GADA,mBAAAe,GA2CA,SAAAP,GACA,GAAAU,GAAA,EACAC,EAAA,GAAAJ,GAAAP,GACAY,EAAAlZ,SAAAmZ,eAAA,GAEA,OADAF,GAAAG,QAAAF,GAA4BG,eAAA,IAC5B,WACAL,KACAE,EAAA5S,KAAA0S,IAjDAhB,GA8BAK,EAAAL,GAQAL,EAAAG,eAgFAH,EAAAU,6BnCyuE6Btb,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,GAEjC,YoCr7EA,SAAA8c,GAAAjR,GACA,GAAApK,GAAA,GAAA2N,KAAA2B,IAGA,OAFAtP,GAAA6N,IAAA,EACA7N,EAAA8N,IAAA1D,EACApK,EAjBA,GAAA2N,GAAApP,EAAA,GAEAI,GAAAD,QAAAiP,CAIA,IAAA2N,GAAAD,GAAA,GACAE,EAAAF,GAAA,GACAG,EAAAH,EAAA,MACAI,EAAAJ,MAAAlY,IACAuY,EAAAL,EAAA,GACAM,EAAAN,EAAA,GAQA1N,GAAAU,QAAA,SAAAjE,GACA,GAAAA,YAAAuD,GAAA,MAAAvD,EAEA,WAAAA,EAAA,MAAAoR,EACA,QAAArY,KAAAiH,EAAA,MAAAqR,EACA,SAAArR,EAAA,MAAAkR,EACA,SAAAlR,EAAA,MAAAmR,EACA,QAAAnR,EAAA,MAAAsR,EACA,SAAAtR,EAAA,MAAAuR,EAEA,qBAAAvR,IAAA,mBAAAA,GACA,IACA,GAAAiD,GAAAjD,EAAAiD,IACA,uBAAAA,GACA,UAAAM,GAAAN,EAAAxK,KAAAuH,IAEK,MAAAkD,GACL,UAAAK,GAAA,SAAAU,EAAAC,GACAA,EAAAhB,KAIA,MAAA+N,GAAAjR,IAGAuD,EAAAoF,IAAA,SAAArK,GACA,GAAAkL,GAAAnL,MAAA3I,UAAA2F,MAAA3G,KAAA4J,EAEA,WAAAiF,GAAA,SAAAU,EAAAC,GAGA,QAAAxF,GAAAlK,EAAAuB,GACA,GAAAA,IAAA,iBAAAA,IAAA,mBAAAA,IAAA,CACA,GAAAA,YAAAwN,IAAAxN,EAAAkN,OAAAM,EAAA7N,UAAAuN,KAAA,CACA,SAAAlN,EAAA0N,KACA1N,IAAA2N,GAEA,YAAA3N,EAAA0N,IAAA/E,EAAAlK,EAAAuB,EAAA2N,MACA,IAAA3N,EAAA0N,KAAAS,EAAAnO,EAAA2N,SACA3N,GAAAkN,KAAA,SAAAlN,GACA2I,EAAAlK,EAAAuB,IACWmO,IAGX,GAAAjB,GAAAlN,EAAAkN,IACA,uBAAAA,GAAA,CAKA,WAJA,IAAAM,GAAAN,EAAAxK,KAAA1C,IACAkN,KAAA,SAAAlN,GACA2I,EAAAlK,EAAAuB,IACamO,IAKbsF,EAAAhV,GAAAuB,EACA,MAAAyb,GACAvN,EAAAuF,GA3BA,OAAAA,EAAAzR,OAAA,MAAAkM,MA8BA,QA7BAuN,GAAAhI,EAAAzR,OA6BAvD,EAAA,EAAmBA,EAAAgV,EAAAzR,OAAiBvD,IACpCkK,EAAAlK,EAAAgV,EAAAhV,OAKA+O,EAAAW,OAAA,SAAAlE,GACA,UAAAuD,GAAA,SAAAU,EAAAC,GACAA,EAAAlE,MAIAuD,EAAAkO,KAAA,SAAAC,GACA,UAAAnO,GAAA,SAAAU,EAAAC,GACAwN,EAAA9Z,QAAA,SAAAoI,GACAuD,EAAAU,QAAAjE,GAAAiD,KAAAgB,EAAAC,QAOAX,EAAA7N,UAAA,eAAAqO,GACA,MAAA/K,MAAAiK,KAAA,KAAAc,KpC68EM,SAAUxP,EAAQD,EAASH,GAEjC,YqC5iFA,SAAAwd,GAAA5b,GACA,UAAAA,OAAAgD,KAAAhD,EACA,SAAA0G,WAAA,wDAGA,OAAAxH,QAAAc,GATA,GAAA6b,GAAA3c,OAAA2c,sBACAjc,EAAAV,OAAAS,UAAAC,eACAkc,EAAA5c,OAAAS,UAAAoc,oBAsDAvd,GAAAD,QA5CA,WACA,IACA,IAAAW,OAAA6J,OACA,QAMA,IAAAiT,GAAA,GAAAvS,QAAA,MAEA,IADAuS,EAAA,QACA,MAAA9c,OAAA+c,oBAAAD,GAAA,GACA,QAKA,QADAE,MACAzd,EAAA,EAAiBA,EAAA,GAAQA,IACzByd,EAAA,IAAAzS,OAAA0S,aAAA1d,KAKA,mBAHAS,OAAA+c,oBAAAC,GAAAjU,IAAA,SAAA1I,GACA,MAAA2c,GAAA3c,KAEAmR,KAAA,IACA,QAIA,IAAA0L,KAIA,OAHA,uBAAA7L,MAAA,IAAA1O,QAAA,SAAAwa,GACAD,EAAAC,OAGA,yBADAnd,OAAAod,KAAApd,OAAA6J,UAAkCqT,IAAA1L,KAAA,IAMhC,MAAAoI,GAEF,aAIA5Z,OAAA6J,OAAA,SAAAwT,EAAAC,GAKA,OAJAC,GAEAC,EADAC,EAAAf,EAAAW,GAGAzc,EAAA,EAAgBA,EAAAuC,UAAAL,OAAsBlC,IAAA,CACtC2c,EAAAvd,OAAAmD,UAAAvC,GAEA,QAAAmC,KAAAwa,GACA7c,EAAAjB,KAAA8d,EAAAxa,KACA0a,EAAA1a,GAAAwa,EAAAxa,GAIA,IAAA4Z,EAAA,CACAa,EAAAb,EAAAY,EACA,QAAAhe,GAAA,EAAkBA,EAAAie,EAAA1a,OAAoBvD,IACtCqd,EAAAnd,KAAA8d,EAAAC,EAAAje,MACAke,EAAAD,EAAAje,IAAAge,EAAAC,EAAAje,MAMA,MAAAke,KrC+jFM,SAAUne,EAAQuI,EAAqB3I,GAE7C,YsCnpFA,SAASoK,KAGP,MAFAvB,GAAA1E,EAAI4D,gBAAgByW,EAAA,EAASzV,iBAEtBjI,OAAA2d,EAAA,KACJ3P,KAAK,iBAAMhO,QAAA4d,EAAA,OtCgpFhB5d,OAAOC,eAAe4H,EAAqB,cAAgBkD,OAAO,GAC7C,IAAIjD,GAAyC5I,EAAoB,GAC7D6I,EAAiD7I,EAAoBmB,EAAEyH,GACvE6V,EAA+Cze,EAAoB,IACnEwe,EAA0Cxe,EAAoB,GAC9D0e,EAA2C1e,EAAoB,GsClpFxFoK,KAEAzB,EAAA,WtCqpFM,SAAUvI,EAAQuI,EAAqB3I,GAE7C,YuCnqFA,IAAA2e,IAAA,0BAGAC,EAAA,SAAArO,EAAAsO,GACA,UAAAzP,SAAA,SAAAU,GAEAS,GAAA,mBAAAA,KACAsO,EAAAtO,EACAA,EAAA,MAIAsO,KAAAtb,OAAAC,QAGA,IAAAqN,GAAA,WACA,MAAAf,QAAAS,GAAAoK,WAAApK,OAKA,IAAAoO,EAAA3X,QAAA6X,EAAA/K,YACAjD,IAEAgO,EAAApH,iBAAA,mBAAA5G,KAMA+N,GAAAE,OAAA,SAAAD,GACA,gBAAAjd,GACA,MAAAgd,GAAAC,GAAA/P,KAAA,WACA,MAAAlN,OAKA+G,EAAA,KvC6qFM,SAAUvI,EAAQuI,EAAqB3I,GAE7C,YwCvsFA,SAAS+e,GAAkB7V,EAAUE,EAAO4V,GACrC9V,EAAS+V,iBAAoB7V,EAAM8V,cAIxChW,EAASiW,uBACNrQ,KAAK,iBAAM1F,GAAMgW,WAAWlW,EAASmW,iBACrCvQ,KAAK,iBAAM1F,GAAM+V,yBACjBrQ,KAAK,iBAAM1F,GAAMkW,gBACjBxQ,KAAK,iBAAM1F,GAAMmW,wBACjBzQ,KAAK,iBAAMkQ,GAAIQ,oBAAoBtW,EAASmW,cAAejW,EAAMqW,UACjE3Q,KAAK,iBAAMkQ,GAAIU,oCACf5Q,KAAK,iBAAMkQ,GAAIW,oBACf7Q,KAAK,iBAAMkQ,GAAIY,yBACf9Q,KAAK,iBAAMkQ,GAAIa,yBACf/Q,KAAK,iBAAM1F,GAAM0W,qBAAqBd,EAAIjY,SAAUiY,EAAIe,iBACxDjR,KAAK,iBAAM1F,GAAM4W,gBACjBC,MAAM,SAAAnT,GAAA,MAASjE,GAAA1E,EAAI2I,MAAMA,KAS9B,QAASoT,GAAgBhX,EAAUE,EAAO4V,GACxC,GAAK9V,EAAS+V,iBAAoB7V,EAAM8V,aAAxC,CAIA,GAAMiB,GAAMC,EAAAjc,EAAQjD,IAAI,WAExBkI,GAAMgW,WAAWe,GACdrR,KAAK,iBAAM1F,GAAMkW,gBACjBxQ,KAAK,iBAAMkQ,GAAIU,oCACf5Q,KAAK,iBAAMkQ,GAAIW,oBACf7Q,KAAK,iBAAMkQ,GAAIY,yBACf9Q,KAAK,iBAAMkQ,GAAIa,yBACf/Q,KAAK,iBAAM1F,GAAM0W,qBAAqBd,EAAIjY,SAAUiY,EAAIe,iBACxDjR,KAAK,iBAAMuR,GAAA,EAAQC,cAActB,EAAIjY,YACrC+H,KAAK,iBAAM1F,GAAM4W,gBACjBC,MAAM,SAAAnT,GAAA,MAASjE,GAAA1E,EAAI2I,MAAMA,MAM9B,QAASyT,KACP,GAAMrX,GAAW,GAAIsX,GAAA,EACfpX,EAAQ,GAAIqX,GAAA,EACZzB,EAAM,GAAI0B,GAAA,EACVC,GAAczX,EAAUE,EAAO4V,EAErCnW,GAAA1E,EAAI2B,MAAJ,WAAqBhF,OAAA8f,EAAA,KAArB,KAEAxR,QAAQoF,IAAImM,EAAW9W,IAAI,SAAAgX,GAAA,MAAaA,GAAUC,UAC/ChS,KAAK,WACJ6R,EAAW9W,IAAI,SAAAgX,GAAA,MAAaA,GAAUxP,SAElC9N,OAAOwd,MACThC,EAAkB7V,EAAUE,EAAO4V,GAGjCzb,OAAOyd,MACTd,EAAgBhX,EAAUE,EAAO4V,KAGpCiB,MAAM,SAAAnT,GAAA,MAASjE,GAAA1E,EAAI2I,MAAMA,KxCooFT,GAAIlE,GAAyC5I,EAAoB,GAC7D6I,EAAiD7I,EAAoBmB,EAAEyH,GACvEqY,EAA0CjhB,EAAoB,IAC9DogB,EAAkDpgB,EAAoBmB,EAAE8f,GACxET,EAA0CxgB,EAAoB,IAC9DygB,EAAuCzgB,EAAoB,IAC3D0gB,EAAqC1gB,EAAoB,IACzDqgB,EAAyCrgB,EAAoB,KwChuFtF4gB,EAAA5gB,EAAA,GAwFA2I,GAAA,KxC0pFM,SAAUvI,EAAQuI,EAAqB3I,GAE7C,YAQuuB,SAASkhB,GAAgBC,EAASC,GAAa,KAAKD,YAAoBC,IAAc,KAAM,IAAI9Y,WAAU,qCAP5zB,GAAIM,GAAyC5I,EAAoB,GAC7D6I,EAAiD7I,EAAoBmB,EAAEyH,GACvEyY,EAAwCrhB,EAAoB,IAC5DshB,EAAgDthB,EAAoBmB,EAAEkgB,GACtEE,EAA2CvhB,EAAoB,GAC/DwhB,EAAmDxhB,EAAoBmB,EAAEogB,GACzEE,EAA0CzhB,EAAoB,GACnF0hB,EAAwB,mBAATzV,SAA8C,iBAAlBA,QAAO0V,SAAoB,SAASje,GAAK,aAAcA,IAAM,SAASA,GAAK,MAAOA,IAAqB,mBAATuI,SAAqBvI,EAAImM,cAAc5D,QAAQvI,IAAMuI,OAAO1K,UAAU,eAAgBmC,IAAUke,EAAa,WAAW,QAASC,GAAiB1D,EAAO2D,GAAO,IAAI,GAAIzhB,GAAE,EAAEA,EAAEyhB,EAAMle,OAAOvD,IAAI,CAAC,GAAI0hB,GAAWD,EAAMzhB,EAAG0hB,GAAW9gB,WAAW8gB,EAAW9gB,aAAY,EAAM8gB,EAAW/gB,cAAa,EAAQ,SAAU+gB,KAAWA,EAAWC,UAAS,GAAKlhB,OAAOC,eAAeod,EAAO4D,EAAWle,IAAIke,IAAc,MAAO,UAASX,EAAYa,EAAWC,GAAuI,MAAvHD,IAAWJ,EAAiBT,EAAY7f,UAAU0gB,GAAeC,GAAYL,EAAiBT,EAAYc,GAAoBd,MyCjvF/sBe,EzCmvFU,WyC9uFd,QAAAA,GAAYC,GAAOlB,EAAArc,KAAAsd,GACjBtd,KAAKud,MAAQA,EACbvd,KAAKwd,mBACLxd,KAAKyd,cAAe,EzCqwF2J,MApB9KV,GAAaO,IAAWte,IAAI,OAG5BgI,MAAM,WyCpuFP,GAAM0W,GAA4D,oBAAtCf,KAAIC,EAAA,EAAU,oBACpCe,EAAkE,oBAAzChB,KAAIC,EAAA,EAAU,sBAE7C,KAAKc,IAAiBC,EAEpB,MADA3Z,GAAA1E,EAAI2B,MAAM,gCACHsJ,QAAQU,SAGjB,IAAM3G,GAAUqY,IAAIC,EAAA,EAAU,uBACxBgB,EAAajB,IAAIC,EAAA,EAAU,sBAAuB,GAExD,OAAuB,KAAnBtY,EAAQvF,QAAiB6e,EAAW7e,OAKjC0d,IAAOG,EAAA,EAASvY,SAASC,UAJ9BN,EAAA1E,EAAI2B,MAAM,8BACHsJ,QAAQU,czCytFbjM,IAAI,OAAOgI,MAAM,WyC/sFrB,IAAKhH,KAAKoa,gBAER,WADApW,GAAA1E,EAAI2I,MAAM,4DAIZvJ,QAAO4e,SAAS9Q,MACdoR,WAAYhB,EAAA,EAASvY,SAASuZ,aAG5Blf,OAAOwd,MACTlc,KAAK6d,iCAGHnf,OAAOyd,MACTnc,KAAK8d,sCAGP9Z,EAAA1E,EAAI2B,MAAM,4BzCgsFNjC,IAAI,iCAAiCgI,MAAM,WyC1rFhB,GAAA+W,GAAA/d,IAC/BtB,QAAOkU,iBAAiB,UAAW,SAAAoL,GACjC,IAAID,EAAKN,cACJO,EAAMC,SAAWvf,OAAOwD,SAAS+b,QAChCD,EAAM/Y,MACmC,IAA1C+Y,EAAM/Y,KAAK9C,QAAQ,mBAHxB,CAOA,GAAM+b,GAAQvB,IAAIqB,EAAM/Y,KAAKqI,MAAM,mBAAoB,IAAK,GAEvD4Q,KAILH,EAAKN,cAAe,EAEpBM,EAAKI,WAAWD,EAAOF,EAAMzE,YAC5B,MzC0qFCva,IAAI,sCAAsCgI,MAAM,WyCnqFpDtI,OAAOkU,iBAAiB,UAAW,SAAAoL,GACjC,GAAIA,EAAMC,SAAWvf,OAAOwD,SAAS+b,QAC/BD,EAAM/Y,MACmC,IAA1C+Y,EAAM/Y,KAAK9C,QAAQ,mBAFxB,CAMA,GAAMic,GAASzB,IAAIC,EAAA,EAAU,WACvBsB,EAAQvB,IAAIqB,EAAM/Y,KAAKqI,MAAM,mBAAoB,IAAK,GAE5D,KAAK8Q,IAAWF,EAEd,WADAF,GAAMzE,OAAO8E,YAAY,8BAA+B,IAI1D,IAAMC,MACAC,IACND,GAAM3B,IAAIC,EAAA,EAAU,2BAA+BwB,EAA7C,yBAA8E,EAEpFpa,EAAA1E,EAAI2B,MAAJ,iCAA2CoI,KAAKC,UAAUgV,GAA1D,KAEA5f,OAAO4e,SAASkB,YAAY,cAC1BN,QACAI,QACA/E,OAAQ,qBACRgF,OACAE,UALwC,WAMtCza,EAAA1E,EAAI2B,MAAM,iCACV+c,EAAMzE,OAAO8E,YAAY,gCAAiC,MAE5DK,QATwC,WAUtC1a,EAAA1E,EAAI2B,MAAM,+BACV+c,EAAMzE,OAAO8E,YAAY,8BAA+B,WAG3D,MzCooFCrf,IAAI,aAAagI,MAAM,SyC5nFlBkX,EAAO3E,GAChB,GAAM6E,GAASzB,IAAIC,EAAA,EAAU,UAAW,WAClC0B,KACAC,IACND,GAAMF,GAAU,EAChBG,EAAKH,GAAU,OAEfpa,EAAA1E,EAAI2B,MAAM,uBAEVvC,OAAO4e,SAASkB,YAAY,cAC1BN,QACAI,QACA/E,OAAQ,qBACRgF,OACAE,UALwC,WAMtCza,EAAA1E,EAAI2B,MAAM,+BACVsY,EAAO8E,YAAY,8BAA+B,MAEpDK,QATwC,WAUtC1a,EAAA1E,EAAI2B,MAAM,6BACVsY,EAAO8E,YAAY,4BAA6B,WzC2mFhDrf,IAAI,uBAAuBgI,MAAM,WyClmFhB,GAAA2X,GAAA3e,KACfb,EAAST,OAAO4e,SAASkB,YAAY,kBACzCrK,KAAM,SACNsK,UAAW,SAAArM,GACTuM,EAAKnB,gBAAkBpL,EACvBpO,EAAA1E,EAAI2B,MAAJ,6BAAuC0d,EAAKnE,cAA5C,OAKJ,OAAsB,YAAlB,oBAAOrb,GAAP,YAAA0d,EAAO1d,IACFoL,QAAQU,UAGV9L,KzCwlFHH,IAAI,kBAAkB3C,IAAI,WyC7vF9B,MAAkC,oBAApBqC,QAAO4e,YzC6vFwEte,IAAI,gBAAgB3C,IAAI,WyChlFrH,MAAO2D,MAAKwd,gBAAgBoB,czCglF0JtB,IyC5kF1LxZ,GAAA,KzCglFM,SAAUvI,EAAQD,EAASH,G0CjxFjC,QAAA2L,GAAAtK,EAAAoK,GACAA,EAAAgJ,EAAAhJ,EAAApK,EAKA,KAHA,GAAA+I,GAAA,EACAxG,EAAA6H,EAAA7H,OAEA,MAAAvC,GAAA+I,EAAAxG,GACAvC,IAAA8T,EAAA1J,EAAArB,MAEA,OAAAA,OAAAxG,EAAAvC,MAAAuD,GApBA,GAAA6P,GAAAzU,EAAA,IACAmV,EAAAnV,EAAA,GAsBAI,GAAAD,QAAAwL,G1CmyFM,SAAUvL,EAAQD,EAASH,G2C3yFjC,QAAA0U,GAAA7I,EAAAxK,GACA,GAAAM,EAAAkK,GACA,QAEA,IAAAS,SAAAT,EACA,mBAAAS,GAAA,UAAAA,GAAA,WAAAA,GACA,MAAAT,IAAAD,EAAAC,MAGA6X,EAAA9R,KAAA/F,KAAA8X,EAAA/R,KAAA/F,IACA,MAAAxK,GAAAwK,IAAA/K,QAAAO,IAzBA,GAAAM,GAAA3B,EAAA,GACA4L,EAAA5L,EAAA,IAGA2jB,EAAA,mDACAD,EAAA,OAuBAtjB,GAAAD,QAAAuU,G3Ci0FM,SAAUtU,EAAQD,EAASH,I4C71FjC,SAAAiK,GACA,GAAAiC,GAAA,gBAAAjC,SAAAnJ,iBAAAmJ,CAEA7J,GAAAD,QAAA+L,I5Ci2F6B3L,KAAKJ,EAASH,EAAoB,KAIzD,SAAUI,EAAQD,EAASH,G6C/0FjC,QAAA+U,GAAAlJ,GACA,GAAA+X,GAAApiB,EAAAjB,KAAAsL,EAAAiJ,GACA+O,EAAAhY,EAAAiJ,EAEA,KACAjJ,EAAAiJ,OAAAlQ,EACA,IAAAkf,IAAA,EACG,MAAA5e,IAEH,GAAAlB,GAAA+f,EAAAxjB,KAAAsL,EAQA,OAPAiY,KACAF,EACA/X,EAAAiJ,GAAA+O,QAEAhY,GAAAiJ,IAGA9Q,EA1CA,GAAAiI,GAAAjM,EAAA,IAGAgkB,EAAAljB,OAAAS,UAGAC,EAAAwiB,EAAAxiB,eAOAuiB,EAAAC,EAAAniB,SAGAiT,EAAA7I,IAAAgJ,gBAAArQ,EA6BAxE,GAAAD,QAAA4U,G7C+2FM,SAAU3U,EAAQD,G8C34FxB,QAAA6U,GAAAnJ,GACA,MAAAkY,GAAAxjB,KAAAsL,GAjBA,GAAAmY,GAAAljB,OAAAS,UAOAwiB,EAAAC,EAAAniB,QAaAzB,GAAAD,QAAA6U,G9Cm6FM,SAAU5U,EAAQD,G+Ch6FxB,QAAA2L,GAAAD,GACA,aAAAA,GAAA,gBAAAA,GAGAzL,EAAAD,QAAA2L,G/C+7FM,SAAU1L,EAAQD,EAASH,GgD39FjC,GAAAikB,GAAAjkB,EAAA,IAGAkkB,EAAA,mGAGAC,EAAA,WASAxP,EAAAsP,EAAA,SAAAG,GACA,GAAApgB,KAOA,OANA,MAAAogB,EAAA/K,WAAA,IACArV,EAAAoM,KAAA,IAEAgU,EAAAjhB,QAAA+gB,EAAA,SAAAG,EAAAC,EAAAC,EAAAC,GACAxgB,EAAAoM,KAAAmU,EAAAC,EAAArhB,QAAAghB,EAAA,MAAAG,GAAAD,KAEArgB,GAGA5D,GAAAD,QAAAwU,GhDk+FM,SAAUvU,EAAQD,EAASH,GiD/+FjC,QAAAikB,GAAAQ,GACA,GAAAzgB,GAAA0gB,EAAAD,EAAA,SAAA5gB,GAIA,MAHAwQ,GAAAsQ,OAAAC,GACAvQ,EAAAwQ,QAEAhhB,IAGAwQ,EAAArQ,EAAAqQ,KACA,OAAArQ,GAtBA,GAAA0gB,GAAA1kB,EAAA,IAGA4kB,EAAA,GAsBAxkB,GAAAD,QAAA8jB,GjDmgGM,SAAU7jB,EAAQD,EAASH,GkD3+FjC,QAAA0kB,GAAAD,EAAAK,GACA,qBAAAL,IAAA,MAAAK,GAAA,kBAAAA,GACA,SAAAxc,WAAAyc,EAEA,IAAAC,GAAA,WACA,GAAA3P,GAAApR,UACAJ,EAAAihB,IAAA3f,MAAAN,KAAAwQ,KAAA,GACAhB,EAAA2Q,EAAA3Q,KAEA,IAAAA,EAAA4Q,IAAAphB,GACA,MAAAwQ,GAAAnT,IAAA2C,EAEA,IAAAG,GAAAygB,EAAAtf,MAAAN,KAAAwQ,EAEA,OADA2P,GAAA3Q,QAAAnH,IAAArJ,EAAAG,IAAAqQ,EACArQ,EAGA,OADAghB,GAAA3Q,MAAA,IAAAqQ,EAAAQ,OAAAC,GACAH,EAlEA,GAAAG,GAAAnlB,EAAA,IAGA+kB,EAAA,qBAmEAL,GAAAQ,MAAAC,EAEA/kB,EAAAD,QAAAukB,GlDmiGM,SAAUtkB,EAAQD,EAASH,GmD9lGjC,QAAAmlB,GAAAC,GACA,GAAAhb,IAAA,EACAxG,EAAA,MAAAwhB,EAAA,EAAAA,EAAAxhB,MAGA,KADAiB,KAAAggB,UACAza,EAAAxG,GAAA,CACA,GAAAyhB,GAAAD,EAAAhb,EACAvF,MAAAqI,IAAAmY,EAAA,GAAAA,EAAA,KApBA,GAAAC,GAAAtlB,EAAA,IACAulB,EAAAvlB,EAAA,IACAwlB,EAAAxlB,EAAA,IACAylB,EAAAzlB,EAAA,IACA0lB,EAAA1lB,EAAA,GAqBAmlB,GAAA5jB,UAAAsjB,MAAAS,EACAH,EAAA5jB,UAAA,OAAAgkB,EACAJ,EAAA5jB,UAAAL,IAAAskB,EACAL,EAAA5jB,UAAA0jB,IAAAQ,EACAN,EAAA5jB,UAAA2L,IAAAwY,EAEAtlB,EAAAD,QAAAglB,GnDknGM,SAAU/kB,EAAQD,EAASH,GoDtoGjC,QAAAslB,KACAzgB,KAAA8f,KAAA,EACA9f,KAAAkF,UACAiP,KAAA,GAAA2M,GACA9b,IAAA,IAAA+b,GAAAC,GACAzB,OAAA,GAAAuB,IAhBA,GAAAA,GAAA3lB,EAAA,IACA6lB,EAAA7lB,EAAA,IACA4lB,EAAA5lB,EAAA,GAkBAI,GAAAD,QAAAmlB,GpDwpGM,SAAUllB,EAAQD,EAASH,GqD/pGjC,QAAA2lB,GAAAP,GACA,GAAAhb,IAAA,EACAxG,EAAA,MAAAwhB,EAAA,EAAAA,EAAAxhB,MAGA,KADAiB,KAAAggB,UACAza,EAAAxG,GAAA,CACA,GAAAyhB,GAAAD,EAAAhb,EACAvF,MAAAqI,IAAAmY,EAAA,GAAAA,EAAA,KApBA,GAAAS,GAAA9lB,EAAA,IACA+lB,EAAA/lB,EAAA,IACAgmB,EAAAhmB,EAAA,IACAimB,EAAAjmB,EAAA,IACAkmB,EAAAlmB,EAAA,GAqBA2lB,GAAApkB,UAAAsjB,MAAAiB,EACAH,EAAApkB,UAAA,OAAAwkB,EACAJ,EAAApkB,UAAAL,IAAA8kB,EACAL,EAAApkB,UAAA0jB,IAAAgB,EACAN,EAAApkB,UAAA2L,IAAAgZ,EAEA9lB,EAAAD,QAAAwlB,GrDmrGM,SAAUvlB,EAAQD,EAASH,GsDzsGjC,QAAA8lB,KACAjhB,KAAAkF,SAAAP,IAAA,SACA3E,KAAA8f,KAAA,EAXA,GAAAnb,GAAAxJ,EAAA,EAcAI,GAAAD,QAAA2lB,GtDytGM,SAAU1lB,EAAQD,EAASH,GuDjsGjC,QAAAqM,GAAAR,GACA,SAAArJ,EAAAqJ,IAAAsa,EAAAta,MAGAjJ,EAAAiJ,GAAAua,EAAAC,GACAzU,KAAA0U,EAAAza,IA3CA,GAAAjJ,GAAA5C,EAAA,IACAmmB,EAAAnmB,EAAA,IACAwC,EAAAxC,EAAA,IACAsmB,EAAAtmB,EAAA,IAMAumB,EAAA,sBAGAF,EAAA,8BAGAG,EAAAvhB,SAAA1D,UACAyiB,EAAAljB,OAAAS,UAGAklB,EAAAD,EAAA3kB,SAGAL,EAAAwiB,EAAAxiB,eAGA4kB,EAAAM,OAAA,IACAD,EAAAlmB,KAAAiB,GAAA2B,QAAAojB,EAAA,QACApjB,QAAA,sEAmBA/C,GAAAD,QAAAkM,GvD8uGM,SAAUjM,EAAQD,EAASH,GwDlwGjC,QAAA4C,GAAAiJ,GACA,IAAArJ,EAAAqJ,GACA,QAIA,IAAAgY,GAAA9X,EAAAF,EACA,OAAAgY,IAAA8C,GAAA9C,GAAA+C,GAAA/C,GAAAgD,GAAAhD,GAAAiD,EAjCA,GAAA/a,GAAA/L,EAAA,IACAwC,EAAAxC,EAAA,IAGA6mB,EAAA,yBACAF,EAAA,oBACAC,EAAA,6BACAE,EAAA,gBA6BA1mB,GAAAD,QAAAyC,GxDmyGM,SAAUxC,EAAQD,EAASH,GyDxzGjC,QAAAmmB,GAAA1B,GACA,QAAAsC,OAAAtC,GAhBA,GAAAuC,GAAAhnB,EAAA,IAGA+mB,EAAA,WACA,GAAAE,GAAA,SAAAhgB,KAAA+f,KAAA9I,MAAA8I,EAAA9I,KAAAgJ,UAAA,GACA,OAAAD,GAAA,iBAAAA,EAAA,KAcA7mB,GAAAD,QAAAgmB,GzD80GM,SAAU/lB,EAAQD,EAASH,G0Dj2GjC,GAAA0E,GAAA1E,EAAA,IAGAgnB,EAAAtiB,EAAA,qBAEAtE,GAAAD,QAAA6mB,G1Dw2GM,SAAU5mB,EAAQD,G2Dh2GxB,QAAAmmB,GAAA7B,GACA,SAAAA,EAAA,CACA,IACA,MAAAgC,GAAAlmB,KAAAkkB,GACK,MAAAvf,IACL,IACA,MAAAuf,GAAA,GACK,MAAAvf,KAEL,SArBA,GAAAshB,GAAAvhB,SAAA1D,UAGAklB,EAAAD,EAAA3kB,QAqBAzB,GAAAD,QAAAmmB,G3Do3GM,SAAUlmB,EAAQD,G4Dr4GxB,QAAAiM,GAAA/K,EAAAwC,GACA,aAAAxC,MAAAuD,GAAAvD,EAAAwC,GAGAzD,EAAAD,QAAAiM,G5Do5GM,SAAUhM,EAAQD,G6Dt5GxB,QAAA4lB,GAAAliB,GACA,GAAAG,GAAAa,KAAAogB,IAAAphB,UAAAgB,MAAAkF,SAAAlG,EAEA,OADAgB,MAAA8f,MAAA3gB,EAAA,IACAA,EAGA5D,EAAAD,QAAA4lB,G7Du6GM,SAAU3lB,EAAQD,EAASH,G8Dn6GjC,QAAAgmB,GAAAniB,GACA,GAAAiG,GAAAjF,KAAAkF,QACA,IAAAP,EAAA,CACA,GAAAxF,GAAA8F,EAAAjG,EACA,OAAAG,KAAAmjB,MAAAviB,GAAAZ,EAEA,MAAAxC,GAAAjB,KAAAuJ,EAAAjG,GAAAiG,EAAAjG,OAAAe,GA1BA,GAAA4E,GAAAxJ,EAAA,GAGAmnB,EAAA,4BAGAnD,EAAAljB,OAAAS,UAGAC,EAAAwiB,EAAAxiB,cAoBApB,GAAAD,QAAA6lB,G9D87GM,SAAU5lB,EAAQD,EAASH,G+D18GjC,QAAAimB,GAAApiB,GACA,GAAAiG,GAAAjF,KAAAkF,QACA,OAAAP,OAAA5E,KAAAkF,EAAAjG,GAAArC,EAAAjB,KAAAuJ,EAAAjG,GAnBA,GAAA2F,GAAAxJ,EAAA,GAGAgkB,EAAAljB,OAAAS,UAGAC,EAAAwiB,EAAAxiB,cAgBApB,GAAAD,QAAA8lB,G/Dk+GM,SAAU7lB,EAAQD,EAASH,GgEz+GjC,QAAAkmB,GAAAriB,EAAAgI,GACA,GAAA/B,GAAAjF,KAAAkF,QAGA,OAFAlF,MAAA8f,MAAA9f,KAAAogB,IAAAphB,GAAA,IACAiG,EAAAjG,GAAA2F,OAAA5E,KAAAiH,EAAAsb,EAAAtb,EACAhH,KAnBA,GAAA2E,GAAAxJ,EAAA,GAGAmnB,EAAA,2BAmBA/mB,GAAAD,QAAA+lB,GhE+/GM,SAAU9lB,EAAQD,EAASH,GiExgHjC,QAAA6lB,GAAAT,GACA,GAAAhb,IAAA,EACAxG,EAAA,MAAAwhB,EAAA,EAAAA,EAAAxhB,MAGA,KADAiB,KAAAggB,UACAza,EAAAxG,GAAA,CACA,GAAAyhB,GAAAD,EAAAhb,EACAvF,MAAAqI,IAAAmY,EAAA,GAAAA,EAAA,KApBA,GAAA+B,GAAApnB,EAAA,IACAqnB,EAAArnB,EAAA,IACAsnB,EAAAtnB,EAAA,IACAunB,EAAAvnB,EAAA,IACAwnB,EAAAxnB,EAAA,GAqBA6lB,GAAAtkB,UAAAsjB,MAAAuC,EACAvB,EAAAtkB,UAAA,OAAA8lB,EACAxB,EAAAtkB,UAAAL,IAAAomB,EACAzB,EAAAtkB,UAAA0jB,IAAAsC,EACA1B,EAAAtkB,UAAA2L,IAAAsa,EAEApnB,EAAAD,QAAA0lB,GjE4hHM,SAAUzlB,EAAQD,GkEpjHxB,QAAAinB,KACAviB,KAAAkF,YACAlF,KAAA8f,KAAA,EAGAvkB,EAAAD,QAAAinB,GlEkkHM,SAAUhnB,EAAQD,EAASH,GmE7jHjC,QAAAqnB,GAAAxjB,GACA,GAAAiG,GAAAjF,KAAAkF,SACAK,EAAAX,EAAAK,EAAAjG,EAEA,SAAAuG,EAAA,KAIAA,GADAN,EAAAlG,OAAA,EAEAkG,EAAA2d,MAEAC,EAAAnnB,KAAAuJ,EAAAM,EAAA,KAEAvF,KAAA8f,MACA,GA/BA,GAAAlb,GAAAzJ,EAAA,GAGA2nB,EAAAzd,MAAA3I,UAGAmmB,EAAAC,EAAAD,MA4BAtnB,GAAAD,QAAAknB,GnEqlHM,SAAUjnB,EAAQD,EAASH,GoE5mHjC,QAAAsnB,GAAAzjB,GACA,GAAAiG,GAAAjF,KAAAkF,SACAK,EAAAX,EAAAK,EAAAjG,EAEA,OAAAuG,GAAA,MAAAxF,GAAAkF,EAAAM,GAAA,GAfA,GAAAX,GAAAzJ,EAAA,EAkBAI,GAAAD,QAAAmnB,GpE8nHM,SAAUlnB,EAAQD,EAASH,GqEroHjC,QAAAunB,GAAA1jB,GACA,MAAA4F,GAAA5E,KAAAkF,SAAAlG,IAAA,EAZA,GAAA4F,GAAAzJ,EAAA,EAeAI,GAAAD,QAAAonB,GrEupHM,SAAUnnB,EAAQD,EAASH,GsE1pHjC,QAAAwnB,GAAA3jB,EAAAgI,GACA,GAAA/B,GAAAjF,KAAAkF,SACAK,EAAAX,EAAAK,EAAAjG,EAQA,OANAuG,GAAA,KACAvF,KAAA8f,KACA7a,EAAAsG,MAAAvM,EAAAgI,KAEA/B,EAAAM,GAAA,GAAAyB,EAEAhH,KAtBA,GAAA4E,GAAAzJ,EAAA,EAyBAI,GAAAD,QAAAqnB,GtE6qHM,SAAUpnB,EAAQD,EAASH,GuEtsHjC,GAAAuJ,GAAAvJ,EAAA,IACA0E,EAAA1E,EAAA,IAGA4lB,EAAArc,EAAA7E,EAAA,MAEAtE,GAAAD,QAAAylB,GvE6sHM,SAAUxlB,EAAQD,EAASH,GwExsHjC,QAAAulB,GAAA1hB,GACA,GAAAG,GAAA4F,EAAA/E,KAAAhB,GAAA,OAAAA,EAEA,OADAgB,MAAA8f,MAAA3gB,EAAA,IACAA,EAdA,GAAA4F,GAAA5J,EAAA,EAiBAI,GAAAD,QAAAolB,GxE0tHM,SAAUnlB,EAAQD,GyEpuHxB,QAAA6J,GAAA6B,GACA,GAAAS,SAAAT,EACA,iBAAAS,GAAA,UAAAA,GAAA,UAAAA,GAAA,WAAAA,EACA,cAAAT,EACA,OAAAA,EAGAzL,EAAAD,QAAA6J,GzEkvHM,SAAU5J,EAAQD,EAASH,G0ErvHjC,QAAAwlB,GAAA3hB,GACA,MAAA+F,GAAA/E,KAAAhB,GAAA3C,IAAA2C,GAZA,GAAA+F,GAAA5J,EAAA,EAeAI,GAAAD,QAAAqlB,G1EuwHM,SAAUplB,EAAQD,EAASH,G2E3wHjC,QAAAylB,GAAA5hB,GACA,MAAA+F,GAAA/E,KAAAhB,GAAAohB,IAAAphB,GAZA,GAAA+F,GAAA5J,EAAA,EAeAI,GAAAD,QAAAslB,G3E6xHM,SAAUrlB,EAAQD,EAASH,G4EhyHjC,QAAA0lB,GAAA7hB,EAAAgI,GACA,GAAA/B,GAAAF,EAAA/E,KAAAhB,GACA8gB,EAAA7a,EAAA6a,IAIA,OAFA7a,GAAAoD,IAAArJ,EAAAgI,GACAhH,KAAA8f,MAAA7a,EAAA6a,QAAA,IACA9f,KAlBA,GAAA+E,GAAA5J,EAAA,EAqBAI,GAAAD,QAAAulB,G5EmzHM,SAAUtlB,EAAQD,EAASH,G6EjzHjC,QAAA6B,GAAAgK,GACA,aAAAA,EAAA,GAAA+b,EAAA/b,GAxBA,GAAA+b,GAAA5nB,EAAA,GA2BAI,GAAAD,QAAA0B,G7E+0HM,SAAUzB,EAAQD,EAASH,G8Et1HjC,QAAA4nB,GAAA/b,GAEA,mBAAAA,GACA,MAAAA,EAEA,IAAAlK,EAAAkK,GAEA,MAAAgc,GAAAhc,EAAA+b,GAAA,EAEA,IAAAhc,EAAAC,GACA,MAAAic,KAAAvnB,KAAAsL,GAAA,EAEA,IAAA7H,GAAA6H,EAAA,EACA,YAAA7H,GAAA,EAAA6H,IAAAuJ,EAAA,KAAApR,EAjCA,GAAAiI,GAAAjM,EAAA,IACA6nB,EAAA7nB,EAAA,IACA2B,EAAA3B,EAAA,GACA4L,EAAA5L,EAAA,IAGAoV,EAAA,IAGA2S,EAAA9b,IAAA1K,cAAAqD,GACAkjB,EAAAC,IAAAlmB,aAAA+C,EA0BAxE,GAAAD,QAAAynB,G9Ei3HM,SAAUxnB,EAAQD,G+E54HxB,QAAA0nB,GAAAne,EAAAse,GAKA,IAJA,GAAA5d,IAAA,EACAxG,EAAA,MAAA8F,EAAA,EAAAA,EAAA9F,OACAI,EAAAkG,MAAAtG,KAEAwG,EAAAxG,GACAI,EAAAoG,GAAA4d,EAAAte,EAAAU,KAAAV,EAEA,OAAA1F,GAGA5D,EAAAD,QAAA0nB,G/E45HM,SAAUznB,EAAQuI,EAAqB3I,GAE7C,YAW8f,SAASkhB,GAAgBC,EAASC,GAAa,KAAKD,YAAoBC,IAAc,KAAM,IAAI9Y,WAAU,qCAVnlB,GAAIM,GAAyC5I,EAAoB,GAC7D6I,EAAiD7I,EAAoBmB,EAAEyH,GACvEyY,EAAwCrhB,EAAoB,IAC5DshB,EAAgDthB,EAAoBmB,EAAEkgB,GACtEE,EAA2CvhB,EAAoB,GAC/DwhB,EAAmDxhB,EAAoBmB,EAAEogB,GACzE0G,EAAwDjoB,EAAoB,IAC5EkoB,EAAgEloB,EAAoBmB,EAAE8mB,GACtFE,EAA0CnoB,EAAoB,GAC9DooB,EAAsCpoB,EAAoB,IAC/E4hB,EAAa,WAAW,QAASC,GAAiB1D,EAAO2D,GAAO,IAAI,GAAIzhB,GAAE,EAAEA,EAAEyhB,EAAMle,OAAOvD,IAAI,CAAC,GAAI0hB,GAAWD,EAAMzhB,EAAG0hB,GAAW9gB,WAAW8gB,EAAW9gB,aAAY,EAAM8gB,EAAW/gB,cAAa,EAAQ,SAAU+gB,KAAWA,EAAWC,UAAS,GAAKlhB,OAAOC,eAAeod,EAAO4D,EAAWle,IAAIke,IAAc,MAAO,UAASX,EAAYa,EAAWC,GAAuI,MAAvHD,IAAWJ,EAAiBT,EAAY7f,UAAU0gB,GAAeC,GAAYL,EAAiBT,EAAYc,GAAoBd,MgFh7HteiH,EhFk7HO,WgF76HX,QAAAA,GAAYjG,GAAOlB,EAAArc,KAAAwjB,GACjBxjB,KAAKud,MAAQA,EACbvd,KAAKwd,mBACLxd,KAAKyjB,mBAAqB,0BhFg9HiwC,MAhC1xC1G,GAAayG,IAAQxkB,IAAI,OAGzBgI,MAAM,WgFn6HP,GAAM0W,GAAyD,oBAAnCf,KAAI2G,EAAA,EAAU,iBACpCI,EAAuD,oBAAlC/G,KAAI2G,EAAA,EAAU,eAEzC,KAAK5F,IAAiBgG,EAEpB,MADA1f,GAAA1E,EAAI2B,MAAM,6BACHsJ,QAAQU,SAGjB,IAAM3G,GAAUqY,IAAI2G,EAAA,EAAU,oBACxBK,EAAShH,IAAI2G,EAAA,EAAU,eAAgB,GAE7C,OAAuB,KAAnBhf,EAAQvF,QAAiB4kB,EAAO5kB,OAK7B0d,IAAO6G,EAAA,EAAS/e,MAAMD,UAJ3BN,EAAA1E,EAAI2B,MAAM,2BACHsJ,QAAQU,chFw5HbjM,IAAI,OAAOgI,MAAM,WgF94HrB,IAAKhH,KAAKqa,aAER,WADArW,GAAA1E,EAAI2I,MAAM,yDAIZvJ,QAAOklB,OAAOC,WAAWP,EAAA,EAAS/e,MAAMof,QACtCG,sBAAsB,EACtBtf,wBAAyB8e,EAAA,EAAS/e,MAAMC,wBACxCuf,oBAAqBT,EAAA,EAAS/e,MAAMwf,sBAGtCrlB,OAAOklB,OAAOI,QAAQC,oCAEtBjgB,EAAA1E,EAAI2B,MAAM,yBhFo4HNjC,IAAI,uBAAuBgI,MAAM,WgF73HhB,GAAA+W,GAAA/d,IACrBtB,QAAOklB,OAAOM,UAAUC,UAAU,SAAAvJ,GAKhC,MAJIA,KACF5W,EAAA1E,EAAI2B,MAAJ,mBAA6B2Z,EAA7B,KACAmD,EAAKP,gBAAgB5C,OAASA,GAEzBrQ,QAAQU,ehF03HbjM,IAAI,cAGPgI,MAAM,WgF52HP,MAAO,IAAIuD,SAAQ,SAAAU,GACjBvM,OAAOklB,OAAOnJ,YAAY,WACxBzW,EAAA1E,EAAI2B,MAAM,wBAEV,IAAMmd,GAASzB,IAAI2G,EAAA,EAAU,UAAW,WAClCc,eAAyBhG,CAG/B,OAFA1f,QAAOklB,OAAOS,eAAeD,GAC7BpgB,EAAA1E,EAAI2B,MAAJ,uBAAiCmjB,EAAjC,gBACOnZ,WhFw2HPjM,IAAI,aAAagI,MAAM,SgF91HlB4T,GACT,MAAKA,GAIE,GAAIrQ,SAAQ,SAAAU,GACjBvM,OAAOklB,OAAOrJ,WAAWK,EAAQ,WAE/B,MADA5W,GAAA1E,EAAI2B,MAAJ,yBAAmC2Z,EAAnC,KACO3P,QANFV,QAAQU,ahF+1HbjM,IAAI,sBAAsBgI,MAAM,WgF/0HpC,GAAMsd,GAAO5lB,OAAOklB,OAAOM,SAO3B,OALII,KACFA,EAAKC,0BAA0B,OAAQtoB,OAAAsnB,EAAA,MACvCvf,EAAA1E,EAAI2B,MAAM,qCAGLsJ,QAAQU,ahF20HXjM,IAAI,cAGPgI,MAAM,WgFrzHK,GAAA2X,GAAA3e,IACZ,OAAKtB,QAAOklB,OAAOY,kBAKf9lB,OAAOklB,OAAOa,iBAChBzgB,EAAA1E,EAAI2B,MAAM,iBACHsJ,QAAQU,WAGbvM,OAAOklB,OAAOc,2BAChB1gB,EAAA1E,EAAI2B,MAAM,yBACHsJ,QAAQU,WAGZjL,KAAK2kB,yBAKH,GAAIpa,SAAQ,SAAAU,GACjBjH,EAAA1E,EAAI2B,MAAM,qCAEVoiB,EAAA/jB,EAAM+I,IAAIsW,EAAK8E,mBAAoB9W,KAAKiY,OAExClmB,OAAOklB,OAAOiB,2BAA2B,WACvC7gB,EAAA1E,EAAI2B,MAAM,+BACVgK,KACC,WACDjH,EAAA1E,EAAI2B,MAAM,8BACVgK,SAdFjH,EAAA1E,EAAI2B,MAAM,uCACHsJ,QAAQU,YAhBfjH,EAAA1E,EAAI2I,MAAM,uBACHsC,QAAQU,chFuzHbjM,IAAI,uBAAuBgI,MAAM,SgFhxHlB9E,EAAUgZ,GAC7B,GAAIhZ,GAAYA,EAASnD,OAAQ,IAAA+lB,GACV5iB,EAAS,GAAtB6iB,EADuBD,EACvBC,IAAKC,EADkBF,EAClBE,IACPV,EAAO5lB,OAAOklB,OAAOM,SACvBI,KACFA,EAAKrJ,qBAAqB8J,EAAKC,GAC/BhhB,EAAA1E,EAAI2B,MAAM,mCAYd,MARIia,IAAiBA,EAAcnc,QACjCmc,EAActc,QAAQ,SAAAqmB,GACpB,GAAMb,mBAA4Ba,EAAanpB,IAC/C4C,QAAOklB,OAAOS,eAAeD,GAC7BpgB,EAAA1E,EAAI2B,MAAJ,uBAAiCmjB,EAAjC,kBAIG7Z,QAAQU,ahF8vHyoBjM,IAAI,eAAe3C,IAAI,WgFx8H/qB,MAAgC,oBAAlBqC,QAAOklB,UhFw8HutB5kB,IAAI,SAAS3C,IAAI,WgFt4H7vB,MAAO2D,MAAKwd,gBAAgB5C,UhFs4HuxB5b,IAAI,2BAA2B3C,IAAI,WgF30Ht1B,IAAKgnB,EAAA/jB,EAAM0I,QAET,MADAhE,GAAA1E,EAAI2I,MAAM,2BACH,CAGT,IAAMid,GAAc7B,EAAA/jB,EAAMjD,IAAI2D,KAAKyjB,mBACnC,OAA2B,oBAAhByB,IAIJvY,KAAKiY,MAAQM,EAAc5B,EAAA,EAASlf,kBhFi0HuvCof,IgF1vHtyC1f,GAAA,KhF8vHM,SAAUvI,EAAQD,EAASH,GiF35HjC,QAAAgqB,KACA,GAAAC,GAAA,mBAAA5kB,SAAA,KAAAA,OACA,IAAA4kB,EAAA,EACAA,EAAAxW,KAAAwW,EAAAxW,KAAAwW,EAAA1kB,KACAJ,MAAA8kB,EAAAhmB,YAGA,QAAAyI,GAAAF,EAAAC,EAAAyd,GACAA,IACAA,EAAA,IAEA1d,IAAAhC,EAAAgC,KACAA,OAEAC,IAAAjC,EAAAiC,KACAA,MAGA,IAAA0d,GAAAD,EAAA,aAAAA,EAAA,OACAE,EAAAF,EAAA,GAAAxD,QAAA,IAAAyD,GAAA,IAEA,KADA,oBACAvY,KAAAsY,GACA,SAAAjX,OAAA,2EAGA,IAAAoX,IACAC,iBAAAH,EACAI,iBAAAH,EAEAI,aAAA,SAAAC,GACA,IACA,GAAAC,GAAA,mBACAD,GAAA5Y,MAAA6Y,IACA,IAAAC,GAAAF,EAAAhY,KAAAiY,MAEA,OADAD,GAAA9X,OAAA+X,GACAC,EACI,MAAAzlB,GACJ,WAIA0lB,oBAAA,SAAAC,EAAAC,GACA,GAAAC,GAAAlmB,KAAAimB,EACAjmB,MAAAimB,GAAA,WAMA,QAAAE,KACA,GAAAD,EAIA,MAHA1gB,GAAApG,UAAA,SAAAgnB,EAAA5qB,GACAgV,EAAAhV,GAAA4qB,IAEAF,EAAA5lB,MAAAgC,EAAAkO,GAVA,GAAAA,GAAAnO,EAAAjD,UAAA,GACAkD,EAAAtC,KAcAqmB,GAAAF,GAAA5f,OAAAiK,EAEA,OAAAwV,GAAA1lB,MAAAgC,EAAA+jB,KAIAC,WAAA,SAAAznB,GACA,MAAAwK,MAAAC,UAAAzK,IAGA0nB,aAAA,SAAAC,EAAAC,GACA,IAAAD,EAAiB,MAAAC,EAMjB,IAAA1pB,GAAA,EACA,KAAQA,EAAAsM,KAAAG,MAAAgd,GACR,MAAAnmB,GAAatD,EAAAypB,EAEb,WAAAzmB,KAAAhD,IAAA0pB,GAGAC,YAAA,SAAAd,GACA5lB,KAAAgI,SACAhI,KAAA2lB,aAAAC,KACA5lB,KAAA4lB,UACA5lB,KAAAgI,SAAA,IAIA2e,WAAA,SAAAC,GACA,GAAAtkB,GAAAtC,IAIA,IAAA2F,EAAAihB,GAIA,WAHAphB,GAAAohB,EAAA,SAAAA,GACAtkB,EAAAqkB,WAAAC,IAUA,KAHAnhB,EAAAzF,KAAA4H,QAAA,SAAAif,GACA,MAAAD,KAAAC,IAEA,CAMA,GAHA7mB,KAAA4H,QAAA2D,KAAAqb,IAGA7oB,EAAA6oB,GACA,SAAAxY,OAAA,sDAGA,IAAA0Y,GAAAF,EAAAlrB,KAAAsE,KACA,KAAArC,EAAAmpB,GACA,SAAA1Y,OAAA,uDAIA5I,GAAAshB,EAAA,SAAAd,EAAAC,GACA,IAAAloB,EAAAioB,GACA,SAAA5X,OAAA,wBAAA6X,EAAA,gBAAAW,EAAA9qB,KAAA,0CAEAwG,GAAAyjB,oBAAAC,EAAAC,OAQAc,WAAA,SAAAnB,GACAT,EAAA,wEACAnlB,KAAA0mB,YAAAd,KAIAoB,EAAA9gB,EAAAsf,EAAAyB,GACArf,YAcA,OAZAof,GAAAE,OACA1hB,EAAAwhB,EAAA,SAAAG,EAAAlB,GACAloB,EAAAopB,KACAH,EAAAE,IAAAjB,GAAAxmB,EAAAunB,EAAAG,MAGA3hB,EAAAmC,EAAA,SAAAie,GACAoB,EAAAN,YAAAd,KAEApgB,EAAAoC,EAAA,SAAAgf,GACAI,EAAAL,WAAAC,KAEAI,EA3OA,GAAAI,GAAAjsB,EAAA,GACAkH,EAAA+kB,EAAA/kB,MACAoD,EAAA2hB,EAAA3hB,MACAD,EAAA4hB,EAAA5hB,KACA/F,EAAA2nB,EAAA3nB,KACAyG,EAAAkhB,EAAAlhB,OACAP,EAAAyhB,EAAAzhB,OACA5H,EAAAqpB,EAAArpB,WACAJ,EAAAypB,EAAAzpB,QAEApC,GAAAD,SACAuM,cAGA,IAAAof,IACAI,QAAA,SACArf,SAAA,EAIA3L,IAAA,SAAA2C,EAAAsoB,GACA,GAAAriB,GAAAjF,KAAA4lB,QAAAhY,KAAA5N,KAAAylB,iBAAAzmB,EACA,OAAAgB,MAAAumB,aAAAthB,EAAAqiB,IAKAjf,IAAA,SAAArJ,EAAAgI,GACA,WAAAjH,KAAAiH,EACAhH,KAAA8N,OAAA9O,IAEAgB,KAAA4lB,QAAA5Y,MAAAhN,KAAAylB,iBAAAzmB,EAAAgB,KAAAsmB,WAAAtf,IACAA,IAIA8G,OAAA,SAAA9O,GACAgB,KAAA4lB,QAAA9X,OAAA9N,KAAAylB,iBAAAzmB,IAKAwG,KAAA,SAAAyR,GACA,GAAA3U,GAAAtC,IACAA,MAAA4lB,QAAApgB,KAAA,SAAAzI,EAAAwqB,GACAtQ,EAAAvb,KAAA4G,IAAAikB,aAAAxpB,IAAAwqB,GAAA,IAAAjpB,QAAAgE,EAAAojB,iBAAA,QAKA8B,SAAA,WACAxnB,KAAA4lB,QAAA4B,YAOAC,aAAA,SAAApC,GACA,MAAArlB,MAAAylB,kBAAA,aAAAJ,EAAA,KAMAxd,YAAA,WACA,MAAAA,GAAAvH,MAAAN,KAAAZ,YAGAsoB,UAAA,SAAAd,GACA5mB,KAAA2mB,WAAAC,IAGAvB,UAAA,SAAAA,GACA,MAAAxd,GAAA7H,KAAA4lB,QAAA5lB,KAAA4H,QAAAyd,MjFkpIM,SAAU9pB,EAAQD,EAASH,GkFhtIjC,QAAAwG,KACA,MAAA8E,GAAA9E,aAGA,QAAAiM,GAAA5O,GACA,MAAA2C,KAAAgmB,QAAA3oB,GAGA,QAAAgO,GAAAhO,EAAAiG,GACA,MAAAtD,KAAAimB,QAAA5oB,EAAAiG,GAGA,QAAAO,GAAA1G,GACA,OAAAtD,GAAAmG,IAAA5C,OAAA,EAAwCvD,GAAA,EAAQA,IAAA,CAChD,GAAAwD,GAAA2C,IAAA3C,IAAAxD,EACAsD,GAAA8O,EAAA5O,OAIA,QAAA8O,GAAA9O,GACA,MAAA2C,KAAAkmB,WAAA7oB,GAGA,QAAAwoB,KACA,MAAA7lB,KAAAqe,QApCA,GAAAoH,GAAAjsB,EAAA,GACAsL,EAAA2gB,EAAA3gB,MAEAlL,GAAAD,SACAQ,KAAA,eACA8R,OACAZ,QACAxH,OACAsI,SACA0Z,alF+vIM,SAAUjsB,EAAQD,EAASH,GmF5vIjC,QAAA2sB,KACA,MAAArhB,GAAAqhB,eAGA,QAAAla,GAAA5O,GACA,MAAA8oB,KAAAH,QAAA3oB,GAGA,QAAAgO,GAAAhO,EAAAiG,GACA,MAAA6iB,KAAAF,QAAA5oB,EAAAiG,GAGA,QAAAO,GAAA1G,GACA,OAAAtD,GAAAssB,IAAA/oB,OAAA,EAA0CvD,GAAA,EAAQA,IAAA,CAClD,GAAAwD,GAAA8oB,IAAA9oB,IAAAxD,EACAsD,GAAA8O,EAAA5O,OAIA,QAAA8O,GAAA9O,GACA,MAAA8oB,KAAAD,WAAA7oB,GAGA,QAAAwoB,KACA,MAAAM,KAAA9H,QApCA,GAAAoH,GAAAjsB,EAAA,GACAsL,EAAA2gB,EAAA3gB,MAEAlL,GAAAD,SACAQ,KAAA,iBACA8R,OACAZ,QACAxH,OACAsI,SACA0Z,anF2yIM,SAAUjsB,EAAQD,EAASH,GoFjyIjC,QAAAyS,GAAA5O,GACA,IAAAA,IAAA+oB,EAAA/oB,GAA0B,WAC1B,IAAAgpB,GAAA,gBACA9a,OAAAlO,GAAAV,QAAA,sBACA,oCACA,OAAA2pB,UAAAjO,EAAAlY,OAAAxD,QAAA,GAAAujB,QAAAmG,GAAA,OAGA,QAAAxiB,GAAAyR,GAEA,OADA5J,GAAA2M,EAAAlY,OAAAwL,MAAA,QACA9R,EAAA6R,EAAAtO,OAAA,EAAiCvD,GAAA,EAAQA,IACzC,GAAA4C,EAAAiP,EAAA7R,IAAA,CAGA,GAAA0sB,GAAA7a,EAAA7R,GAAA8R,MAAA,KACAtO,EAAAipB,SAAAC,EAAA,IACAnrB,EAAAkrB,SAAAC,EAAA,GACAjR,GAAAla,EAAAiC,IAIA,QAAAgO,GAAAhO,EAAAiG,GACAjG,IACAgb,EAAAlY,OAAAoL,OAAAlO,GAAA,IAAAkO,OAAAjI,GAAA,mDAGA,QAAA6I,GAAA9O,GACAA,GAAA+oB,EAAA/oB,KAGAgb,EAAAlY,OAAAoL,OAAAlO,GAAA,oDAGA,QAAAwoB,KACAhiB,EAAA,SAAA2iB,EAAAnpB,GACA8O,EAAA9O,KAIA,QAAA+oB,GAAA/oB,GACA,UAAA6iB,QAAA,cAA2B3U,OAAAlO,GAAAV,QAAA,iCAAAyO,KAAAiN,EAAAlY,QAvD3B,GAAAslB,GAAAjsB,EAAA,GACAsL,EAAA2gB,EAAA3gB,OACArI,EAAAgpB,EAAAhpB,IAEA7C,GAAAD,SACAQ,KAAA,gBACA8R,OACAZ,QACAxH,OACAsI,SACA0Z,WAGA,IAAAxN,GAAAvT,EAAA9H,UpFs2IM,SAAUpD,EAAQD,GqFv2IxB,QAAAsS,GAAA5O,GACA,MAAAopB,GAAAppB,GAGA,QAAAgO,GAAAhO,EAAAiG,GACAmjB,EAAAppB,GAAAiG,EAGA,QAAAO,GAAAyR,GACA,OAAAjY,KAAAopB,GACAA,EAAAzrB,eAAAqC,IACAiY,EAAAmR,EAAAppB,MAKA,QAAA8O,GAAA9O,SACAopB,GAAAppB,GAGA,QAAAwoB,GAAAxoB,GACAopB,KAhCA7sB,EAAAD,SACAQ,KAAA,gBACA8R,OACAZ,QACAxH,OACAsI,SACA0Z,WAGA,IAAAY,OrFs5IM,SAAU7sB,EAAQD,EAASH,GsFj6IjC,QAAAktB,GAAArT,EAAAsT,EAAAC,GACA,GAAA/sB,GAAA8sB,GAAAC,GAAA,CAEA,sBACAD,EAAA,WAAAtT,EAAA,GAAA3P,OAAA,SACA2P,EAAA,MAEAA,OAEA,IAAAwT,GAAAxT,EAAAyT,SAAAzT,EAAA0T,SAOA,IAJAF,EAAA,MAAAA,EAAA,MACAA,EAAA,MAAAA,EAAA,OAGAF,EACA,OAAAK,GAAA,EAAoBA,EAAA,KAASA,EAC7BL,EAAA9sB,EAAAmtB,GAAAH,EAAAG,EAIA,OAAAL,IAAAM,EAAAJ,GAzBA,GAAAE,GAAAvtB,EAAA,IACAytB,EAAAztB,EAAA,GA2BAI,GAAAD,QAAA+sB,GtF26IM,SAAU9sB,EAAQD,GuFj8IxB,GAAAutB,GAAA,4BAAAC,OAAAD,gBAAAppB,KAAAqpB,SACA,8BAAAC,SAAAF,gBAAAppB,KAAAspB,SACA,IAAAF,EAAA,CAEA,GAAAG,GAAA,GAAAC,YAAA,GAEA1tB,GAAAD,QAAA,WAEA,MADAutB,GAAAG,GACAA,OAEC,CAKD,GAAAR,GAAA,GAAAnjB,OAAA,GAEA9J,GAAAD,QAAA,WACA,OAAA2S,GAAAzS,EAAA,EAAsBA,EAAA,GAAQA,IAC9B,OAAAA,KAAAyS,EAAA,WAAA6F,KAAA2U,UACAD,EAAAhtB,GAAAyS,MAAA,EAAAzS,IAAA,MAGA,OAAAgtB,MvFg9IM,SAAUjtB,EAAQD,GwFp+IxB,QAAAstB,GAAAN,EAAAC,GACA,GAAA/sB,GAAA+sB,GAAA,EACAW,EAAAC,CACA,OAAAD,GAAAZ,EAAA9sB,MAAA0tB,EAAAZ,EAAA9sB,MACA0tB,EAAAZ,EAAA9sB,MAAA0tB,EAAAZ,EAAA9sB,MAAA,IACA0tB,EAAAZ,EAAA9sB,MAAA0tB,EAAAZ,EAAA9sB,MAAA,IACA0tB,EAAAZ,EAAA9sB,MAAA0tB,EAAAZ,EAAA9sB,MAAA,IACA0tB,EAAAZ,EAAA9sB,MAAA0tB,EAAAZ,EAAA9sB,MAAA,IACA0tB,EAAAZ,EAAA9sB,MAAA0tB,EAAAZ,EAAA9sB,MACA0tB,EAAAZ,EAAA9sB,MAAA0tB,EAAAZ,EAAA9sB,MACA0tB,EAAAZ,EAAA9sB,MAAA0tB,EAAAZ,EAAA9sB,MAdA,OADA2tB,MACA3tB,EAAA,EAAeA,EAAA,MAASA,EACxB2tB,EAAA3tB,MAAA,KAAAwB,SAAA,IAAAosB,OAAA,EAgBA7tB,GAAAD,QAAAstB,GxFo/IM,SAAUrtB,EAAQuI,EAAqB3I,GAE7C,YAsB8f,SAASkhB,GAAgBC,EAASC,GAAa,KAAKD,YAAoBC,IAAc,KAAM,IAAI9Y,WAAU,qCArBnlB,GAAIM,GAAyC5I,EAAoB,GAC7D6I,EAAiD7I,EAAoBmB,EAAEyH,GACvEslB,EAA2CluB,EAAoB,GAC/DmuB,EAAmDnuB,EAAoBmB,EAAE+sB,GACzEE,EAA2CpuB,EAAoB,IAC/DquB,EAAmDruB,EAAoBmB,EAAEitB,GACzEE,EAA2CtuB,EAAoB,IAC/DuuB,EAAmDvuB,EAAoBmB,EAAEmtB,GACzEE,EAA6CxuB,EAAoB,IACjEyuB,EAAqDzuB,EAAoBmB,EAAEqtB,GAC3EE,EAAsC1uB,EAAoB,IAC1D2uB,EAA8C3uB,EAAoBmB,EAAEutB,GACpEE,EAA0C5uB,EAAoB,IAC9D6uB,EAAkD7uB,EAAoBmB,EAAEytB,GACxEE,EAAwD9uB,EAAoB,IAC5E+uB,EAAgE/uB,EAAoBmB,EAAE2tB,GACtFE,EAA4ChvB,EAAoB,IAChEivB,EAAoDjvB,EAAoBmB,EAAE6tB,GAC1EE,EAA0ClvB,EAAoB,GAC9DmvB,EAAuCnvB,EAAoB,IAC3DovB,EAA0CpvB,EAAoB,KACnF4hB,EAAa,WAAW,QAASC,GAAiB1D,EAAO2D,GAAO,IAAI,GAAIzhB,GAAE,EAAEA,EAAEyhB,EAAMle,OAAOvD,IAAI,CAAC,GAAI0hB,GAAWD,EAAMzhB,EAAG0hB,GAAW9gB,WAAW8gB,EAAW9gB,aAAY,EAAM8gB,EAAW/gB,cAAa,EAAQ,SAAU+gB,KAAWA,EAAWC,UAAS,GAAKlhB,OAAOC,eAAeod,EAAO4D,EAAWle,IAAIke,IAAc,MAAO,UAASX,EAAYa,EAAWC,GAAuI,MAAvHD,IAAWJ,EAAiBT,EAAY7f,UAAU0gB,GAAeC,GAAYL,EAAiBT,EAAYc,GAAoBd,MyF/gJteiO,EzFihJK,WyF5gJT,QAAAA,GAAYjN,GAAOlB,EAAArc,KAAAwqB,GACjBxqB,KAAKud,MAAQA,EACbvd,KAAKyqB,aAAe,KACpBzqB,KAAK0qB,OACL1qB,KAAKkC,SAAW,KAChBlC,KAAKkb,cAAgB,KACrBlb,KAAK2qB,uBAAyB,8BAC9B3qB,KAAK4qB,kBAAoB,yBACzB5qB,KAAK6qB,+BAAgC,EzF0lJyb,MAhF7d9N,GAAayN,IAAMxrB,IAAI,OAGvBgI,MAAM,WyF9/IF,GAAA+W,GAAA/d,KACD8qB,EAASxB,IAAIe,EAAA,EAAU,kBAC3B,OAAKS,IAKLA,EAASA,EAAOxsB,QAAQ,QAAS0B,KAAK+qB,KAE/BjB,EAAAxqB,EAAMjD,IAAIyuB,GACf3mB,QAASkmB,EAAA,EAASlmB,UAEjB8F,KAAK,SAAAmI,GAGJ,GAFA2L,EAAK0M,aAAenB,IAAIlX,EAAU,OAAQ,MAEtC2L,EAAKiN,OAAOjsB,OAAS,EAAG,CAC1B,GAAMksB,GAAY3B,IAAIvL,EAAK0M,aAAc,2BACnCS,EAAiBD,EAAUE,OAAO,SAAAC,GAAA,MAASA,GAAMpjB,SACvDwhB,KAAIzL,EAAK0M,aAAc,uBAAwBS,MAGlD9P,MAAM,SAAAnT,GAAA,MAASjE,GAAA1E,EAAI2I,MAAMA,KACzBgC,KAAK,iBAAMM,SAAQU,cAnBpBjH,EAAA1E,EAAI2B,MAAM,yBACHsJ,QAAQU,czF4/IbjM,IAAI,OAAOgI,MAAM,WyFn+IrBhD,EAAA1E,EAAI2B,MAAM,uBzFs+INjC,IAAI,YAIPgI,MAAM,SyFx7ICqkB,GACR,GAAMC,GAAehC,IAAItpB,KAAKyqB,aAAc,2BACtCc,EAAYD,EAAaE,KAAK,SAAAJ,GAAA,MAASA,GAAMtvB,OAASuvB,GAC5D,OAAO/B,KAAIiC,EAAW,SAAU,OzFy7I5BvsB,IAAI,gBAAgBgI,MAAM,SyFj7IlBqkB,GACZ,GAAMC,GAAehC,IAAItpB,KAAKyqB,aAAc,2BACtCc,EAAYD,EAAaE,KAAK,SAAAJ,GAAA,MAASA,GAAMtvB,OAASuvB,GAC5D,OAAO/B,KAAIiC,EAAW,OAAQ,MzFm7I1BvsB,IAAI,cAAcgI,MAAM,SyF16IlBqkB,GAA8B,GAAnBI,GAAmBrsB,UAAAL,OAAA,OAAAgB,KAAAX,UAAA,IAAAA,UAAA,GAClCksB,EAAehC,IAAItpB,KAAKyqB,aAAc,2BACtCc,EAAYD,EAAaE,KAAK,SAAAJ,GAAA,MAASA,GAAMtvB,OAASuvB,IAExDK,EAAWpC,IAAIiC,EAAW,WAAY,GAC1C,OAAIE,GACKC,GAGTA,EAAWA,EAASptB,QAAQ,QAAS0B,KAAK+qB,KAC1CW,EAAWA,EAASptB,QAAQ,YAAa0B,KAAKqnB,azFs6I1CroB,IAAI,mBAAmBgI,MAAM,SyF15IlBwH,EAAImd,GAAsC,GAA7BpS,GAA6Bna,UAAAL,OAAA,OAAAgB,KAAAX,UAAA,GAAAA,UAAA,GAApB,KAAM+U,EAAc/U,UAAAL,OAAA,OAAAgB,KAAAX,UAAA,IAAAA,UAAA,EACzD,IAAKoP,GAAOmd,EAAZ,CAIA,GAAMC,GAASzX,EAAOiW,IAAO5b,GAAMA,CAEnCxO,MAAK0qB,IAAInf,MACPsgB,QAASD,EACTE,gBAAiBH,EACjBI,eAAgBxS,QzFq5Idva,IAAI,oBAAoBgI,MAAM,SyF34IlBglB,EAAYC,GACxBD,IACFhsB,KAAK0qB,IAAInf,MACPsgB,QAASG,EACTF,gBAAiB,eACjBC,eAAgB,OAGlB/rB,KAAK0qB,IAAInf,MACPsgB,QAASG,EACTF,gBAAiB,aACjBC,eAAgB,QAIhBE,GACFjsB,KAAK0qB,IAAInf,MACPsgB,QAASI,EACTH,gBAAiB,UACjBC,eAAgB,MAIpB,IAAIG,GAAiB,IAChBlsB,MAAK0qB,IAAI3rB,SACZmtB,EAAiBlC,EAAA1qB,EAAQjD,IAAI,qBAE3B6vB,GACFlsB,KAAK0qB,IAAInf,MACPsgB,QAASK,EACTJ,gBAAiB,kBACjBC,eAAgB,MAIpB,IAAMI,GAAWnsB,KAAK0qB,IAAI1lB,IAAI,SAAAwJ,GAAA,MAAMA,GAAGsd,iBAGvC,OAFA9nB,GAAA1E,EAAI2B,MAAJ,uBAAiCkrB,EAAS1e,KAAK,MAA/C,KAEOzN,KAAK0qB,OzFy2IR1rB,IAAI,wBAAwBgI,MAAM,SyFj2IlB0jB,GAAsB,GAAjB0B,GAAiBhtB,UAAAL,OAAA,OAAAgB,KAAAX,UAAA,GAAAA,UAAA,GAAZuN,KAAKiY,MAC7ByH,EAAS,GAAIzC,GAAAtqB,EACbH,EAASktB,EAAOC,YAEhBC,EAAcjD,IAAInqB,EAAQ,WAA1B,KAAwCuqB,EAAApqB,EAAWktB,IAAM,SAAW,UAE1E,QACEnF,QAAS,MACT+E,KACAtkB,KAAM7L,OAAAquB,EAAA,KACNmC,OAAQnD,IAAInqB,EAAQ,eAAgB,MACpCutB,WAAYpD,IAAInqB,EAAQ,eAAgB,MACxCwtB,eAAgBrD,IAAInqB,EAAQ,kBAAmB,MAC/CotB,WACAK,QAAS5sB,KAAKoe,OACdsM,UzFu1IE1rB,IAAI,sBAAsBgI,MAAM,SyF70IlBglB,EAAYC,GAC9B,IAAKjsB,KAAK6sB,WAER,MADA7oB,GAAA1E,EAAI2I,MAAM,oDACHsC,QAAQU,SAGjB,IACMyf,GAAM1qB,KAAK8sB,kBAAkBd,EAAYC,EAE/C,KAAKvB,EAAI3rB,OAEP,MADAiF,GAAA1E,EAAI2I,MAAM,8BACHsC,QAAQU,SAGjB,IAAMmI,GAAUnX,OAAAsuB,EAAA,GACdlhB,KAAKC,UAAUtJ,KAAK+sB,sBAAsBrC,IAC1C1qB,KAAKgtB,UAVO,mBAYZhtB,KAAKitB,cAZO,WAeVC,GAAc,CAGlB,OAFAlpB,GAAA1E,EAAI2B,MAAM,qCAEH6oB,EAAAxqB,EAAM6tB,KAAKntB,KAAKotB,YAlBT,UAkB6Bha,GACzCxK,SACEI,eAAgB,gBAGjBiB,KAAK,WACJijB,GAAc,IAEf9R,MAAM,SAAAnT,GAAA,MAASjE,GAAA1E,EAAI2I,MAAMA,KACzBgC,KAAK,WAIJ,MAHIijB,IACFlpB,EAAA1E,EAAI2B,MAAM,+CAELsJ,QAAQU,ezF2yIfjM,IAAI,uBAAuBgI,MAAM,WyFnyIhB,GAAA2X,GAAA3e,IACrB,KAAKA,KAAKkC,SACR,MAAOqI,SAAQU,SAFI,IAAA6Z,GAKA9kB,KAAKkC,SAAS,GAA3B6iB,EALaD,EAKbC,IAAKC,EALQF,EAKRE,IACPqI,EAAgBrtB,KAAKstB,UAArB,QAAsCvI,EAAtC,QAAiDC,CAEvD,OAAO8E,GAAAxqB,EAAMjD,IAAIgxB,GACflpB,QAASkmB,EAAA,EAASlmB,UAEjB8F,KAAK,SAAAmI,GACJuM,EAAKzD,cAAgBoO,IAAIlX,EAAU,qBAAsB,QAE1DgJ,MAAM,SAAAnT,GAAA,MAASjE,GAAA1E,EAAI2I,MAAMA,KACzBgC,KAAK,iBAAMM,SAAQU,ezFuxIlBjM,IAAI,kCAAkCgI,MAAM,WyFhxIhB,GAAAumB,GAAAvtB,IAChC,KAAKspB,IAAI5qB,OAAQ,yBACf,MAAO6L,SAAQU,SAGjB,IAAMuiB,IACJ1xB,KAAM,cAGR,OAAO,IAAIyO,SAAQ,SAAAU,GACjBvM,OAAOF,UAAUivB,YAAYC,MAAMF,GAChCvjB,KAAK,SAAA9K,GAEJ,MADAouB,GAAK1C,8BAAiD,YAAjB1rB,EAAOwuB,MACrC1iB,WzFswITjM,IAAI,kBAIPgI,MAAM,SyF/sIO4mB,EAAUC,GACxB7tB,KAAKkC,WAEDkqB,GAAIzf,KAAKiY,MACTG,IAAK6I,EACL5I,IAAK6I,EACLC,qBAEIC,YAAa,QACbC,wBAAyB,SzF0sI7BhvB,IAAI,kBAAkBgI,MAAM,WyF9rIK,GAAAinB,GAAAjuB,IACrC,MADqCZ,UAAAL,OAAA,OAAAgB,KAAAX,UAAA,IAAAA,UAAA,MACdY,KAAKkuB,uBAC1B,MAAO3jB,SAAQU,SAGjB,IAAM+J,IACJmZ,oBAAoB,EACpBhqB,QAAS,IACTiqB,WAAY,EAGd,OAAO,IAAI7jB,SAAQ,SAAAU,GACjBif,EAAA5qB,EAAM+I,IAAI4lB,EAAKtD,uBAAwBhe,KAAKiY,OAEvClmB,OAAOF,UAAU6vB,aACpBpjB,IAGFvM,OAAOF,UAAU6vB,YAAYC,mBAC3B,SAAApsB,GACE+rB,EAAKM,gBAAgBrsB,EAASssB,OAAOZ,SAAU1rB,EAASssB,OAAOX,WAC/D5iB,KAEF,iBAAMA,MACN+J,QzF0qIAhW,IAAI,yBAAyBgI,MAAM,SyFhqIlB9E,GAA2B,GAAjBkqB,GAAiBhtB,UAAAL,OAAA,OAAAgB,KAAAX,UAAA,GAAAA,UAAA,GAAZuN,KAAKiY,MACnCyH,EAAS,GAAIzC,GAAAtqB,EACbH,EAASktB,EAAOC,YAEhBC,EAAcjD,IAAInqB,EAAQ,WAA1B,KAAwCuqB,EAAApqB,EAAWktB,IAAM,SAAW,UAE1E,QACEnF,QAAS,MACT+E,KACAP,QAAS5vB,OAAAquB,EAAA,KACTwB,gBAAiB,OACjBW,OAAQnD,IAAInqB,EAAQ,eAAgB,MACpCutB,WAAYpD,IAAInqB,EAAQ,eAAgB,MACxCwtB,eAAgBrD,IAAInqB,EAAQ,kBAAmB,MAC/CotB,WACAK,QAAS5sB,KAAKoe,OACdlc,ezFmpIElD,IAAI,uBAAuBgI,MAAM,WyF1oIrC,IAAKhH,KAAK6sB,WAER,MADA7oB,GAAA1E,EAAI2I,MAAM,oDACHsC,QAAQU,SAGjB,KAAKjL,KAAKyuB,yBACR,MAAOlkB,SAAQU,SAGjB,KAAKjL,KAAKkC,SAER,MADA8B,GAAA1E,EAAIsP,KAAK,gCACFrE,QAAQU,SAGjBif,GAAA5qB,EAAM+I,IAAIrI,KAAK4qB,kBAAmBje,KAAKiY,MACvC,IAEMxR,GAAUnX,OAAAsuB,EAAA,GACdlhB,KAAKC,UAAUtJ,KAAK0uB,uBAAuB1uB,KAAKkC,WAChDlC,KAAKgtB,UAJO,qBAMZhtB,KAAKitB,cANO,YASVC,GAAc,CAGlB,OAFAlpB,GAAA1E,EAAI2B,MAAM,sCAEH6oB,EAAAxqB,EAAM6tB,KAAKntB,KAAKotB,YAZT,WAY6Bha,GACzCxK,SACEI,eAAgB,gBAGjBiB,KAAK,WACJijB,GAAc,IAEf9R,MAAM,SAAAnT,GAAA,MAASjE,GAAA1E,EAAI2I,MAAMA,KACzBgC,KAAK,WAIJ,MAHIijB,IACFlpB,EAAA1E,EAAI2B,MAAM,gDAELsJ,QAAQU,ezFkmI0vCjM,IAAI,aAAa3C,IAAI,WyFnkJlyC,MAA6B,QAAtB2D,KAAKyqB,gBzFmkJy0CzrB,IAAI,MAAM3C,IAAI,WyFvhJn2C,MAAOitB,KAAIe,EAAA,EAAU,MAAO,UzF0hJxBrrB,IAAI,SAAS3C,IAAI,WyFlhJrB,MAAOitB,KAAIe,EAAA,EAAU,UAAW,czFqhJ5BrrB,IAAI,UAAU3C,IAAI,WyF7gJtB,MAAOitB,KAAItpB,KAAKyqB,aAAc,wBAAyB,OzFghJnDzrB,IAAI,SAAS3C,IAAI,WyFtgJrB,MAFqBitB,KAAItpB,KAAKyqB,aAAc,2BAChBzlB,IAAI,SAAAomB,GAAA,MAASA,GAAMtvB,UzF0gJ3CkD,IAAI,YAAY3C,IAAI,WyFjgJxB,MAAOitB,KAAItpB,KAAKyqB,aAAc,aAAc,OzFigJ4FzrB,IAAI,yBAAyB3C,IAAI,WyFvxIzK,GAAI2D,KAAK6qB,8BACP,OAAO,CAGT,KAAKX,EAAA5qB,EAAM0I,QAET,MADAhE,GAAA1E,EAAI2I,MAAM,2BACH,CAGT,IAAMid,GAAcgF,EAAA5qB,EAAMjD,IAAI2D,KAAK2qB,uBACnC,OAA2B,oBAAhBzF,IAIPvY,KAAKiY,MAAQM,EAAcmF,EAAA,EAASjmB,iBzF4wIpCpF,IAAI,2BAA2B3C,IAAI,WyFhwIvC,IAAK6tB,EAAA5qB,EAAM0I,QAET,MADAhE,GAAA1E,EAAI2I,MAAM,2BACH,CAGT,IACMid,GAAcgF,EAAA5qB,EAAMjD,IAAI2D,KAAK4qB,kBACnC,OAA2B,oBAAhB1F,IAIPvY,KAAKiY,MAAQM,EANK,QzF2vI+csF,IyF5mIze1mB,GAAA,IAEApF,OAAO8J,SAAW9J,OAAO8J,aACzB9J,OAAO8J,SAASgiB,IAAMA,GzF6mIhB,SAAUjvB,EAAQD,EAASH,G0FhmJjC,QAAAkN,GAAA7L,EAAAoK,EAAAI,GACA,aAAAxK,IAAAmyB,EAAAnyB,EAAAoK,EAAAI,GA/BA,GAAA2nB,GAAAxzB,EAAA,GAkCAI,GAAAD,QAAA+M,G1FqoJM,SAAU9M,EAAQD,EAASH,G2FvpJjC,QAAAwzB,GAAAnyB,EAAAoK,EAAAI,EAAA4nB,GACA,IAAAjxB,EAAAnB,GACA,MAAAA,EAEAoK,GAAAgJ,EAAAhJ,EAAApK,EAOA,KALA,GAAA+I,IAAA,EACAxG,EAAA6H,EAAA7H,OACA8vB,EAAA9vB,EAAA,EACA+vB,EAAAtyB,EAEA,MAAAsyB,KAAAvpB,EAAAxG,GAAA,CACA,GAAAC,GAAAsR,EAAA1J,EAAArB,IACAsG,EAAA7E,CAEA,IAAAzB,GAAAspB,EAAA,CACA,GAAAE,GAAAD,EAAA9vB,EACA6M,GAAA+iB,IAAAG,EAAA/vB,EAAA8vB,OAAA/uB,OACAA,KAAA8L,IACAA,EAAAlO,EAAAoxB,GACAA,EACAC,EAAApoB,EAAArB,EAAA,WAGArG,EAAA4vB,EAAA9vB,EAAA6M,GACAijB,IAAA9vB,GAEA,MAAAxC,GA3CA,GAAA0C,GAAA/D,EAAA,IACAyU,EAAAzU,EAAA,IACA6zB,EAAA7zB,EAAA,IACAwC,EAAAxC,EAAA,IACAmV,EAAAnV,EAAA,GA0CAI,GAAAD,QAAAqzB,G3F8qJM,SAAUpzB,EAAQD,EAASH,G4FzsJjC,QAAA+D,GAAA1C,EAAAwC,EAAAgI,GACA,GAAA+nB,GAAAvyB,EAAAwC,EACArC,GAAAjB,KAAAc,EAAAwC,IAAA8F,EAAAiqB,EAAA/nB,SACAjH,KAAAiH,GAAAhI,IAAAxC,KACAyyB,EAAAzyB,EAAAwC,EAAAgI,GAvBA,GAAAioB,GAAA9zB,EAAA,IACA2J,EAAA3J,EAAA,IAGAgkB,EAAAljB,OAAAS,UAGAC,EAAAwiB,EAAAxiB,cAoBApB,GAAAD,QAAA4D,G5FmuJM,SAAU3D,EAAQD,EAASH,G6FnvJjC,QAAA8zB,GAAAzyB,EAAAwC,EAAAgI,GACA,aAAAhI,GAAA9C,EACAA,EAAAM,EAAAwC,GACA7C,cAAA,EACAC,YAAA,EACA4K,QACAmW,UAAA,IAGA3gB,EAAAwC,GAAAgI,EApBA,GAAA9K,GAAAf,EAAA,GAwBAI,GAAAD,QAAA2zB,G7FqwJM,SAAU1zB,EAAQD,EAASH,G8F7xJjC,GAAAuJ,GAAAvJ,EAAA,IAEAe,EAAA,WACA,IACA,GAAA0jB,GAAAlb,EAAAzI,OAAA,iBAEA,OADA2jB,MAAW,OACXA,EACG,MAAAvf,OAGH9E,GAAAD,QAAAY,G9FoyJM,SAAUX,EAAQD,G+FhyJxB,QAAA0zB,GAAAhoB,EAAAjI,GACA,GAAA0I,SAAAT,EAGA,UAFAjI,EAAA,MAAAA,EAAAmwB,EAAAnwB,KAGA,UAAA0I,GACA,UAAAA,GAAA0nB,EAAApiB,KAAA/F,KACAA,GAAA,GAAAA,EAAA,MAAAA,EAAAjI,EApBA,GAAAmwB,GAAA,iBAGAC,EAAA,kBAoBA5zB,GAAAD,QAAA0zB,G/FqzJM,SAAUzzB,EAAQD,EAASH,GgG70JjC,GAAAwE,GAAA4T,EAAA3T,GAWA,SAAAwF,GAEA,GAAAgqB,GAAA,UACAC,EAAA,QACAC,EAAA,QACAC,EAAA,qCACAC,EAAA,WACAC,EAAA,uCACAC,EAAA,uHACAC,EAAA,iBACAC,EAAA,kCACAC,EAAA,cACAC,EAAA,QACAC,EAAA,cACAC,EAAA,kCACAC,EAAA,qCACAC,EAAA,GAAArO,QACA,gDAsBA,KAEArC,EAAA,SAAA2Q,EAAAC,GACA,MAAAD,GAAApjB,KAAAqjB,IAGAC,EAAA,SAAAD,GACA,GAAAE,GAAAF,GAAA5xB,UAAA4xB,UAIAG,EAAAD,EAAAhjB,MAAA,QAmDA,IAlDA,oBAAAijB,GAAA,KACAD,EAAAC,EAAA,IAMAA,EAAAD,EAAAhjB,MAAA,WACA,oBAAAijB,GAAA,KACAD,EAAAC,EAAA,IAGAvwB,KAAAwwB,OACAC,MAAAjR,EAAA4P,EAAAkB,GACAI,KAAAlR,EAAA6P,EAAAiB,GACAK,QAAAnR,EAAA4P,EAAAkB,IAAA9Q,EAAA8P,EAAAgB,GACA7D,OAAAjN,EAAA4P,EAAAkB,IAAA9Q,EAAA6P,EAAAiB,IAAA9Q,EAAA8P,EAAAgB,IAEAtwB,KAAA4wB,QACAH,MAAAjR,EAAAiQ,EAAAa,GACAK,QAAAnR,EAAAiQ,EAAAa,IAAA9Q,EAAAkQ,EAAAY,GACA7D,OAAAjN,EAAAiQ,EAAAa,IAAA9Q,EAAAkQ,EAAAY,IAEAtwB,KAAA6wB,SACAJ,MAAAjR,EAAAiQ,EAAAa,IAAA9Q,EAAA+P,EAAAe,GACAK,QAAAnR,EAAAiQ,EAAAa,KAAA9Q,EAAA+P,EAAAe,KAAA9Q,EAAAkQ,EAAAY,IAAA9Q,EAAAgQ,EAAAc,IACA7D,OAAAjN,EAAAiQ,EAAAa,IAAA9Q,EAAAkQ,EAAAY,IAAA9Q,EAAA+P,EAAAe,IAAA9Q,EAAAgQ,EAAAc,IAEAtwB,KAAA8wB,SACAL,MAAAjR,EAAAmQ,EAAAW,GACAK,OAAAnR,EAAAoQ,EAAAU,GACA7D,OAAAjN,EAAAmQ,EAAAW,IAAA9Q,EAAAoQ,EAAAU,IAEAtwB,KAAAqQ,OACA0gB,WAAAvR,EAAAqQ,EAAAS,GACAU,aAAAxR,EAAAsQ,EAAAQ,GACAW,MAAAzR,EAAAuQ,EAAAO,GACAY,QAAA1R,EAAAyQ,EAAAK,GACAa,OAAA3R,EAAAwQ,EAAAM,GACA7D,OAAAjN,EAAAqQ,EAAAS,IAAA9Q,EAAAsQ,EAAAQ,IAAA9Q,EAAAuQ,EAAAO,IAAA9Q,EAAAyQ,EAAAK,IAAA9Q,EAAAwQ,EAAAM,IAEAtwB,KAAAkwB,WAAA1Q,EAAA0Q,EAAAI,GACAtwB,KAAAwsB,IAAAxsB,KAAAwwB,MAAA/D,QAAAzsB,KAAA6wB,QAAApE,QAAAzsB,KAAA8wB,QAAArE,QAAAzsB,KAAAqQ,MAAAoc,QAAAzsB,KAAAkwB,WAGAlwB,KAAAywB,MAAAzwB,KAAAwwB,MAAAC,OAAAzwB,KAAA6wB,QAAAJ,OAAAzwB,KAAA8wB,QAAAL,MAGAzwB,KAAA2wB,OAAA3wB,KAAAwwB,MAAAG,QAAA3wB,KAAA6wB,QAAAF,QAAA3wB,KAAA8wB,QAAAH,OAEA,oBAAAjyB,QACA,MAAAsB,OAIAoxB,EAAA,WACA,GAAAC,GAAA,GAAAhB,EAEA,OADAgB,GAAAC,MAAAjB,EACAgB,EAGA,qBAAA91B,MAAAD,SAAA,oBAAAoD,QAEAnD,EAAAD,QAAA+0B,EACK,oBAAA90B,MAAAD,SAAA,oBAAAoD,QAELnD,EAAAD,QAAA81B,KAGA7d,KAAA5T,EAAAyF,EAAAmsB,SAAAH,QAAArxB,MAAAH,EAAA,mBAAAD,KAAAW,MAAAhF,EAAAiY,GAAA5T,KAAApE,EAAAD,QAAAsE,KAKCI,OhGu1JK,SAAUzE,EAAQD,EAASH,GiG/9JjC,GAAAyE,IASA,SAAAlB,EAAAqB,GAEA,YAOA,IAQAyxB,GAAA,QACAC,EAAA,OACAC,EAAA,OACAC,EAAA,SACAC,EAAA,UAGAC,EAAA,SACAC,EAAA,SAWA1K,GACA/nB,OAAA,SAAA0yB,EAAAC,GACA,GAAAC,KACA,QAAAz2B,KAAAu2B,GACAC,EAAAx2B,IAAAw2B,EAAAx2B,GAAAuD,OAAA,MACAkzB,EAAAz2B,GAAAw2B,EAAAx2B,GAAA+K,OAAAwrB,EAAAv2B,IAEAy2B,EAAAz2B,GAAAu2B,EAAAv2B,EAGA,OAAAy2B,IAEA7R,IAAA,SAAA8R,EAAAC,GACA,uBAAAD,KACA,IAAAC,EAAA1f,cAAAtQ,QAAA+vB,EAAAzf,gBAKA2f,SAAA,SAAA/zB,GACA,MAAAA,GAAAoU,eAEA4f,MAAA,SAAAhL,GACA,MA5CA,iBA4CA,GAAAA,EAAA/oB,QAAA,eAAAgP,MAAA,YA3DA,IA6DAlP,KAAA,SAAAC,GACA,MAAAA,GAAAC,QAAA,2CAUAg0B,GAEAC,IAAA,SAAAjC,EAAAkC,GAYA,IATA,GAAA5e,GAAA/N,EAAAjJ,EAAA61B,EAAAC,EAAAlT,EAAAhkB,EAAA,EASAA,EAAAg3B,EAAAzzB,SAAA2zB,GAAA,CAEA,GAAAvC,GAAAqC,EAAAh3B,GACAyhB,EAAAuV,EAAAh3B,EAAA,EAIA,KAHAoY,EAAA/N,EAAA,EAGA+N,EAAAuc,EAAApxB,SAAA2zB,GAIA,GAFAA,EAAAvC,EAAAvc,KAAAxR,KAAAkuB,GAGA,IAAA1zB,EAAA,EAAmCA,EAAAqgB,EAAAle,OAAkBnC,IACrD4iB,EAAAkT,IAAA7sB,GACA4sB,EAAAxV,EAAArgB,GAtFA,iBAwFA61B,MAAA1zB,OAAA,EACA,GAAA0zB,EAAA1zB,OA3FA,kBA4FA0zB,GAAA,GAEAzyB,KAAAyyB,EAAA,IAAAA,EAAA,GAAA/2B,KAAAsE,KAAAwf,GAGAxf,KAAAyyB,EAAA,IAAAA,EAAA,GAEiC,GAAAA,EAAA1zB,OAnGjC,mBAqGA0zB,GAAA,IAAAA,EAAA,GAAArwB,MAAAqwB,EAAA,GAAA1lB,KAKA/M,KAAAyyB,EAAA,IAAAjT,IAAAlhB,QAAAm0B,EAAA,GAAAA,EAAA,QAtHA,GAmHAzyB,KAAAyyB,EAAA,IAAAjT,EAAAiT,EAAA,GAAA/2B,KAAAsE,KAAAwf,EAAAiT,EAAA,QAnHA,GAwHiC,GAAAA,EAAA1zB,SACjCiB,KAAAyyB,EAAA,IAAAjT,EAAAiT,EAAA,GAAA/2B,KAAAsE,KAAAwf,EAAAlhB,QAAAm0B,EAAA,GAAAA,EAAA,SAzHA,IA4HAzyB,KAAAyyB,GAAAjT,OA5HA,EAiIAhkB,IAAA,IAMA6C,IAAA,SAAAA,EAAA2G,GAEA,OAAAxJ,KAAAwJ,GAEA,GA7HA,iBA6HAA,GAAAxJ,IAAAwJ,EAAAxJ,GAAAuD,OAAA,GACA,OAAA6U,GAAA,EAAmCA,EAAA5O,EAAAxJ,GAAAuD,OAAmB6U,IACtD,GAAAwT,EAAAhH,IAAApb,EAAAxJ,GAAAoY,GAAAvV,GACA,MAnIA,MAmIA7C,MA9IA,GA8IAA,MAGiB,IAAA4rB,EAAAhH,IAAApb,EAAAxJ,GAAA6C,GACjB,MAvIA,MAuIA7C,MAlJA,GAkJAA,CAGA,OAAA6C,KAUAs0B,GAEAC,SACAC,WACAxL,SACAyL,MAAA,KACAC,IAAA,KACAC,IAAA,KACAC,MAAA,OACAC,QAAA,OACAC,QAAA,OACAC,QAAA,OACAC,IAAA,OAKA5G,QACAmE,QACA0C,OACAC,cAAA,aAGAC,QACAF,OACAG,eAAA,UAEAC,QACAC,IAAA,MACAC,OAAA,YAKAC,IACA/C,SACAzJ,SACAyM,GAAA,OACAC,UAAA,SACAC,SAAA,QACAC,KAAA,SACAC,IAAA,mBACAC,MAAA,SACAC,EAAA,SACAC,EAAA,SACAC,IAAA,SACAC,IAAA,oBACAC,GAAA,UAYAzC,GAEAa,UAGA,6BACA,8CACA,+BACA,6BACAnB,EAAAG,IAEA,8BACAH,EAAA,cAAAG,IAEA,yBACAH,EAAA,SAAAG,IAGA,uBACA,+DAIA,6DAEA,4BAGA,uBACA,oIAEAH,EAAAG,IAEA,+CACAH,EAAA,MAAAG,IAEA,2CACAH,EAAA,QAAAG,IAEA,6BACAH,EAAA,UAAAG,IAEA,0BACAH,EAAA,UAAAG,IAEA,+DAEAH,EAAA,aAAAG,IAEA,iCACAH,EAAA,UAAAG,IAEA,kCACAH,EAAA,UAAAG,IAEA,gCACAH,EAAAG,IAEA,qBACAH,EAAAG,IAEA,mCACAH,EAAAG,IAEA,mCACAH,EAAAG,IAEA,oCACAH,EAAAG,IAEA,8BACAH,IAEA,iBACAA,IAEA,oCACAG,GAAAH,EAAA,kBAEA,uBACAG,GAAAH,EAAA,cAEA,sCACAG,GAAAH,EAAA,qBAEA,kCACAA,EAAA,qBAAAG,IAEA,6CACAH,EAAA,4BAAAG,IAEA,+DACAA,GAAAH,EAAA,qBAEA,iEAEAA,EAAAG,IAEA,0BACAH,EAAA,WAAAG,IAEA,2CACAH,EAAA,UAAAG,IAEA,yBACAH,EAAA,eAAAG,IAEA,uBACAA,GAAAH,EAAA,aAEA,gDACAG,GAAAH,EAAA,mBAEA,mDACAG,EAAAH,IAEA,sEACAA,EAAA,OAAAG,IAEA,kDACAH,GAAAG,EAAAU,EAAAj0B,IAAAs0B,EAAAC,QAAAC,UAAAxL,WAEA,0BACA,+BACAoK,EAAAG,IAGA,uCACAH,EAAA,YAAAG,IACA,cACA,gGAEA,uGAGA,0CAGA,8EAEA,wBACA,2BACA,iCACA,6BACAH,EAAAG,IAkHA6C,MAEA,mDAxcA,eAycA,WAEA,kBA3cA,eA4cArN,EAAAgL,YAEA,4BA9cA,eA+cA,UAGA,kCAldA,eAmdA,SAEA,6CArdA,eAsdA,UAAAhL,EAAAgL,YAEA,oBAxdA,eAydA,WAEA,iHA3dA,eA6dAhL,EAAAgL,YAGA3F,SAEA,8CACA+E,EAAAG,GAAAD,EAAAI,KAEA,qCACAN,GAAAG,EAAA,UAAAD,EAAAI,KAEA,uBACAN,EAAA,aAAAG,EAAA,WAEA,yBACA,oBACA,kBACA,uBACA,+BACA,qCACAA,EAAAH,GAAAE,EAAAI,KAEA,iCACAN,GAAAG,EAAA,WAAAD,EAAAI,KACA,+CACAN,EAAAc,EAAAj0B,IAAAs0B,EAAAlG,OAAAmE,OAAA0C,QAAA3B,EAAA,WAAAD,EAAAG,KAEA,oCACAL,EAAAG,GAAAD,EAAAG,KACA,2BACAL,GAAAG,EAAA,UAAAD,EAAAG,KAEA,2BACA,mGAEA,qBACA,mBACAF,EAAAH,GAAAE,EAAAG,KACA,oBACAL,GAAAG,EAAA,eAAAD,EAAAG,KAEA,8EACAL,GAAAG,EAAA,SAAAD,EAAAI,KAEA,mCACA,gCACAH,EAAA,SAAAH,EAAA,kBAAAE,EAAAI,KACA,gDACAN,GAAAG,EAAA,SAAAD,EAAAG,KAEA,cACA,6BACAF,EAAAH,GAAAE,EAhhBA,aAkhBA,iCACAF,GAAAG,EAAA,WAAAD,EAnhBA,aAqhBA,oCACAF,GAAAG,EAAA,SAAAD,EAthBA,aAwhBA,sBACAC,EAAAW,EAAAj0B,IAAAs0B,EAAAlG,OAAA+G,OAAAE,SAAAlC,EAAAc,EAAAj0B,IAAAs0B,EAAAlG,OAAA+G,OAAAF,QAAA5B,EAAAG,KAEA,8CACAF,EAAAH,GAAAE,EAAAI,KAEA,qCACA,eACA,6EAEAH,GAAAH,EAAA,WAAAE,EAAAG,KAEA,gBACAL,GAAAG,EAAA,QAAAD,EAAAI,KAEA,4BACA,iBACAN,GAAAG,EAAA,WAAAD,EAAAG,KAEA,kCACAF,EAAAH,GAAAE,EAAAG,KAEA,oCACAL,GAAAG,EAAA,cAAAD,EA/iBA,aAgjBA,wBACAF,EAAA,YAAAG,EAAA,cAAAD,EAAAG,KAGA,kFACA,kBACA,uBACA,gBACAL,GAAAG,EAAA,aAAAD,EAAAG,KACA,iDACAL,GAAAG,EAAA,aAAAD,EAAAI,KAEA,4DACAH,EAAAvK,EAAAhpB,OAAAozB,EAAApK,EAAAhpB,OAAAszB,EA1jBA,aA4jBA,yBACAF,EAAA,gBAAAG,EAAA,YAAAD,EA7jBA,aA+jBA,yBACAF,GAAAG,EAAA,UAAAD,EAhkBA,aAkkBA,8EACA,kBACAC,EAAA,WAAAH,GAAAE,EAAAI,KACA,yBACAH,GAAAD,EAtkBA,WAskBAF,IACA,qDACA,mCACA,qBACAG,EAAA,WAAAH,GAAAE,EAAAG,KAEA,eACAL,GAAAG,EAAA,YAAAD,EAAAG,KAEA,oCACA,6BACAF,EAAA,SAAAH,GAAAE,EAAAG,KAEA,sCACAL,GAAAG,EAAA,SAAAD,EAAAI,KAEA,sCACAN,GAAAG,EAAA,OAAAD,EAAAI,KACA,mDACAH,EAAA,MAAAH,GAAAE,EAAAI,KACA,sBACAH,EAAAH,GAAAE,EA3lBA,aA4lBA,iBACA,qBACA,qCACAF,GAAAG,EAAA,OAAAD,EAAAG,KAEA,qCACAL,GAAAG,EAAA,WAAAD,EAAAI,KAEA,wBACAH,EAAAH,GAAAE,EAAAG,KAEA,8BACAF,EAAAH,GAAAE,EAvmBA,cAymBA,2CACAC,EAAAH,GAAAE,EAAAG,KAEA,YACAL,EAAA,eAAAG,EAAA,YAEA,6BACAH,GAAAG,EAAA,WAAAD,EAhnBA,cAknBA,6BACAF,GAAAG,EAAA,WAAAD,EAAAI,KAEA,oCACAN,GAAAG,EAAA,WAAAD,EAAAG,KAEA,mCACA,qDACA,8FACA,iEACAL,EAAA,WAAAG,EAAA,WAAAD,EAAAG,KACA,4DACAL,EAAA,WAAAG,EAAA,WAAAD,EAAAI,KACA,uCACAN,GAAAG,EAAA,UAAAD,EAAAI,KAEA,4BACA,wCACAN,GAAAG,EAAA,YAAAD,EAAAG,KAEA,2CACAL,GAAAG,EAAA,QAAAD,EAAAI,KAEA,iDACAN,GAAAG,EAAA,SAAAD,EAAAI,KAEA,8CACAN,GAAAG,EAAA,YAAAD,EAAAI,KAEA,mEACAH,EAAA,kBAAAH,GAAAE,EAAAI,KAEA,4CACAN,GAAAG,EAAA,aAAAD,EAAAI,KAEA,8BACAN,GAAAG,EAAA,QAAAD,EAAAI,KAEA,8CACAN,GAAAG,EAAA,UAAAD,EAAAG,KAEA,yCACAL,GAAAG,EAAA,UAAAD,EAAAI,KAEA,8CACAN,GAAAG,EAAA,SAAAD,EAAAI,KAEA,0CACA,gEACAH,EAAA,gBAAAH,GAAAE,EAAAI,KAEA,2CACAN,GAAAG,EAAA,aAAAD,EAAAI,KAEA,mDACAN,GAAAG,EAAA,aAAAD,EAAAI,KAEA,+EACAH,EAAA,SAAAH,GAAAE,EAAAG,KAEA,kDACAF,EAAA,SAAAH,GAAAE,EAAAG,KAEA,6DACAL,GAAAG,EAAA,YAAAD,EAAAI,KAEA,6DACAH,EAAAH,GAAAE,EAAAI,KAEA,8CACAN,GAAAG,EAAA,cAAAD,EAAAI,KAEA,uDACAH,EAAAH,GAAAE,EAAAI,KAEA,wCACAN,GAAAG,EAAA,UAAAD,EAAAI,KAEA,+BACAN,GAAAG,EAAA,WAAAD,EAAAI,KAEA,iDACAH,EAAAH,GAAAE,EAAAI,KAEA,uBACA,mCACAJ,EAAAtK,EAAAgL,UAAAT,EAAAH,IAEA,sCACAA,GAAAG,EAAA,aAuDAjqB,SAEA,gCACAkqB,GAAAH,EAAA,cAEA,uBACA,+DACA,0CACA,iCACAA,EAAAG,IAEA,gCACAA,EAAAH,IAGAoC,KAGA,sCACApC,EAAAG,IACA,+BACA,iDACA,uDACAH,GAAAG,EAAAU,EAAAj0B,IAAAs0B,EAAAkB,GAAA/C,QAAAzJ,WACA,0CACAoK,EAAA,YAAAG,EAAAU,EAAAj0B,IAAAs0B,EAAAkB,GAAA/C,QAAAzJ,WAGA,kBACAoK,EAAA,cAAAG,IACA,+BACA,0BACA,oFAEA,yBACAH,EAAAG,IACA,sDACAH,EAAA,WAAAG,IACA,mBACAH,IACA,yCACAA,EAAA,cAAAG,IAGA,iDAGA,wBACA,6BACA,2JAGA,4BACA,uBACAH,EAAAG,IAEA,iCACAH,EAAA,eAAAG,IAGA,4BACAH,EAAA,WAAAG,IAGA,mDACAH,EAAAG,IAEA,oBACAH,EAAAG,IAEA,uBACA,2DACAA,EAAA,WAAAH,EAAA,SAEA,8BACA,oCACAA,EAAA,WAAAG,EAAA,YAGA,uCACA,oCACA,+DAEA,wBACAH,EAAAG,KAwBA8C,EAAA,SAAAC,EAAA3C,GAOA,GALA,iBAAA2C,KACA3C,EAAA2C,EACAA,MA74BA,MAg5BA30B,eAAA00B,IACA,UAAAA,GAAAC,EAAA3C,GAAA1F,WAGA,IAAAgE,GAAAqE,IAAAj2B,KAAAF,WAAAE,EAAAF,UAAA4xB,UAAA1xB,EAAAF,UAAA4xB,UA14BA,IA24BAwE,EAAA5C,EAAA5K,EAAA/nB,OAAA0yB,EAAAC,GAAAD,CAuDA,OAhDA/xB,MAAA60B,WAAA,WACA,GAAAjC,IAA2B92B,SA75B3B,GA65B2BurB,YA75B3B,GAg6BA,OAFAiL,GAAAC,IAAA72B,KAAAk3B,EAAAtC,EAAAsE,EAAAhC,SACAA,EAAAP,MAAAjL,EAAAiL,MAAAO,EAAAvL,SACAuL,GAEA5yB,KAAA80B,OAAA,WACA,GAAAL,IAAuBM,iBAn6BvB,GAq6BA,OADAzC,GAAAC,IAAA72B,KAAA+4B,EAAAnE,EAAAsE,EAAAH,KACAA,GAEAz0B,KAAAg1B,UAAA,WACA,GAAAvI,IAA0BiH,WAx6B1B,GAw6B0BJ,UAx6B1B,GAw6B0B7rB,SAx6B1B,GA06BA,OADA6qB,GAAAC,IAAA72B,KAAA+wB,EAAA6D,EAAAsE,EAAAnI,QACAA,GAEAzsB,KAAAi1B,UAAA,WACA,GAAAvtB,IAA0B5L,SA76B1B,GA66B0BurB,YA76B1B,GA+6BA,OADAiL,GAAAC,IAAA72B,KAAAgM,EAAA4oB,EAAAsE,EAAAltB,QACAA,GAEA1H,KAAAk1B,MAAA,WACA,GAAArB,IAAsB/3B,SAl7BtB,GAk7BsBurB,YAl7BtB,GAo7BA,OADAiL,GAAAC,IAAA72B,KAAAm4B,EAAAvD,EAAAsE,EAAAf,IACAA,GAEA7zB,KAAAssB,UAAA,WACA,OACAgE,GAAAtwB,KAAAm1B,QACAvC,QAAA5yB,KAAA60B,aACAntB,OAAA1H,KAAAi1B,YACApB,GAAA7zB,KAAAk1B,QACAzI,OAAAzsB,KAAAg1B,YACAP,IAAAz0B,KAAA80B,WAGA90B,KAAAm1B,MAAA,WACA,MAAA7E,IAEAtwB,KAAAo1B,MAAA,SAAAT,GAOA,MANArE,GAAAqE,EAMA30B,MAEAA,KAGA00B,GAAA9C,QAt8BA,SAu8BA8C,EAAAW,SACA5D,OACA6D,MAl8BA,QAm8BA1D,WAEA8C,EAAAa,KACAC,aAh8BA,gBAk8BAd,EAAAe,QACAjE,QACAG,SACAD,OACAgE,QAr8BA,UAs8BA7D,SACA8D,QAp8BA,UAq8BA7D,SACA8D,SAr8BA,WAs8BAC,SAr8BA,YAu8BAnB,EAAAoB,QACArE,OACAG,WAEA8C,EAAAqB,IACAtE,OACAG,WA59BA,oBAs+BA,IAt+BA,oBAw+BAr2B,MAAAD,UACAA,EAAAC,EAAAD,QAAAo5B,GA+BAp5B,EAAAo5B,YAGAv5B,EAAA,QAxhCA,MAyhCAyE,EAAA,WACA,MAAA80B,IACah5B,KAAAJ,EAAAH,EAAAG,EAAAC,QAAAD,QAAAsE,GACJlB,IAETA,EAAAg2B,WASA,IAAAsB,GAAAt3B,MAAAu3B,QAAAv3B,EAAAw3B,MACA,IA3hCA,oBA2hCAF,GAAA,CACA,GAAA3J,GAAA,GAAAqI,EACAsB,GAAA1F,GAAAjE,EAAAC,YACA0J,EAAA1F,GAAAj0B,IAAA,WACA,MAAAgwB,GAAA8I,SAEAa,EAAA1F,GAAAjoB,IAAA,SAAAssB,GACAtI,EAAA+I,MAAAT,EACA,IAAAx1B,GAAAktB,EAAAC,WACA,QAAAnF,KAAAhoB,GACA62B,EAAA1F,GAAAnJ,GAAAhoB,EAAAgoB,MAKC,iBAAAzoB,eAAAsB,OjGu+JK,SAAUzE,EAAQD,IkGviMxB,SAAA66B,GACA56B,EAAAD,QAAA66B,IlG2iM6Bz6B,KAAKJ,OAI5B,SAAUC,EAAQD,EAASH,GmGhjMjCI,EAAAD,QAAAH,EAAA,KnGsjMM,SAAUI,EAAQD,EAASH,GAEjC,YoG3iMA,SAAAi7B,GAAAC,GACA,GAAA1K,GAAA,GAAA2K,GAAAD,GACA/Z,EAAA7c,EAAA62B,EAAA55B,UAAAwU,QAAAya,EAQA,OALA9iB,GAAAxJ,OAAAid,EAAAga,EAAA55B,UAAAivB,GAGA9iB,EAAAxJ,OAAAid,EAAAqP,GAEArP,EArBA,GAAAzT,GAAA1N,EAAA,GACAsE,EAAAtE,EAAA,IACAm7B,EAAAn7B,EAAA,KACA8N,EAAA9N,EAAA,IAsBAo7B,EAAAH,EAAAntB,EAGAstB,GAAAD,QAGAC,EAAArwB,OAAA,SAAAswB,GACA,MAAAJ,GAAAvtB,EAAA5J,MAAAgK,EAAAutB,KAIAD,EAAAjjB,OAAAnY,EAAA,IACAo7B,EAAAE,YAAAt7B,EAAA,KACAo7B,EAAAG,SAAAv7B,EAAA,IAGAo7B,EAAA5mB,IAAA,SAAAgnB,GACA,MAAApsB,SAAAoF,IAAAgnB,IAEAJ,EAAAK,OAAAz7B,EAAA,KAEAI,EAAAD,QAAAi7B,EAGAh7B,EAAAD,QAAAu7B,QAAAN,GpG8jMM,SAAUh7B,EAAQD,GqGpmMxB,QAAAoE,GAAAb,GACA,QAAAA,EAAAmM,aAAA,mBAAAnM,GAAAmM,YAAAtL,UAAAb,EAAAmM,YAAAtL,SAAAb,GAIA,QAAAi4B,GAAAj4B,GACA,yBAAAA,GAAAk4B,aAAA,mBAAAl4B,GAAAwD,OAAA3C,EAAAb,EAAAwD,MAAA,MAVA9G,EAAAD,QAAA,SAAAuD,GACA,aAAAA,IAAAa,EAAAb,IAAAi4B,EAAAj4B,QAAAm4B,arGkoMM,SAAUz7B,EAAQD,EAASH,GAEjC,YsGloMA,SAAAm7B,GAAAE,GACAx2B,KAAAiJ,SAAAutB,EACAx2B,KAAAi3B,cACA/lB,QAAA,GAAAgmB,GACA9kB,SAAA,GAAA8kB,IAdA,GAAAjuB,GAAA9N,EAAA,IACA0N,EAAA1N,EAAA,GACA+7B,EAAA/7B,EAAA,KACAg8B,EAAAh8B,EAAA,IAoBAm7B,GAAA55B,UAAAwU,QAAA,SAAAH,GAGA,iBAAAA,KACAA,EAAAlI,EAAA5J,OACAsP,IAAAnP,UAAA,IACKA,UAAA,KAGL2R,EAAAlI,EAAA5J,MAAAgK,GAAkC9I,OAAA,OAAcH,KAAAiJ,SAAA8H,GAChDA,EAAA5Q,OAAA4Q,EAAA5Q,OAAAsS,aAGA,IAAA2kB,IAAAD,MAAAp3B,IACA4L,EAAApB,QAAAU,QAAA8F,EAUA,KARA/Q,KAAAi3B,aAAA/lB,QAAAtS,QAAA,SAAAy4B,GACAD,EAAAE,QAAAD,EAAAE,UAAAF,EAAAG,YAGAx3B,KAAAi3B,aAAA7kB,SAAAxT,QAAA,SAAAy4B,GACAD,EAAA7rB,KAAA8rB,EAAAE,UAAAF,EAAAG,YAGAJ,EAAAr4B,QACA4M,IAAA1B,KAAAmtB,EAAAK,QAAAL,EAAAK,QAGA,OAAA9rB,IAIA9C,EAAAjK,SAAA,0CAAAuB,GAEAm2B,EAAA55B,UAAAyD,GAAA,SAAAoO,EAAAwC,GACA,MAAA/Q,MAAAkR,QAAArI,EAAA5J,MAAA8R,OACA5Q,SACAoO,YAKA1F,EAAAjK,SAAA,+BAAAuB,GAEAm2B,EAAA55B,UAAAyD,GAAA,SAAAoO,EAAAtJ,EAAA8L,GACA,MAAA/Q,MAAAkR,QAAArI,EAAA5J,MAAA8R,OACA5Q,SACAoO,MACAtJ,aAKA1J,EAAAD,QAAAg7B,GtGopMM,SAAU/6B,EAAQD,GuGvtMxB,QAAAo8B,KACA,SAAAtpB,OAAA,mCAEA,QAAAupB,KACA,SAAAvpB,OAAA,qCAsBA,QAAAwpB,GAAAC,GACA,GAAAC,IAAAhiB,WAEA,MAAAA,YAAA+hB,EAAA,EAGA,KAAAC,IAAAJ,IAAAI,IAAAhiB,WAEA,MADAgiB,GAAAhiB,WACAA,WAAA+hB,EAAA,EAEA,KAEA,MAAAC,GAAAD,EAAA,GACK,MAAAx3B,GACL,IAEA,MAAAy3B,GAAAp8B,KAAA,KAAAm8B,EAAA,GACS,MAAAx3B,GAET,MAAAy3B,GAAAp8B,KAAAsE,KAAA63B,EAAA,KAMA,QAAAE,GAAAC,GACA,GAAAC,IAAAriB,aAEA,MAAAA,cAAAoiB,EAGA,KAAAC,IAAAN,IAAAM,IAAAriB,aAEA,MADAqiB,GAAAriB,aACAA,aAAAoiB,EAEA,KAEA,MAAAC,GAAAD,GACK,MAAA33B,GACL,IAEA,MAAA43B,GAAAv8B,KAAA,KAAAs8B,GACS,MAAA33B,GAGT,MAAA43B,GAAAv8B,KAAAsE,KAAAg4B,KAYA,QAAAE,KACAC,GAAAC,IAGAD,GAAA,EACAC,EAAAr5B,OACAyX,EAAA4hB,EAAA7xB,OAAAiQ,GAEA6hB,GAAA,EAEA7hB,EAAAzX,QACAu5B,KAIA,QAAAA,KACA,IAAAH,EAAA,CAGA,GAAAh0B,GAAAyzB,EAAAM,EACAC,IAAA,CAGA,KADA,GAAAI,GAAA/hB,EAAAzX,OACAw5B,GAAA,CAGA,IAFAH,EAAA5hB,EACAA,OACA6hB,EAAAE,GACAH,GACAA,EAAAC,GAAAG,KAGAH,IAAA,EACAE,EAAA/hB,EAAAzX,OAEAq5B,EAAA,KACAD,GAAA,EACAJ,EAAA5zB,IAiBA,QAAAs0B,GAAAZ,EAAAhzB,GACA7E,KAAA63B,MACA73B,KAAA6E,QAYA,QAAAlE,MAhKA,GAOAm3B,GACAG,EARAvvB,EAAAnN,EAAAD,YAgBA,WACA,IAEAw8B,EADA,mBAAAhiB,YACAA,WAEA4hB,EAEK,MAAAr3B,GACLy3B,EAAAJ,EAEA,IAEAO,EADA,mBAAAriB,cACAA,aAEA+hB,EAEK,MAAAt3B,GACL43B,EAAAN,KAuDA,IAEAS,GAFA5hB,KACA2hB,GAAA,EAEAE,GAAA,CAyCA3vB,GAAAgwB,SAAA,SAAAb,GACA,GAAArnB,GAAA,GAAAnL,OAAAjG,UAAAL,OAAA,EACA,IAAAK,UAAAL,OAAA,EACA,OAAAvD,GAAA,EAAuBA,EAAA4D,UAAAL,OAAsBvD,IAC7CgV,EAAAhV,EAAA,GAAA4D,UAAA5D,EAGAgb,GAAAjL,KAAA,GAAAktB,GAAAZ,EAAArnB,IACA,IAAAgG,EAAAzX,QAAAo5B,GACAP,EAAAU,IASAG,EAAA/7B,UAAA87B,IAAA,WACAx4B,KAAA63B,IAAAv3B,MAAA,KAAAN,KAAA6E,QAEA6D,EAAAiwB,MAAA,UACAjwB,EAAAkqB,SAAA,EACAlqB,EAAAqiB,OACAriB,EAAAkwB,QACAlwB,EAAA2e,QAAA,GACA3e,EAAAmwB,YAIAnwB,EAAAowB,GAAAn4B,EACA+H,EAAAqwB,YAAAp4B,EACA+H,EAAAswB,KAAAr4B,EACA+H,EAAAuwB,IAAAt4B,EACA+H,EAAAwwB,eAAAv4B,EACA+H,EAAAywB,mBAAAx4B,EACA+H,EAAA0wB,KAAAz4B,EACA+H,EAAA2wB,gBAAA14B,EACA+H,EAAA4wB,oBAAA34B,EAEA+H,EAAA6wB,UAAA,SAAAz9B,GAAqC,UAErC4M,EAAA8wB,QAAA,SAAA19B,GACA,SAAAsS,OAAA,qCAGA1F,EAAA+wB,IAAA,WAA2B,WAC3B/wB,EAAAgxB,MAAA,SAAAC,GACA,SAAAvrB,OAAA,mCAEA1F,EAAAkxB,MAAA,WAA4B,WvGyuMtB,SAAUr+B,EAAQD,EAASH,GAEjC,YwGh6MA,IAAA0N,GAAA1N,EAAA,EAEAI,GAAAD,QAAA,SAAAsN,EAAAixB,GACAhxB,EAAAjK,QAAAgK,EAAA,SAAA5B,EAAAlL,GACAA,IAAA+9B,GAAA/9B,EAAA4F,gBAAAm4B,EAAAn4B,gBACAkH,EAAAixB,GAAA7yB,QACA4B,GAAA9M,QxG26MM,SAAUP,EAAQD,EAASH,GAEjC,YyGn7MA,IAAA0V,GAAA1V,EAAA,GASAI,GAAAD,QAAA,SAAA2P,EAAAC,EAAAkH,GACA,GAAAxI,GAAAwI,EAAArB,OAAAnH,cAEAwI,GAAAvI,QAAAD,MAAAwI,EAAAvI,QAGAqB,EAAA2F,EACA,mCAAAuB,EAAAvI,OACAuI,EAAArB,OACA,KACAqB,EAAAlB,QACAkB,IAPAnH,EAAAmH,KzGq8MM,SAAU7W,EAAQD,EAASH,GAEjC,Y0G18MAI,GAAAD,QAAA,SAAA2M,EAAA8I,EAAA1C,EAAA6C,EAAAkB,GAOA,MANAnK,GAAA8I,SACA1C,IACApG,EAAAoG,QAEApG,EAAAiJ,UACAjJ,EAAAmK,WACAnK,I1G69MM,SAAU1M,EAAQD,EAASH,GAEjC,Y2G9+MA,SAAA2+B,GAAA/8B,GACA,MAAAgF,oBAAAhF,GACAuB,QAAA,aACAA,QAAA,aACAA,QAAA,YACAA,QAAA,aACAA,QAAA,YACAA,QAAA,aACAA,QAAA,aAVA,GAAAuK,GAAA1N,EAAA,EAoBAI,GAAAD,QAAA,SAAAiT,EAAAsD,EAAAC,GAEA,IAAAD,EACA,MAAAtD,EAGA,IAAAwrB,EACA,IAAAjoB,EACAioB,EAAAjoB,EAAAD,OACG,IAAAhJ,EAAA3K,kBAAA2T,GACHkoB,EAAAloB,EAAA7U,eACG,CACH,GAAAwQ,KAEA3E,GAAAjK,QAAAiT,EAAA,SAAA9U,EAAAiC,GACA,OAAAjC,GAAA,oBAAAA,KAIA8L,EAAA/L,QAAAC,GACAiC,GAAA,KAEAjC,MAGA8L,EAAAjK,QAAA7B,EAAA,SAAA6I,GACAiD,EAAAjL,OAAAgI,GACAA,IAAAo0B,cACSnxB,EAAAlL,SAAAiI,KACTA,EAAAyD,KAAAC,UAAA1D,IAEA4H,EAAAjC,KAAAuuB,EAAA96B,GAAA,IAAA86B,EAAAl0B,SAIAm0B,EAAAvsB,EAAAC,KAAA,KAOA,MAJAssB,KACAxrB,KAAA,IAAAA,EAAApM,QAAA,cAAA43B,GAGAxrB,I3Gy/MM,SAAUhT,EAAQD,EAASH,GAEjC,Y4GzjNA,IAAA0N,GAAA1N,EAAA,GAIA8+B,GACA,6DACA,kEACA,gEACA,qCAgBA1+B,GAAAD,QAAA,SAAAsN,GACA,GACA5J,GACAjC,EACAvB,EAHA0+B,IAKA,OAAAtxB,IAEAC,EAAAjK,QAAAgK,EAAA0E,MAAA,eAAA0I,GAKA,GAJAxa,EAAAwa,EAAA7T,QAAA,KACAnD,EAAA6J,EAAAzK,KAAA4X,EAAAoT,OAAA,EAAA5tB,IAAAiX,cACA1V,EAAA8L,EAAAzK,KAAA4X,EAAAoT,OAAA5tB,EAAA,IAEAwD,EAAA,CACA,GAAAk7B,EAAAl7B,IAAAi7B,EAAA93B,QAAAnD,IAAA,EACA,MAGAk7B,GAAAl7B,GADA,eAAAA,GACAk7B,EAAAl7B,GAAAk7B,EAAAl7B,OAAAuH,QAAAxJ,IAEAm9B,EAAAl7B,GAAAk7B,EAAAl7B,GAAA,KAAAjC,OAKAm9B,GAnBiBA,I5GqlNX,SAAU3+B,EAAQD,EAASH,GAEjC,Y6GrnNA,IAAA0N,GAAA1N,EAAA,EAEAI,GAAAD,QACAuN,EAAAtK,uBAIA,WAWA,QAAA47B,GAAA5rB,GACA,GAAA6rB,GAAA7rB,CAWA,OATA8rB,KAEAC,EAAAC,aAAA,OAAAH,GACAA,EAAAE,EAAAF,MAGAE,EAAAC,aAAA,OAAAH,IAIAA,KAAAE,EAAAF,KACAI,SAAAF,EAAAE,SAAAF,EAAAE,SAAAl8B,QAAA,YACAm8B,KAAAH,EAAAG,KACAC,OAAAJ,EAAAI,OAAAJ,EAAAI,OAAAp8B,QAAA,aACA6V,KAAAmmB,EAAAnmB,KAAAmmB,EAAAnmB,KAAA7V,QAAA,YACAq8B,SAAAL,EAAAK,SACAC,KAAAN,EAAAM,KACAC,SAAA,MAAAP,EAAAO,SAAAltB,OAAA,GACA2sB,EAAAO,SACA,IAAAP,EAAAO,UAhCA,GAEAC,GAFAT,EAAA,kBAAAttB,KAAAvO,UAAA4xB,WACAkK,EAAA37B,SAAAyQ,cAAA,IA2CA,OARA0rB,GAAAX,EAAAz7B,OAAAwD,SAAAk4B,MAQA,SAAAW,GACA,GAAAb,GAAArxB,EAAArL,SAAAu9B,GAAAZ,EAAAY,IACA,OAAAb,GAAAM,WAAAM,EAAAN,UACAN,EAAAO,OAAAK,EAAAL,SAKA,WACA,kBACA,c7GgoNM,SAAUl/B,EAAQD,EAASH,GAEjC,Y8G5rNA,SAAA6/B,KACAh7B,KAAAoT,QAAA,uCAMA,QAAAtC,GAAAmqB,GAGA,IAEA,GAAAC,GAAAC,EAJA98B,EAAAmI,OAAAy0B,GACAG,EAAA,GAGAC,EAAA,EAAAr2B,EAAAs2B,EAIAj9B,EAAAsP,OAAA,EAAA0tB,KAAAr2B,EAAA,IAAAq2B,EAAA,GAEAD,GAAAp2B,EAAA2I,OAAA,GAAAutB,GAAA,EAAAG,EAAA,KACA,CAEA,IADAF,EAAA98B,EAAAmW,WAAA6mB,GAAA,MACA,IACA,SAAAL,EAEAE,MAAA,EAAAC,EAEA,MAAAC,GA5BA,GAAAE,GAAA,mEAKAN,GAAAt+B,UAAA,GAAA0R,OACA4sB,EAAAt+B,UAAA2R,KAAA,EACA2sB,EAAAt+B,UAAAZ,KAAA,wBAwBAP,EAAAD,QAAAwV,G9GwsNM,SAAUvV,EAAQD,EAASH,GAEjC,Y+G3uNA,IAAA0N,GAAA1N,EAAA,EAEAI,GAAAD,QACAuN,EAAAtK,uBAGA,WACA,OACAyO,MAAA,SAAAlR,EAAAkL,EAAA0F,EAAA9F,EAAA20B,EAAAC,GACA,GAAA15B,KACAA,GAAAyJ,KAAAzP,EAAA,IAAAiG,mBAAAiF,IAEA6B,EAAApL,SAAAiP,IACA5K,EAAAyJ,KAAA,cAAAoB,MAAAD,GAAA+uB,eAGA5yB,EAAArL,SAAAoJ,IACA9E,EAAAyJ,KAAA,QAAA3E,GAGAiC,EAAArL,SAAA+9B,IACAz5B,EAAAyJ,KAAA,UAAAgwB,IAGA,IAAAC,GACA15B,EAAAyJ,KAAA,UAGA5M,SAAAmD,SAAA2L,KAAA,OAGAG,KAAA,SAAA9R,GACA,GAAA0jB,GAAA7gB,SAAAmD,OAAA0d,MAAA,GAAAqC,QAAA,aAA0D/lB,EAAA,aAC1D,OAAA0jB,GAAAvS,mBAAAuS,EAAA,UAGA1R,OAAA,SAAAhS,GACAkE,KAAAgN,MAAAlR,EAAA,GAAA6Q,KAAAiY,MAAA,YAMA,WACA,OACA5X,MAAA,aACAY,KAAA,WAA6B,aAC7BE,OAAA,kB/GsvNM,SAAUvS,EAAQD,EAASH,GAEjC,YgHryNA,SAAA+7B,KACAl3B,KAAA07B,YAHA,GAAA7yB,GAAA1N,EAAA,EAcA+7B,GAAAx6B,UAAAi/B,IAAA,SAAApE,EAAAC,GAKA,MAJAx3B,MAAA07B,SAAAnwB,MACAgsB,YACAC,aAEAx3B,KAAA07B,SAAA38B,OAAA,GAQAm4B,EAAAx6B,UAAAk/B,MAAA,SAAAptB,GACAxO,KAAA07B,SAAAltB,KACAxO,KAAA07B,SAAAltB,GAAA,OAYA0oB,EAAAx6B,UAAAkC,QAAA,SAAAE,GACA+J,EAAAjK,QAAAoB,KAAA07B,SAAA,SAAAtnB,GACA,OAAAA,GACAtV,EAAAsV,MAKA7Y,EAAAD,QAAA47B,GhH+yNM,SAAU37B,EAAQD,EAASH,GAEjC,YiHx1NA,SAAA0gC,GAAA9qB,GACAA,EAAAgC,aACAhC,EAAAgC,YAAA+oB,mBAZA,GAAAjzB,GAAA1N,EAAA,GACA4gC,EAAA5gC,EAAA,KACAu7B,EAAAv7B,EAAA,IACA8N,EAAA9N,EAAA,IACA6gC,EAAA7gC,EAAA,KACA8gC,EAAA9gC,EAAA,IAiBAI,GAAAD,QAAA,SAAAyV,GAkCA,MAjCA8qB,GAAA9qB,GAGAA,EAAAmrB,UAAAF,EAAAjrB,EAAAxC,OACAwC,EAAAxC,IAAA0tB,EAAAlrB,EAAAmrB,QAAAnrB,EAAAxC,MAIAwC,EAAAnI,QAAAmI,EAAAnI,YAGAmI,EAAA9L,KAAA82B,EACAhrB,EAAA9L,KACA8L,EAAAnI,QACAmI,EAAA3H,kBAIA2H,EAAAnI,QAAAC,EAAA5J,MACA8R,EAAAnI,QAAAkB,WACAiH,EAAAnI,QAAAmI,EAAA5Q,YACA4Q,EAAAnI,aAGAC,EAAAjK,SACA,qDACA,SAAAuB,SACA4Q,GAAAnI,QAAAzI,MAIA4Q,EAAA7H,SAAAD,EAAAC,SAEA6H,GAAA9G,KAAA,SAAAmI,GAUA,MATAypB,GAAA9qB,GAGAqB,EAAAnN,KAAA82B,EACA3pB,EAAAnN,KACAmN,EAAAxJ,QACAmI,EAAAxH,mBAGA6I,GACG,SAAAnG,GAcH,MAbAyqB,GAAAzqB,KACA4vB,EAAA9qB,GAGA9E,KAAAmG,WACAnG,EAAAmG,SAAAnN,KAAA82B,EACA9vB,EAAAmG,SAAAnN,KACAgH,EAAAmG,SAAAxJ,QACAmI,EAAAxH,qBAKAgB,QAAAW,OAAAe,OjH42NM,SAAU1Q,EAAQD,EAASH,GAEjC,YkH/7NA,IAAA0N,GAAA1N,EAAA,EAUAI,GAAAD,QAAA,SAAA2J,EAAA2D,EAAAuzB,GAMA,MAJAtzB,GAAAjK,QAAAu9B,EAAA,SAAAr9B,GACAmG,EAAAnG,EAAAmG,EAAA2D,KAGA3D,IlHw8NM,SAAU1J,EAAQD,EAASH,GAEjC,YmHp9NAI,GAAAD,QAAA,SAAAiT,GAIA,sCAAAxB,KAAAwB,KnHm+NM,SAAUhT,EAAQD,EAASH,GAEjC,YoHx+NAI,GAAAD,QAAA,SAAA4gC,EAAAE,GACA,MAAAA,GACAF,EAAA59B,QAAA,eAAA89B,EAAA99B,QAAA,WACA49B,IpHw/NM,SAAU3gC,EAAQD,EAASH,GAEjC,YqH5/NA,SAAAs7B,GAAA4F,GACA,sBAAAA,GACA,SAAA54B,WAAA,+BAGA,IAAA64B,EACAt8B,MAAA2L,QAAA,GAAApB,SAAA,SAAAU,GACAqxB,EAAArxB,GAGA,IAAAsxB,GAAAv8B,IACAq8B,GAAA,SAAAjpB,GACAmpB,EAAAtwB,SAKAswB,EAAAtwB,OAAA,GAAAqH,GAAAF,GACAkpB,EAAAC,EAAAtwB,WA1BA,GAAAqH,GAAAnY,EAAA,GAiCAs7B,GAAA/5B,UAAAo/B,iBAAA,WACA,GAAA97B,KAAAiM,OACA,KAAAjM,MAAAiM,QAQAwqB,EAAAld,OAAA,WACA,GAAAvG,EAIA,QACAupB,MAJA,GAAA9F,GAAA,SAAA76B,GACAoX,EAAApX,IAIAoX,WAIAzX,EAAAD,QAAAm7B,GrH4gOM,SAAUl7B,EAAQD,EAASH,GAEjC,YsHhjOAI,GAAAD,QAAA,SAAA2b,GACA,gBAAA3R,GACA,MAAA2R,GAAA3W,MAAA,KAAAgF,MtH8kOM,SAAU/J,EAAQuI,EAAqB3I,GAE7C,YuH1lOO,SAASqhC,GAAU7Y,EAAQyH,GAA2B,GAApBqR,GAAoBr9B,UAAAL,OAAA,OAAAgB,KAAAX,UAAA,GAAAA,UAAA,GAAZuN,KAAKiY,MAC9C8X,GACJC,OAAQhZ,EACRiZ,IAAKxR,EACLqR,SAGII,EAAaxzB,KAAKC,UAAUozB,EAElC,OADqB5rB,MAAK+rB,GAQ5B,QAASC,KAEP,MADcC,KAWT,QAASC,GAAoBN,EAAQO,GAE1C,MADmBP,GAAb,IAAuBO,EAAvB,KADqE79B,UAAAL,OAAA,OAAAgB,KAAAX,UAAA,GAAAA,UAAA,GAAZ09B,KAU1D,QAASI,GAAyBC,GACvC,GAAI3hC,GAAI,CAER,KAAKA,EAAI,EAAGA,EAAI2hC,EAAap+B,QACH,MAApBo+B,EAAa3hC,GADkBA,KAMrC,MAAOA,GAcF,QAAS4hC,GAA0BC,EAAM1Z,EAAQyH,EAAOkS,GAQ7D,IAPA,GAAMZ,GAASF,EAAU7Y,EAAQyH,GAC3B6R,EAAcnsB,KAAKusB,GAErB9oB,EAAYyoB,EAAoBN,EAAQO,GACxCM,EAAgBC,IAAOjpB,GACvBkpB,EAAmBP,EAAyBK,GAEzCE,IAAqBH,GAC1B/oB,EAAYyoB,EAAoBN,EAAQO,GACxCM,EAAgBC,IAAOjpB,GACvBkpB,EAAmBP,EAAyBK,EAG9C,OAAOhpB,GvHmhOwBzQ,EAAuB,EAAIs5B,CACvC,IAAIM,GAAsCviC,EAAoB,KAC1DwiC,EAA8CxiC,EAAoBmB,EAAEohC,GuH9mO7FE,EAAAziC,EAAA,IAAAqiC,EAAAriC,EAAAmB,EAAAshC,GAKMb,EAAiBY,IAAM,GAuF7Bj/B,QAAO8J,SAAW9J,OAAO8J,aACzB9J,OAAO8J,SAAS40B,0BAA4BA,GvHqjOtC,SAAU7hC,EAAQD,GwHlpOxBC,EAAAD,QAAA,SAAAyD,GACA,GAAA8+B,GAAA,KACAC,EAAA,CAIA,OAFA,mBAAA/+B,OAAA,IAEA,WACA,GAAA6lB,GAAA9Q,KAAAC,IAAA,UAAApH,KAEAiY,IAAAiZ,EACAC,KAEAA,EAAA,EACAD,EAAAjZ,EAGA,IAAA/nB,IAAA+nB,EAAAkZ,GAAA9gC,UACA,QAAAH,EAAAusB,OAAAvsB,EAAAkC,axH2pOM,SAAUxD,EAAQuI,EAAqB3I,GAE7C,YAG8f,SAASkhB,GAAgBC,EAASC,GAAa,KAAKD,YAAoBC,IAAc,KAAM,IAAI9Y,WAAU,qCAFnlB,GAAIM,GAAyC5I,EAAoB,GAC7D6I,EAAiD7I,EAAoBmB,EAAEyH,GAC5FgZ,EAAa,WAAW,QAASC,GAAiB1D,EAAO2D,GAAO,IAAI,GAAIzhB,GAAE,EAAEA,EAAEyhB,EAAMle,OAAOvD,IAAI,CAAC,GAAI0hB,GAAWD,EAAMzhB,EAAG0hB,GAAW9gB,WAAW8gB,EAAW9gB,aAAY,EAAM8gB,EAAW/gB,cAAa,EAAQ,SAAU+gB,KAAWA,EAAWC,UAAS,GAAKlhB,OAAOC,eAAeod,EAAO4D,EAAWle,IAAIke,IAAc,MAAO,UAASX,EAAYa,EAAWC,GAAuI,MAAvHD,IAAWJ,EAAiBT,EAAY7f,UAAU0gB,GAAeC,GAAYL,EAAiBT,EAAYc,GAAoBd,MyH7qOtewhB,EzH6qOwqB,WAAW,QAASA,KAAU1hB,EAAgBrc,KAAK+9B,GAA0Y,MAAhYhhB,GAAaghB,EAAQ,OAAO/+B,IAAI,gBAAgBgI,MAAM,SyH5qO1wB9E,GACnB,GAAIA,GAAYxD,OAAOs/B,MAAQt/B,OAAOs/B,KAAKC,mBAAoB,IAAAnZ,GACxC5iB,EAAS,GAAtB6iB,EADqDD,EACrDC,IAAKC,EADgDF,EAChDE,GACbtmB,QAAOs/B,KAAKC,mBAAmBlZ,EAAKC,GACpChhB,EAAA1E,EAAI2B,MAAM,gDAGZ,MAAOsJ,SAAQU,czHqqO+lC8yB,IyHjqOlnCj6B,GAAA","file":"main.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"./\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 31);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bind = __webpack_require__(25);\nvar isBuffer = __webpack_require__(100);\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\nmodule.exports = {\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\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_loglevel__);\n/* global window */var settings=Object.assign({defaultLogLevel:__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.levels.WARN,timeout:5000,sessionLength:1000*60*30,sailthru:{scripts:['https://assets.htvapps.com/metaphor/latest/spm.v1.min.63c81dd.js']},braze:{scripts:['https://assets.htvapps.com/metaphor/latest/appboy.min.25f9513.js'],enableHtmlInAppMessages:true}},window.METAPHOR_SETTINGS);/* harmony default export */ __webpack_exports__[\"a\"] = (settings);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(13);\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(23);\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isKeyable = __webpack_require__(72);\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var assign = make_assign()\nvar create = make_create()\nvar trim = make_trim()\nvar Global = (typeof window !== 'undefined' ? window : global)\n\nmodule.exports = {\n\tassign: assign,\n\tcreate: create,\n\ttrim: trim,\n\tbind: bind,\n\tslice: slice,\n\teach: each,\n\tmap: map,\n\tpluck: pluck,\n\tisList: isList,\n\tisFunction: isFunction,\n\tisObject: isObject,\n\tGlobal: Global\n}\n\nfunction make_assign() {\n\tif (Object.assign) {\n\t\treturn Object.assign\n\t} else {\n\t\treturn function shimAssign(obj, props1, props2, etc) {\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\teach(Object(arguments[i]), function(val, key) {\n\t\t\t\t\tobj[key] = val\n\t\t\t\t})\n\t\t\t}\t\t\t\n\t\t\treturn obj\n\t\t}\n\t}\n}\n\nfunction make_create() {\n\tif (Object.create) {\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\treturn assign.apply(this, [Object.create(obj)].concat(assignArgsList))\n\t\t}\n\t} else {\n\t\tfunction F() {} // eslint-disable-line no-inner-declarations\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\tF.prototype = obj\n\t\t\treturn assign.apply(this, [new F()].concat(assignArgsList))\n\t\t}\n\t}\n}\n\nfunction make_trim() {\n\tif (String.prototype.trim) {\n\t\treturn function trim(str) {\n\t\t\treturn String.prototype.trim.call(str)\n\t\t}\n\t} else {\n\t\treturn function trim(str) {\n\t\t\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n\t\t}\n\t}\n}\n\nfunction bind(obj, fn) {\n\treturn function() {\n\t\treturn fn.apply(obj, Array.prototype.slice.call(arguments, 0))\n\t}\n}\n\nfunction slice(arr, index) {\n\treturn Array.prototype.slice.call(arr, index || 0)\n}\n\nfunction each(obj, fn) {\n\tpluck(obj, function(val, key) {\n\t\tfn(val, key)\n\t\treturn false\n\t})\n}\n\nfunction map(obj, fn) {\n\tvar res = (isList(obj) ? [] : {})\n\tpluck(obj, function(v, k) {\n\t\tres[k] = fn(v, k)\n\t\treturn false\n\t})\n\treturn res\n}\n\nfunction pluck(obj, fn) {\n\tif (isList(obj)) {\n\t\tfor (var i=0; i 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(22),\n isObjectLike = __webpack_require__(46);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(12);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(43);\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsNative = __webpack_require__(54),\n getValue = __webpack_require__(59);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar engine = __webpack_require__(80)\n\nvar storages = [\n\t__webpack_require__(81), \n\t__webpack_require__(82), \n\t__webpack_require__(83), \n\t__webpack_require__(84),\n]\nvar plugins = []\n\nmodule.exports = engine.createStore(storages, plugins)\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_loglevel__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_store_dist_store_modern__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_store_dist_store_modern___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_store_dist_store_modern__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_uuid_v4__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_uuid_v4___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_uuid_v4__);\n/* global window */var liidKey='liid';/**\n * Create, store and return a local installation ID.\n * If the liid is alredy set, return the existing value.\n * Local storage is used by default, with a fallback to cookies.\n * @returns {String}\n */function liid(){if(!__WEBPACK_IMPORTED_MODULE_1_store_dist_store_modern___default.a.enabled){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error('Storage not available.');return __WEBPACK_IMPORTED_MODULE_2_uuid_v4___default()();}var liidValue=__WEBPACK_IMPORTED_MODULE_1_store_dist_store_modern___default.a.get(liidKey);if(typeof liidValue==='undefined'){liidValue=__WEBPACK_IMPORTED_MODULE_2_uuid_v4___default()();__WEBPACK_IMPORTED_MODULE_1_store_dist_store_modern___default.a.set(liidKey,liidValue);__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.debug('New liid created.');}return liidValue;}/* harmony default export */ __webpack_exports__[\"a\"] = (liid);window.Metaphor=window.Metaphor||{};window.Metaphor.getLiid=liid;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nvar utils = __webpack_require__(0);\nvar normalizeHeaderName = __webpack_require__(103);\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 = __webpack_require__(26);\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = __webpack_require__(26);\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\nmodule.exports = defaults;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(102)))\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar asap = __webpack_require__(34);\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._75 = 0;\n this._83 = 0;\n this._18 = null;\n this._38 = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._47 = null;\nPromise._71 = null;\nPromise._44 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._83 === 3) {\n self = self._18;\n }\n if (Promise._47) {\n Promise._47(self);\n }\n if (self._83 === 0) {\n if (self._75 === 0) {\n self._75 = 1;\n self._38 = deferred;\n return;\n }\n if (self._75 === 1) {\n self._75 = 2;\n self._38 = [self._38, deferred];\n return;\n }\n self._38.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._83 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._83 === 1) {\n resolve(deferred.promise, self._18);\n } else {\n reject(deferred.promise, self._18);\n }\n return;\n }\n var ret = tryCallOne(cb, self._18);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._83 = 3;\n self._18 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._83 = 1;\n self._18 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._83 = 2;\n self._18 = newValue;\n if (Promise._71) {\n Promise._71(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._75 === 1) {\n handle(self, self._38);\n self._38 = null;\n }\n if (self._75 === 2) {\n for (var i = 0; i < self._38.length; i++) {\n handle(self, self._38[i]);\n }\n self._38 = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader = false;\n\tif (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (true) {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api (key, value, attributes) {\n\t\t\tvar result;\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Write\n\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tattributes = extend({\n\t\t\t\t\tpath: '/'\n\t\t\t\t}, api.defaults, attributes);\n\n\t\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\t\tvar expires = new Date();\n\t\t\t\t\texpires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n\t\t\t\t\tattributes.expires = expires;\n\t\t\t\t}\n\n\t\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\t\ttry {\n\t\t\t\t\tresult = JSON.stringify(value);\n\t\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\t\tvalue = result;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif (!converter.write) {\n\t\t\t\t\tvalue = encodeURIComponent(String(value))\n\t\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = converter.write(value, key);\n\t\t\t\t}\n\n\t\t\t\tkey = encodeURIComponent(String(key));\n\t\t\t\tkey = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n\t\t\t\tkey = key.replace(/[\\(\\)]/g, escape);\n\n\t\t\t\tvar stringifiedAttributes = '';\n\n\t\t\t\tfor (var attributeName in attributes) {\n\t\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName];\n\t\t\t\t}\n\t\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t\t}\n\n\t\t\t// Read\n\n\t\t\tif (!key) {\n\t\t\t\tresult = {};\n\t\t\t}\n\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling \"get()\"\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar rdecode = /(%[0-9A-Z]{2})+/g;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!this.json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = parts[0].replace(rdecode, decodeURIComponent);\n\t\t\t\t\tcookie = converter.read ?\n\t\t\t\t\t\tconverter.read(cookie, name) : converter(cookie, name) ||\n\t\t\t\t\t\tcookie.replace(rdecode, decodeURIComponent);\n\n\t\t\t\t\tif (this.json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tresult = cookie;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\tresult[name] = cookie;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tapi.set = api;\n\t\tapi.get = function (key) {\n\t\t\treturn api.call(api, key);\n\t\t};\n\t\tapi.getJSON = function () {\n\t\t\treturn api.apply({\n\t\t\t\tjson: true\n\t\t\t}, [].slice.call(arguments));\n\t\t};\n\t\tapi.defaults = {};\n\n\t\tapi.remove = function (key, attributes) {\n\t\t\tapi(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar require;var require;/*! load-js v3.0.2 - Wed Dec 20 2017 16:30:02 GMT-0500 (EST). (c) 2017 Miguel Castillo . Licensed under MIT */\n!function(e){if(true)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).loadJS=e()}}(function(){return function e(r,t,n){function o(i,u){if(!t[i]){if(!r[i]){var l=\"function\"==typeof require&&require;if(!u&&l)return require(i,!0);if(a)return a(i,!0);var d=new Error(\"Cannot find module '\"+i+\"'\");throw d.code=\"MODULE_NOT_FOUND\",d}var c=t[i]={exports:{}};r[i][0].call(c.exports,function(e){var t=r[i][1][e];return o(t||e)},c,c.exports,e,r,t,n)}return t[i].exports}for(var a=\"function\"==typeof require&&require,i=0;i true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isSymbol = __webpack_require__(10);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = 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/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar settle = __webpack_require__(104);\nvar buildURL = __webpack_require__(106);\nvar parseHeaders = __webpack_require__(107);\nvar isURLSameOrigin = __webpack_require__(108);\nvar createError = __webpack_require__(27);\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || __webpack_require__(109);\n\nmodule.exports = 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 var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (\"production\" !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\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[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\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 // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : 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 = __webpack_require__(110);\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.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\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar enhanceError = __webpack_require__(105);\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 */\nmodule.exports = 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/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\nmodule.exports = Cancel;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t} else if (typeof module !== 'undefined' && module.exports){\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\tglobal.sha256 = factory();\r\n\t}\r\n})(this, function () {\r\n\r\nvar sha256 = function sha256(ascii) {\r\n\tfunction rightRotate(value, amount) {\r\n\t\treturn (value>>>amount) | (value<<(32 - amount));\r\n\t};\r\n\t\r\n\tvar mathPow = Math.pow;\r\n\tvar maxWord = mathPow(2, 32);\r\n\tvar lengthProperty = 'length';\r\n\tvar i, j; // Used as a counter across the whole file\r\n\tvar result = '';\r\n\r\n\tvar words = [];\r\n\tvar asciiBitLength = ascii[lengthProperty]*8;\r\n\t\r\n\t//* caching results is optional - remove/add slash from front of this line to toggle\r\n\t// Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes\r\n\t// (we actually calculate the first 64, but extra values are just ignored)\r\n\tvar hash = sha256.h = sha256.h || [];\r\n\t// Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes\r\n\tvar k = sha256.k = sha256.k || [];\r\n\tvar primeCounter = k[lengthProperty];\r\n\t/*/\r\n\tvar hash = [], k = [];\r\n\tvar primeCounter = 0;\r\n\t//*/\r\n\r\n\tvar isComposite = {};\r\n\tfor (var candidate = 2; primeCounter < 64; candidate++) {\r\n\t\tif (!isComposite[candidate]) {\r\n\t\t\tfor (i = 0; i < 313; i += candidate) {\r\n\t\t\t\tisComposite[i] = candidate;\r\n\t\t\t}\r\n\t\t\thash[primeCounter] = (mathPow(candidate, .5)*maxWord)|0;\r\n\t\t\tk[primeCounter++] = (mathPow(candidate, 1/3)*maxWord)|0;\r\n\t\t}\r\n\t}\r\n\t\r\n\tascii += '\\x80'; // Append '1' bit (plus zero padding)\r\n\twhile (ascii[lengthProperty]%64 - 56) ascii += '\\x00'; // More zero padding\r\n\tfor (i = 0; i < ascii[lengthProperty]; i++) {\r\n\t\tj = ascii.charCodeAt(i);\r\n\t\tif (j>>8) return; // ASCII check: only accept characters in range 0-255\r\n\t\twords[i>>2] |= j << ((3 - i)%4)*8;\r\n\t}\r\n\twords[words[lengthProperty]] = ((asciiBitLength/maxWord)|0);\r\n\twords[words[lengthProperty]] = (asciiBitLength)\r\n\t\r\n\t// process each chunk\r\n\tfor (j = 0; j < words[lengthProperty];) {\r\n\t\tvar w = words.slice(j, j += 16); // The message is expanded into 64 words as part of the iteration\r\n\t\tvar oldHash = hash;\r\n\t\t// This is now the \"working hash\", often labelled as variables a...g\r\n\t\t// (we have to truncate as well, otherwise extra entries at the end accumulate\r\n\t\thash = hash.slice(0, 8);\r\n\t\t\r\n\t\tfor (i = 0; i < 64; i++) {\r\n\t\t\tvar i2 = i + j;\r\n\t\t\t// Expand the message into 64 words\r\n\t\t\t// Used below if \r\n\t\t\tvar w15 = w[i - 15], w2 = w[i - 2];\r\n\r\n\t\t\t// Iterate\r\n\t\t\tvar a = hash[0], e = hash[4];\r\n\t\t\tvar temp1 = hash[7]\r\n\t\t\t\t+ (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) // S1\r\n\t\t\t\t+ ((e&hash[5])^((~e)&hash[6])) // ch\r\n\t\t\t\t+ k[i]\r\n\t\t\t\t// Expand the message schedule if needed\r\n\t\t\t\t+ (w[i] = (i < 16) ? w[i] : (\r\n\t\t\t\t\t\tw[i - 16]\r\n\t\t\t\t\t\t+ (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15>>>3)) // s0\r\n\t\t\t\t\t\t+ w[i - 7]\r\n\t\t\t\t\t\t+ (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2>>>10)) // s1\r\n\t\t\t\t\t)|0\r\n\t\t\t\t);\r\n\t\t\t// This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble\r\n\t\t\tvar temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) // S0\r\n\t\t\t\t+ ((a&hash[1])^(a&hash[2])^(hash[1]&hash[2])); // maj\r\n\t\t\t\r\n\t\t\thash = [(temp1 + temp2)|0].concat(hash); // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice()\r\n\t\t\thash[4] = (hash[4] + temp1)|0;\r\n\t\t}\r\n\t\t\r\n\t\tfor (i = 0; i < 8; i++) {\r\n\t\t\thash[i] = (hash[i] + oldHash[i])|0;\r\n\t\t}\r\n\t}\r\n\t\r\n\tfor (i = 0; i < 8; i++) {\r\n\t\tfor (j = 3; j + 1; j--) {\r\n\t\t\tvar b = (hash[i]>>(j*8))&255;\r\n\t\t\tresult += ((b < 16) ? 0 : '') + b.toString(16);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\n\r\nsha256.code = \"var sha256=function a(b){function c(a,b){return a>>>b|a<<32-b}for(var d,e,f=Math.pow,g=f(2,32),h=\\\"length\\\",i=\\\"\\\",j=[],k=8*b[h],l=a.h=a.h||[],m=a.k=a.k||[],n=m[h],o={},p=2;64>n;p++)if(!o[p]){for(d=0;313>d;d+=p)o[d]=p;l[n]=f(p,.5)*g|0,m[n++]=f(p,1/3)*g|0}for(b+=\\\"\\\\x80\\\";b[h]%64-56;)b+=\\\"\\\\x00\\\";for(d=0;d>8)return;j[d>>2]|=e<<(3-d)%4*8}for(j[j[h]]=k/g|0,j[j[h]]=k,e=0;ed;d++){var s=q[d-15],t=q[d-2],u=l[0],v=l[4],w=l[7]+(c(v,6)^c(v,11)^c(v,25))+(v&l[5]^~v&l[6])+m[d]+(q[d]=16>d?q[d]:q[d-16]+(c(s,7)^c(s,18)^s>>>3)+q[d-7]+(c(t,17)^c(t,19)^t>>>10)|0),x=(c(u,2)^c(u,13)^c(u,22))+(u&l[1]^u&l[2]^l[1]&l[2]);l=[w+x|0].concat(l),l[4]=l[4]+w|0}for(d=0;8>d;d++)l[d]=l[d]+r[d]|0}for(d=0;8>d;d++)for(e=3;e+1;e--){var y=l[d]>>8*e&255;i+=(16>y?0:\\\"\\\")+y.toString(16)}return i};\";\r\n\r\nreturn sha256;\r\n\r\n});\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(32);\nmodule.exports = __webpack_require__(37);\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (typeof Promise === 'undefined') {\n // Rejection tracking prevents a common issue where React gets into an\n // inconsistent state due to an error, but it gets swallowed by a Promise,\n // and the user has no idea what causes React's erratic future behavior.\n __webpack_require__(33).enable();\n window.Promise = __webpack_require__(35);\n}\n\n// Object.assign() is commonly used with React.\n// It will use the native implementation if it's present and isn't buggy.\nObject.assign = __webpack_require__(36);\n\n// In tests, polyfill requestAnimationFrame since jsdom doesn't provide it yet.\n// We don't polyfill it in the browser--this is user's responsibility.\nif (false) {\n require('raf').polyfill(global);\n}\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Promise = __webpack_require__(18);\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._47 = null;\n Promise._71 = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._47 = function (promise) {\n if (\n promise._83 === 2 && // IS REJECTED\n rejections[promise._56]\n ) {\n if (rejections[promise._56].logged) {\n onHandled(promise._56);\n } else {\n clearTimeout(rejections[promise._56].timeout);\n }\n delete rejections[promise._56];\n }\n };\n Promise._71 = function (promise, err) {\n if (promise._75 === 0) { // not yet handled\n promise._56 = id++;\n rejections[promise._56] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._56),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = __webpack_require__(18);\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._44);\n p._83 = 1;\n p._18 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._83 === 3) {\n val = val._18;\n }\n if (val._83 === 1) return res(i, val._18);\n if (val._83 === 2) reject(val._18);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_loglevel__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_when_dom_ready__ = __webpack_require__(38);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__settings__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__bootstrap__ = __webpack_require__(39);\nfunction index(){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.setDefaultLevel(__WEBPACK_IMPORTED_MODULE_2__settings__[\"a\" /* default */].defaultLogLevel);return Object(__WEBPACK_IMPORTED_MODULE_1_when_dom_ready__[\"a\" /* default */])().then(function(){return Object(__WEBPACK_IMPORTED_MODULE_3__bootstrap__[\"a\" /* default */])();});}index();/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* eslint no-void: \"off\" */\n\n// Loaded ready states\nvar loadedStates = ['interactive', 'complete'];\n\n// Return Promise\nvar whenDomReady = function whenDomReady(cb, doc) {\n\treturn new Promise(function (resolve) {\n\t\t// Allow doc to be passed in as the lone first param\n\t\tif (cb && typeof cb !== 'function') {\n\t\t\tdoc = cb;\n\t\t\tcb = null;\n\t\t}\n\n\t\t// Use global document if we don't have one\n\t\tdoc = doc || window.document;\n\n\t\t// Handle DOM load\n\t\tvar done = function done() {\n\t\t\treturn resolve(void (cb && setTimeout(cb)));\n\t\t};\n\n\t\t// Resolve now if DOM has already loaded\n\t\t// Otherwise wait for DOMContentLoaded\n\t\tif (loadedStates.indexOf(doc.readyState) !== -1) {\n\t\t\tdone();\n\t\t} else {\n\t\t\tdoc.addEventListener('DOMContentLoaded', done);\n\t\t}\n\t});\n};\n\n// Promise chain helper\nwhenDomReady.resume = function (doc) {\n\treturn function (val) {\n\t\treturn whenDomReady(doc).then(function () {\n\t\t\treturn val;\n\t\t});\n\t};\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (whenDomReady);\n//# sourceMappingURL=index.es2015.js.map\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_loglevel__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_js_cookie__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_js_cookie___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_js_cookie__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Sailthru__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Braze__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__PIP__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__MediaOS__ = __webpack_require__(120);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__liid__ = __webpack_require__(16);\n/* global window *//**\n * Sync user ID before starting a Braze session.\n * @param {Object} sailthru - Sailthru instance.\n * @param {Object} braze - Braze instance.\n * @param {Object} pip - PIP instance.\n */function syncUserVeryLocal(sailthru,braze,pip){if(!sailthru.isSailthruReady||!braze.isBrazeReady){return;}sailthru.fetchCurrentUserData().then(function(){return braze.changeUser(sailthru.userEmailHash);}).then(function(){return braze.fetchCurrentUserData();}).then(function(){return braze.openSession();}).then(function(){return braze.setCustomAttributes();}).then(function(){return pip.sendUserLinkingData(sailthru.userEmailHash,braze.userId);}).then(function(){return pip.getUserLocationPermissionStatus();}).then(function(){return pip.getUserLocation();}).then(function(){return pip.getUserNeighborhoods();}).then(function(){return pip.sendUserLocationData();}).then(function(){return braze.setLastKnownLocation(pip.location,pip.neighborhoods);}).then(function(){return braze.pushRequest();}).catch(function(error){return __WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error(error);});}/**\n * Sync user ID before starting a Braze session.\n * @param {Object} sailthru - Sailthru instance.\n * @param {Object} braze - Braze instance.\n * @param {Object} pip - PIP instance.\n */function syncUserMediaOS(sailthru,braze,pip){if(!sailthru.isSailthruReady||!braze.isBrazeReady){return;}var cid=__WEBPACK_IMPORTED_MODULE_1_js_cookie___default.a.get('_hrstCID');braze.changeUser(cid).then(function(){return braze.openSession();}).then(function(){return pip.getUserLocationPermissionStatus();}).then(function(){return pip.getUserLocation();}).then(function(){return pip.getUserNeighborhoods();}).then(function(){return pip.sendUserLocationData();}).then(function(){return braze.setLastKnownLocation(pip.location,pip.neighborhoods);}).then(function(){return __WEBPACK_IMPORTED_MODULE_5__MediaOS__[\"a\" /* default */].updateWeather(pip.location);}).then(function(){return braze.pushRequest();}).catch(function(error){return __WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error(error);});}/**\n * Load and initialize required scripts.\n */function bootstrap(){var sailthru=new __WEBPACK_IMPORTED_MODULE_2__Sailthru__[\"a\" /* default */]();var braze=new __WEBPACK_IMPORTED_MODULE_3__Braze__[\"a\" /* default */]();var pip=new __WEBPACK_IMPORTED_MODULE_4__PIP__[\"a\" /* default */]();var components=[sailthru,braze,pip];__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.debug('liid = ['+Object(__WEBPACK_IMPORTED_MODULE_6__liid__[\"a\" /* default */])()+']');Promise.all(components.map(function(component){return component.load();})).then(function(){components.map(function(component){return component.init();});if(window.VLCL){syncUserVeryLocal(sailthru,braze,pip);}if(window.HRST){syncUserMediaOS(sailthru,braze,pip);}}).catch(function(error){return __WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error(error);});}/* harmony default export */ __webpack_exports__[\"a\"] = (bootstrap);\n\n/***/ }),\n/* 40 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_loglevel__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_load_js__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_load_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_load_js__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_get__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_get___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_get__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__settings__ = __webpack_require__(2);\nvar _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};var _createClass=function(){function defineProperties(target,props){for(var i=0;i true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoizeCapped = __webpack_require__(48);\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoize = __webpack_require__(49);\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(50);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar mapCacheClear = __webpack_require__(51),\n mapCacheDelete = __webpack_require__(71),\n mapCacheGet = __webpack_require__(73),\n mapCacheHas = __webpack_require__(74),\n mapCacheSet = __webpack_require__(75);\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Hash = __webpack_require__(52),\n ListCache = __webpack_require__(64),\n Map = __webpack_require__(70);\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hashClear = __webpack_require__(53),\n hashDelete = __webpack_require__(60),\n hashGet = __webpack_require__(61),\n hashHas = __webpack_require__(62),\n hashSet = __webpack_require__(63);\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(3);\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(55),\n isMasked = __webpack_require__(56),\n isObject = __webpack_require__(14),\n toSource = __webpack_require__(58);\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(22),\n isObject = __webpack_require__(14);\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar coreJsData = __webpack_require__(57);\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(12);\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports) {\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(3);\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(3);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(3);\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar listCacheClear = __webpack_require__(65),\n listCacheDelete = __webpack_require__(66),\n listCacheGet = __webpack_require__(67),\n listCacheHas = __webpack_require__(68),\n listCacheSet = __webpack_require__(69);\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports) {\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(4);\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(4);\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(4);\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(4);\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(13),\n root = __webpack_require__(12);\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(5);\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(5);\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(5);\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(5);\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseToString = __webpack_require__(77);\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(11),\n arrayMap = __webpack_require__(78),\n isArray = __webpack_require__(9),\n isSymbol = __webpack_require__(10);\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_loglevel__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_load_js__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_load_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_load_js__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_get__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_get___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_get__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_store_dist_store_modern__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_store_dist_store_modern___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_store_dist_store_modern__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__settings__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__liid__ = __webpack_require__(16);\nvar _createClass=function(){function defineProperties(target,props){for(var i=0;i__WEBPACK_IMPORTED_MODULE_4__settings__[\"a\" /* default */].sessionLength;}}]);return Braze;}();/* harmony default export */ __webpack_exports__[\"a\"] = (Braze);\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(6)\nvar slice = util.slice\nvar pluck = util.pluck\nvar each = util.each\nvar bind = util.bind\nvar create = util.create\nvar isList = util.isList\nvar isFunction = util.isFunction\nvar isObject = util.isObject\n\nmodule.exports = {\n\tcreateStore: createStore\n}\n\nvar storeAPI = {\n\tversion: '2.0.12',\n\tenabled: false,\n\t\n\t// get returns the value of the given key. If that value\n\t// is undefined, it returns optionalDefaultValue instead.\n\tget: function(key, optionalDefaultValue) {\n\t\tvar data = this.storage.read(this._namespacePrefix + key)\n\t\treturn this._deserialize(data, optionalDefaultValue)\n\t},\n\n\t// set will store the given value at key and returns value.\n\t// Calling set with value === undefined is equivalent to calling remove.\n\tset: function(key, value) {\n\t\tif (value === undefined) {\n\t\t\treturn this.remove(key)\n\t\t}\n\t\tthis.storage.write(this._namespacePrefix + key, this._serialize(value))\n\t\treturn value\n\t},\n\n\t// remove deletes the key and value stored at the given key.\n\tremove: function(key) {\n\t\tthis.storage.remove(this._namespacePrefix + key)\n\t},\n\n\t// each will call the given callback once for each key-value pair\n\t// in this store.\n\teach: function(callback) {\n\t\tvar self = this\n\t\tthis.storage.each(function(val, namespacedKey) {\n\t\t\tcallback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))\n\t\t})\n\t},\n\n\t// clearAll will remove all the stored key-value pairs in this store.\n\tclearAll: function() {\n\t\tthis.storage.clearAll()\n\t},\n\n\t// additional functionality that can't live in plugins\n\t// ---------------------------------------------------\n\n\t// hasNamespace returns true if this store instance has the given namespace.\n\thasNamespace: function(namespace) {\n\t\treturn (this._namespacePrefix == '__storejs_'+namespace+'_')\n\t},\n\n\t// createStore creates a store.js instance with the first\n\t// functioning storage in the list of storage candidates,\n\t// and applies the the given mixins to the instance.\n\tcreateStore: function() {\n\t\treturn createStore.apply(this, arguments)\n\t},\n\t\n\taddPlugin: function(plugin) {\n\t\tthis._addPlugin(plugin)\n\t},\n\t\n\tnamespace: function(namespace) {\n\t\treturn createStore(this.storage, this.plugins, namespace)\n\t}\n}\n\nfunction _warn() {\n\tvar _console = (typeof console == 'undefined' ? null : console)\n\tif (!_console) { return }\n\tvar fn = (_console.warn ? _console.warn : _console.log)\n\tfn.apply(_console, arguments)\n}\n\nfunction createStore(storages, plugins, namespace) {\n\tif (!namespace) {\n\t\tnamespace = ''\n\t}\n\tif (storages && !isList(storages)) {\n\t\tstorages = [storages]\n\t}\n\tif (plugins && !isList(plugins)) {\n\t\tplugins = [plugins]\n\t}\n\n\tvar namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')\n\tvar namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)\n\tvar legalNamespaces = /^[a-zA-Z0-9_\\-]*$/ // alpha-numeric + underscore and dash\n\tif (!legalNamespaces.test(namespace)) {\n\t\tthrow new Error('store.js namespaces can only have alphanumerics + underscores and dashes')\n\t}\n\t\n\tvar _privateStoreProps = {\n\t\t_namespacePrefix: namespacePrefix,\n\t\t_namespaceRegexp: namespaceRegexp,\n\n\t\t_testStorage: function(storage) {\n\t\t\ttry {\n\t\t\t\tvar testStr = '__storejs__test__'\n\t\t\t\tstorage.write(testStr, testStr)\n\t\t\t\tvar ok = (storage.read(testStr) === testStr)\n\t\t\t\tstorage.remove(testStr)\n\t\t\t\treturn ok\n\t\t\t} catch(e) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\t_assignPluginFnProp: function(pluginFnProp, propName) {\n\t\t\tvar oldFn = this[propName]\n\t\t\tthis[propName] = function pluginFn() {\n\t\t\t\tvar args = slice(arguments, 0)\n\t\t\t\tvar self = this\n\n\t\t\t\t// super_fn calls the old function which was overwritten by\n\t\t\t\t// this mixin.\n\t\t\t\tfunction super_fn() {\n\t\t\t\t\tif (!oldFn) { return }\n\t\t\t\t\teach(arguments, function(arg, i) {\n\t\t\t\t\t\targs[i] = arg\n\t\t\t\t\t})\n\t\t\t\t\treturn oldFn.apply(self, args)\n\t\t\t\t}\n\n\t\t\t\t// Give mixing function access to super_fn by prefixing all mixin function\n\t\t\t\t// arguments with super_fn.\n\t\t\t\tvar newFnArgs = [super_fn].concat(args)\n\n\t\t\t\treturn pluginFnProp.apply(self, newFnArgs)\n\t\t\t}\n\t\t},\n\n\t\t_serialize: function(obj) {\n\t\t\treturn JSON.stringify(obj)\n\t\t},\n\n\t\t_deserialize: function(strVal, defaultVal) {\n\t\t\tif (!strVal) { return defaultVal }\n\t\t\t// It is possible that a raw string value has been previously stored\n\t\t\t// in a storage without using store.js, meaning it will be a raw\n\t\t\t// string value instead of a JSON serialized string. By defaulting\n\t\t\t// to the raw string value in case of a JSON parse error, we allow\n\t\t\t// for past stored values to be forwards-compatible with store.js\n\t\t\tvar val = ''\n\t\t\ttry { val = JSON.parse(strVal) }\n\t\t\tcatch(e) { val = strVal }\n\n\t\t\treturn (val !== undefined ? val : defaultVal)\n\t\t},\n\t\t\n\t\t_addStorage: function(storage) {\n\t\t\tif (this.enabled) { return }\n\t\t\tif (this._testStorage(storage)) {\n\t\t\t\tthis.storage = storage\n\t\t\t\tthis.enabled = true\n\t\t\t}\n\t\t},\n\n\t\t_addPlugin: function(plugin) {\n\t\t\tvar self = this\n\n\t\t\t// If the plugin is an array, then add all plugins in the array.\n\t\t\t// This allows for a plugin to depend on other plugins.\n\t\t\tif (isList(plugin)) {\n\t\t\t\teach(plugin, function(plugin) {\n\t\t\t\t\tself._addPlugin(plugin)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Keep track of all plugins we've seen so far, so that we\n\t\t\t// don't add any of them twice.\n\t\t\tvar seenPlugin = pluck(this.plugins, function(seenPlugin) {\n\t\t\t\treturn (plugin === seenPlugin)\n\t\t\t})\n\t\t\tif (seenPlugin) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.plugins.push(plugin)\n\n\t\t\t// Check that the plugin is properly formed\n\t\t\tif (!isFunction(plugin)) {\n\t\t\t\tthrow new Error('Plugins must be function values that return objects')\n\t\t\t}\n\n\t\t\tvar pluginProperties = plugin.call(this)\n\t\t\tif (!isObject(pluginProperties)) {\n\t\t\t\tthrow new Error('Plugins must return an object of function properties')\n\t\t\t}\n\n\t\t\t// Add the plugin function properties to this store instance.\n\t\t\teach(pluginProperties, function(pluginFnProp, propName) {\n\t\t\t\tif (!isFunction(pluginFnProp)) {\n\t\t\t\t\tthrow new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')\n\t\t\t\t}\n\t\t\t\tself._assignPluginFnProp(pluginFnProp, propName)\n\t\t\t})\n\t\t},\n\t\t\n\t\t// Put deprecated properties in the private API, so as to not expose it to accidential\n\t\t// discovery through inspection of the store object.\n\t\t\n\t\t// Deprecated: addStorage\n\t\taddStorage: function(storage) {\n\t\t\t_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')\n\t\t\tthis._addStorage(storage)\n\t\t}\n\t}\n\n\tvar store = create(_privateStoreProps, storeAPI, {\n\t\tplugins: []\n\t})\n\tstore.raw = {}\n\teach(store, function(prop, propName) {\n\t\tif (isFunction(prop)) {\n\t\t\tstore.raw[propName] = bind(store, prop)\t\t\t\n\t\t}\n\t})\n\teach(storages, function(storage) {\n\t\tstore._addStorage(storage)\n\t})\n\teach(plugins, function(plugin) {\n\t\tstore._addPlugin(plugin)\n\t})\n\treturn store\n}\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(6)\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'localStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nfunction localStorage() {\n\treturn Global.localStorage\n}\n\nfunction read(key) {\n\treturn localStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn localStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = localStorage().length - 1; i >= 0; i--) {\n\t\tvar key = localStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn localStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn localStorage().clear()\n}\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(6)\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'sessionStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll\n}\n\nfunction sessionStorage() {\n\treturn Global.sessionStorage\n}\n\nfunction read(key) {\n\treturn sessionStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn sessionStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = sessionStorage().length - 1; i >= 0; i--) {\n\t\tvar key = sessionStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn sessionStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn sessionStorage().clear()\n}\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// cookieStorage is useful Safari private browser mode, where localStorage\n// doesn't work but cookies do. This implementation is adopted from\n// https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage\n\nvar util = __webpack_require__(6)\nvar Global = util.Global\nvar trim = util.trim\n\nmodule.exports = {\n\tname: 'cookieStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar doc = Global.document\n\nfunction read(key) {\n\tif (!key || !_has(key)) { return null }\n\tvar regexpStr = \"(?:^|.*;\\\\s*)\" +\n\t\tescape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") +\n\t\t\"\\\\s*\\\\=\\\\s*((?:[^;](?!;))*[^;]?).*\"\n\treturn unescape(doc.cookie.replace(new RegExp(regexpStr), \"$1\"))\n}\n\nfunction each(callback) {\n\tvar cookies = doc.cookie.split(/; ?/g)\n\tfor (var i = cookies.length - 1; i >= 0; i--) {\n\t\tif (!trim(cookies[i])) {\n\t\t\tcontinue\n\t\t}\n\t\tvar kvp = cookies[i].split('=')\n\t\tvar key = unescape(kvp[0])\n\t\tvar val = unescape(kvp[1])\n\t\tcallback(val, key)\n\t}\n}\n\nfunction write(key, data) {\n\tif(!key) { return }\n\tdoc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\"\n}\n\nfunction remove(key) {\n\tif (!key || !_has(key)) {\n\t\treturn\n\t}\n\tdoc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\"\n}\n\nfunction clearAll() {\n\teach(function(_, key) {\n\t\tremove(key)\n\t})\n}\n\nfunction _has(key) {\n\treturn (new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(doc.cookie)\n}\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\n// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\n\nmodule.exports = {\n\tname: 'memoryStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar memoryStorage = {}\n\nfunction read(key) {\n\treturn memoryStorage[key]\n}\n\nfunction write(key, data) {\n\tmemoryStorage[key] = data\n}\n\nfunction each(callback) {\n\tfor (var key in memoryStorage) {\n\t\tif (memoryStorage.hasOwnProperty(key)) {\n\t\t\tcallback(memoryStorage[key], key)\n\t\t}\n\t}\n}\n\nfunction remove(key) {\n\tdelete memoryStorage[key]\n}\n\nfunction clearAll(key) {\n\tmemoryStorage = {}\n}\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar rng = __webpack_require__(86);\nvar bytesToUuid = __webpack_require__(87);\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\n// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && msCrypto.getRandomValues.bind(msCrypto));\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\nmodule.exports = bytesToUuid;\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_loglevel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_loglevel__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_get__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_get___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_get__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_set__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_set___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_set__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_ismobilejs__ = __webpack_require__(95);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_ismobilejs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_ismobilejs__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_ua_parser_js__ = __webpack_require__(96);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_ua_parser_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_ua_parser_js__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_axios__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_axios___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_axios__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_js_cookie__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_js_cookie___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_js_cookie__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_tiny_sha256__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_tiny_sha256___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_tiny_sha256__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__settings__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__liid__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__message__ = __webpack_require__(118);\nvar _createClass=function(){function defineProperties(target,props){for(var i=0;i0){var allTopics=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(_this.globalConfig,'topic_manager.topics',{});var filteredTopics=allTopics.filter(function(topic){return topic.enabled;});__WEBPACK_IMPORTED_MODULE_2_lodash_set___default()(_this.globalConfig,'topic_manager.topics',filteredTopics);}}).catch(function(error){return __WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error(error);}).then(function(){return Promise.resolve();});}/**\n * Initialize PIP.\n */},{key:'init',value:function init(){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.debug('PIP initialized.');}/**\n * Return site env.\n * @returns {String}\n */},{key:'getApiKey',/**\n * Retrieves API key for a topic.\n * @param {String} topicName - topic name.\n * @returns {String}\n */value:function getApiKey(topicName){var topicManager=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(this.globalConfig,'topic_manager.topics',{});var topicData=topicManager.find(function(topic){return topic.name===topicName;});return __WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(topicData,'apikey','');}/**\n * Retrieves hash difficulty for a topic.\n * @param {String} topicName - topic name.\n * @returns {String}\n */},{key:'getDifficulty',value:function getDifficulty(topicName){var topicManager=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(this.globalConfig,'topic_manager.topics',{});var topicData=topicManager.find(function(topic){return topic.name===topicName;});return __WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(topicData,'powd',3);}/**\n * Retrieves endpoint for a topic.\n * @param {String} topicName - topic name.\n * @param {Boolean} rawFormat - if true, returns endpoint without replacing macros.\n * @returns {String}\n */},{key:'getEndpoint',value:function getEndpoint(topicName){var rawFormat=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var topicManager=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(this.globalConfig,'topic_manager.topics',{});var topicData=topicManager.find(function(topic){return topic.name===topicName;});var endpoint=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(topicData,'endpoint','');if(rawFormat){return endpoint;}endpoint=endpoint.replace('{env}',this.env);endpoint=endpoint.replace('{version}',this.version);return endpoint;}/**\n * Add user id to linking IDs array.\n * @param {String} id - user id.\n * @param {String} context - user id context.\n * @param {String} source - user id source, optional.\n * @param {Boolean} hash - whether or not to hash the id, defaults to false.\n */},{key:'setUserLinkingId',value:function setUserLinkingId(id,context){var source=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var hash=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;if(!id||!context){return;}var hashed=hash?__WEBPACK_IMPORTED_MODULE_8_tiny_sha256___default()(id):id;this.ids.push({user_id:hashed,user_id_context:context,user_id_source:source});}/**\n * Format user linking IDs array.\n * @param {String} sailthruId - SHA-256 hash of user's email.\n * @param {String} brazeId - Braze user ID.\n * @returns {Array}\n */},{key:'getUserLinkingIds',value:function getUserLinkingIds(sailthruId,brazeId){if(sailthruId){this.ids.push({user_id:sailthruId,user_id_context:'sha256-email',user_id_source:null});this.ids.push({user_id:sailthruId,user_id_context:'sailthruID',user_id_source:null});}if(brazeId){this.ids.push({user_id:brazeId,user_id_context:'brazeID',user_id_source:null});}var anonUserCookie=null;if(!this.ids.length){anonUserCookie=__WEBPACK_IMPORTED_MODULE_6_js_cookie___default.a.get('sailthru_visitor');}if(anonUserCookie){this.ids.push({user_id:anonUserCookie,user_id_context:'sailthruID-anon',user_id_source:null});}var idsDebug=this.ids.map(function(id){return id.user_id_context;});__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.debug('User linking IDs = ['+idsDebug.join(', ')+']');return this.ids;}/**\n * Formats a user linking message payload.\n * @param {Array} ids - Array of user IDs.\n * @returns {Object}\n */},{key:'getUserLinkingPayload',value:function getUserLinkingPayload(ids){var ts=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Date.now();var parser=new __WEBPACK_IMPORTED_MODULE_4_ua_parser_js___default.a();var result=parser.getResult();var platform=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(result,'os.name')+' '+(__WEBPACK_IMPORTED_MODULE_3_ismobilejs___default.a.any?'mobile':'desktop');return{version:'1.0',ts:ts,liid:Object(__WEBPACK_IMPORTED_MODULE_10__liid__[\"a\" /* default */])(),device:__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(result,'device.model',null),user_agent:__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(result,'browser.name',null),client_version:__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(result,'browser.version',null),platform:platform,site_id:this.siteId,ids:ids};}/**\n * Send user linking data to PIP.\n * @param {String} sailthruId - SHA-256 hash of user's email.\n * @param {String} brazeId - Braze user ID.\n * @returns {Promise}\n */},{key:'sendUserLinkingData',value:function sendUserLinkingData(sailthruId,brazeId){if(!this.isPIPReady){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error('Tried to send PIP data before config was loaded.');return Promise.resolve();}var topic='userid';var ids=this.getUserLinkingIds(sailthruId,brazeId);if(!ids.length){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error('No user linking IDs found.');return Promise.resolve();}var message=Object(__WEBPACK_IMPORTED_MODULE_11__message__[\"a\" /* getPublishedMessageFormat */])(JSON.stringify(this.getUserLinkingPayload(ids)),this.getApiKey(topic),topic,this.getDifficulty(topic));var postSuccess=false;__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.debug('Sending user linking data to PIP.');return __WEBPACK_IMPORTED_MODULE_5_axios___default.a.post(this.getEndpoint(topic),message,{headers:{'Content-Type':'text/plain'}}).then(function(){postSuccess=true;}).catch(function(error){return __WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error(error);}).then(function(){if(postSuccess){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.debug('User linking data sent to PIP successfully.');}return Promise.resolve();});}/**\n * Fetch neighborhoods from user location data.\n * @returns {Promise}\n */},{key:'getUserNeighborhoods',value:function getUserNeighborhoods(){var _this2=this;if(!this.location){return Promise.resolve();}var _location$=this.location[0],lat=_location$.lat,lon=_location$.lon;var requestUrl=this.hoodieUrl+'?lat='+lat+'&lon='+lon;return __WEBPACK_IMPORTED_MODULE_5_axios___default.a.get(requestUrl,{timeout:__WEBPACK_IMPORTED_MODULE_9__settings__[\"a\" /* default */].timeout}).then(function(response){_this2.neighborhoods=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(response,'data.neighborhoods',null);}).catch(function(error){return __WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error(error);}).then(function(){return Promise.resolve();});}/**\n * Check if user geo location permission has been granted.\n * @returns {Promise}\n */},{key:'getUserLocationPermissionStatus',value:function getUserLocationPermissionStatus(){var _this3=this;if(!__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(window,'navigator.permissions')){return Promise.resolve();}var permission={name:'geolocation'};return new Promise(function(resolve){window.navigator.permissions.query(permission).then(function(result){_this3.userLocationPermissionGranted=result.state==='granted';return resolve();});});}/**\n * Check if user location prompt can be triggered.\n * @returns {Boolean}\n */},{key:'setUserLocation',/**\n * Set user location data.\n * @param {String} latitude - Latitude.\n * @param {String} longitude - Longitude.\n */value:function setUserLocation(latitude,longitude){this.location=[{ts:Date.now(),lat:latitude,lon:longitude,motion_recognition:[{motion_type:'still',motion_confidence_score:0}]}];}/**\n * Ask for permission and fetch user geo location.\n * @param {Boolean} ignoreSession - Ignore session location prompt limit.\n * @returns {Promise}\n */},{key:'getUserLocation',value:function getUserLocation(){var _this4=this;var ignoreSession=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(!ignoreSession&&!this.canRequestUserLocation){return Promise.resolve();}var options={enableHighAccuracy:false,timeout:10000,maximumAge:0};return new Promise(function(resolve){__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern___default.a.set(_this4.lastLocationRequestKey,Date.now());if(!window.navigator.geolocation){resolve();}window.navigator.geolocation.getCurrentPosition(function(location){_this4.setUserLocation(location.coords.latitude,location.coords.longitude);resolve();},function(){return resolve();},options);});}/**\n * Formats a user location message payload.\n * @param {Object} location - User location object.\n * @returns {Object}\n */},{key:'getUserLocationPayload',value:function getUserLocationPayload(location){var ts=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Date.now();var parser=new __WEBPACK_IMPORTED_MODULE_4_ua_parser_js___default.a();var result=parser.getResult();var platform=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(result,'os.name')+' '+(__WEBPACK_IMPORTED_MODULE_3_ismobilejs___default.a.any?'mobile':'desktop');return{version:'1.0',ts:ts,user_id:Object(__WEBPACK_IMPORTED_MODULE_10__liid__[\"a\" /* default */])(),user_id_context:'liid',device:__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(result,'device.model',null),user_agent:__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(result,'browser.name',null),client_version:__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(result,'browser.version',null),platform:platform,site_id:this.siteId,location:location};}/**\n * Send user location data to PIP.\n * @returns {Promise}\n */},{key:'sendUserLocationData',value:function sendUserLocationData(){if(!this.isPIPReady){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error('Tried to send PIP data before config was loaded.');return Promise.resolve();}if(!this.canSendUserLocationToPIP){return Promise.resolve();}if(!this.location){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.warn('No user location data found.');return Promise.resolve();}__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern___default.a.set(this.lastPIPRequestKey,Date.now());var topic='userloc';var message=Object(__WEBPACK_IMPORTED_MODULE_11__message__[\"a\" /* getPublishedMessageFormat */])(JSON.stringify(this.getUserLocationPayload(this.location)),this.getApiKey(topic),topic,this.getDifficulty(topic));var postSuccess=false;__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.debug('Sending user location data to PIP.');return __WEBPACK_IMPORTED_MODULE_5_axios___default.a.post(this.getEndpoint(topic),message,{headers:{'Content-Type':'text/plain'}}).then(function(){postSuccess=true;}).catch(function(error){return __WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error(error);}).then(function(){if(postSuccess){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.debug('User location data sent to PIP successfully.');}return Promise.resolve();});}},{key:'isPIPReady',get:function get(){return this.globalConfig!==null;}},{key:'env',get:function get(){return __WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(__WEBPACK_IMPORTED_MODULE_9__settings__[\"a\" /* default */],'env','dev');}/**\n * Return site ID.\n * @returns {String}\n */},{key:'siteId',get:function get(){return __WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(__WEBPACK_IMPORTED_MODULE_9__settings__[\"a\" /* default */],'site_id','vl_nola');}/**\n * Return topic manager version.\n * @returns {String}\n */},{key:'version',get:function get(){return __WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(this.globalConfig,'topic_manager.version','');}/**\n * Return a list of available topics.\n * @returns {Array}\n */},{key:'topics',get:function get(){var topicManager=__WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(this.globalConfig,'topic_manager.topics',{});var topics=topicManager.map(function(topic){return topic.name;});return topics;}/**\n * Return Hoodie URL.\n * @returns {String}\n */},{key:'hoodieUrl',get:function get(){return __WEBPACK_IMPORTED_MODULE_1_lodash_get___default()(this.globalConfig,'hoodie_url','');}},{key:'canRequestUserLocation',get:function get(){if(this.userLocationPermissionGranted){return true;}if(!__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern___default.a.enabled){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error('Storage not available.');return true;}var lastRequest=__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern___default.a.get(this.lastLocationRequestKey);if(typeof lastRequest==='undefined'){return true;}if(Date.now()-lastRequest>__WEBPACK_IMPORTED_MODULE_9__settings__[\"a\" /* default */].sessionLength){return true;}return false;}/**\n * Check if user location data can be sent to PIP.\n * @returns {Boolean}\n */},{key:'canSendUserLocationToPIP',get:function get(){if(!__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern___default.a.enabled){__WEBPACK_IMPORTED_MODULE_0_loglevel___default.a.error('Storage not available.');return true;}var sendThreshold=1000;var lastRequest=__WEBPACK_IMPORTED_MODULE_7_store_dist_store_modern___default.a.get(this.lastPIPRequestKey);if(typeof lastRequest==='undefined'){return true;}if(Date.now()-lastRequest>sendThreshold){return true;}return false;}}]);return PIP;}();/* harmony default export */ __webpack_exports__[\"a\"] = (PIP);window.Metaphor=window.Metaphor||{};window.Metaphor.PIP=PIP;\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseSet = __webpack_require__(90);\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(91),\n castPath = __webpack_require__(21),\n isIndex = __webpack_require__(94),\n isObject = __webpack_require__(14),\n toKey = __webpack_require__(24);\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(92),\n eq = __webpack_require__(23);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(93);\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(13);\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * isMobile.js v0.4.1\n *\n * A simple library to detect Apple phones and tablets,\n * Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),\n * and any kind of seven inch device, via user agent sniffing.\n *\n * @author: Kai Mallea (kmallea@gmail.com)\n *\n * @license: http://creativecommons.org/publicdomain/zero/1.0/\n */\n(function (global) {\n\n var apple_phone = /iPhone/i,\n apple_ipod = /iPod/i,\n apple_tablet = /iPad/i,\n android_phone = /(?=.*\\bAndroid\\b)(?=.*\\bMobile\\b)/i, // Match 'Android' AND 'Mobile'\n android_tablet = /Android/i,\n amazon_phone = /(?=.*\\bAndroid\\b)(?=.*\\bSD4930UR\\b)/i,\n amazon_tablet = /(?=.*\\bAndroid\\b)(?=.*\\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\\b)/i,\n windows_phone = /Windows Phone/i,\n windows_tablet = /(?=.*\\bWindows\\b)(?=.*\\bARM\\b)/i, // Match 'Windows' AND 'ARM'\n other_blackberry = /BlackBerry/i,\n other_blackberry_10 = /BB10/i,\n other_opera = /Opera Mini/i,\n other_chrome = /(CriOS|Chrome)(?=.*\\bMobile\\b)/i,\n other_firefox = /(?=.*\\bFirefox\\b)(?=.*\\bMobile\\b)/i, // Match 'Firefox' AND 'Mobile'\n seven_inch = new RegExp(\n '(?:' + // Non-capturing group\n\n 'Nexus 7' + // Nexus 7\n\n '|' + // OR\n\n 'BNTV250' + // B&N Nook Tablet 7 inch\n\n '|' + // OR\n\n 'Kindle Fire' + // Kindle Fire\n\n '|' + // OR\n\n 'Silk' + // Kindle Fire, Silk Accelerated\n\n '|' + // OR\n\n 'GT-P1000' + // Galaxy Tab 7 inch\n\n ')', // End non-capturing group\n\n 'i'); // Case-insensitive matching\n\n var match = function(regex, userAgent) {\n return regex.test(userAgent);\n };\n\n var IsMobileClass = function(userAgent) {\n var ua = userAgent || navigator.userAgent;\n\n // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n var tmp = ua.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n ua = tmp[0];\n }\n\n // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probable happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n tmp = ua.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n ua = tmp[0];\n }\n\n this.apple = {\n phone: match(apple_phone, ua),\n ipod: match(apple_ipod, ua),\n tablet: !match(apple_phone, ua) && match(apple_tablet, ua),\n device: match(apple_phone, ua) || match(apple_ipod, ua) || match(apple_tablet, ua)\n };\n this.amazon = {\n phone: match(amazon_phone, ua),\n tablet: !match(amazon_phone, ua) && match(amazon_tablet, ua),\n device: match(amazon_phone, ua) || match(amazon_tablet, ua)\n };\n this.android = {\n phone: match(amazon_phone, ua) || match(android_phone, ua),\n tablet: !match(amazon_phone, ua) && !match(android_phone, ua) && (match(amazon_tablet, ua) || match(android_tablet, ua)),\n device: match(amazon_phone, ua) || match(amazon_tablet, ua) || match(android_phone, ua) || match(android_tablet, ua)\n };\n this.windows = {\n phone: match(windows_phone, ua),\n tablet: match(windows_tablet, ua),\n device: match(windows_phone, ua) || match(windows_tablet, ua)\n };\n this.other = {\n blackberry: match(other_blackberry, ua),\n blackberry10: match(other_blackberry_10, ua),\n opera: match(other_opera, ua),\n firefox: match(other_firefox, ua),\n chrome: match(other_chrome, ua),\n device: match(other_blackberry, ua) || match(other_blackberry_10, ua) || match(other_opera, ua) || match(other_firefox, ua) || match(other_chrome, ua)\n };\n this.seven_inch = match(seven_inch, ua);\n this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch;\n\n // excludes 'other' devices and ipods, targeting touchscreen phones\n this.phone = this.apple.phone || this.android.phone || this.windows.phone;\n\n // excludes 7 inch devices, classifying as phone or tablet is left to the user\n this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet;\n\n if (typeof window === 'undefined') {\n return this;\n }\n };\n\n var instantiate = function() {\n var IM = new IsMobileClass();\n IM.Class = IsMobileClass;\n return IM;\n };\n\n if (typeof module !== 'undefined' && module.exports && typeof window === 'undefined') {\n //node\n module.exports = IsMobileClass;\n } else if (typeof module !== 'undefined' && module.exports && typeof window !== 'undefined') {\n //browserify\n module.exports = instantiate();\n } else if (true) {\n //AMD\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (global.isMobile = instantiate()),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {\n global.isMobile = instantiate();\n }\n\n})(this);\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * UAParser.js v0.7.18\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman \n * Dual licensed under GPLv2 or MIT\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.18',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var margedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n margedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n margedRegexes[i] = regexes[i];\n }\n }\n return margedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n //var result = {},\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\n\n /*// construct object barebones\n for (p = 0; p < args[1].length; p++) {\n q = args[1][p];\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\n }*/\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n // console.log(this);\n //return this;\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n\n // Trident based\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser/Baidu\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\n ], [NAME, VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [[NAME, 'Edge'], VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\n // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\n ], [NAME, VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\n ], [NAME, VERSION], [\n\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\n ], [NAME, VERSION], [\n\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\n ], [NAME], [\n\n /(LBBROWSER)/i // LieBao Browser\n ], [NAME], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n\n /* /////////////////////\n // Media players BEGIN\n ////////////////////////\n\n , [\n\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\n /(coremedia) v((\\d+)[\\w\\._]+)/i\n ], [NAME, VERSION], [\n\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\n ], [NAME, VERSION], [\n\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\n ], [NAME, VERSION], [\n\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\n // NSPlayer/PSP-InternetRadioPlayer/Videos\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\n ], [NAME, VERSION], [\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\n ], [NAME, VERSION], [\n\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\n ], [[NAME, 'Flip Player'], VERSION], [\n\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\n ], [NAME], [\n\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\n // Gstreamer\n ], [NAME, VERSION], [\n\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\n // Java/urllib/requests/wget/cURL\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\n ], [NAME, VERSION], [\n\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\n // MPlayer SVN\n ], [NAME, VERSION], [\n\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\n ], [NAME, VERSION], [\n\n /(mplayer)/i, // MPlayer (no other info)\n /(yourmuze)/i, // YourMuze\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\n ], [NAME], [\n\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\n ], [NAME, VERSION], [\n\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\n ], [NAME, VERSION], [\n\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\n ], [NAME, VERSION], [\n\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\n ], [NAME, VERSION], [\n\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\n // inlight radio\n ], [NAME], [\n\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\n // SoundTap/Totem/Stagefright/Streamium\n ], [NAME, VERSION], [\n\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\n ], [NAME, VERSION], [\n\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\n ], [NAME, VERSION], [\n\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\n ], [[NAME, /-/g, ' '], VERSION], [\n\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\n // Windows Media Server\n ], [VERSION, [NAME, 'Windows']], [\n\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\n ], [NAME, VERSION], [\n\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\n ], [[NAME, 'rad.io'], VERSION]\n\n //////////////////////\n // Media players END\n ////////////////////*/\n\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+;))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\n /(zte)-(\\w*)/i, // ZTE\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w*)/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]*)/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w*)/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel xl|pixel)\\s/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\n\n /android.+a000(1)\\s+build/i, // OnePlus\n /android.+oneplus\\s(a\\d{4})\\s+build/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n\n\n /*//////////////////////////\n // TODO: move to string map\n ////////////////////////////\n\n /(C6603)/i // Sony Xperia Z C6603\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n /(C6903)/i // Sony Xperia Z 1\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /(SM-G900[F|H])/i // Samsung Galaxy S5\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G7102)/i // Samsung Galaxy Grand 2\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G313HZ)/i // Samsung Galaxy V\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n\n /(T3C)/i // Advan Vandroid T3C\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN S4A)/i // Advan Vandroid S4A\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\n\n /(V972M)/i // ZTE V972M\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\n\n /////////////\n // END TODO\n ///////////*/\n\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\n /linux;.+(sailfish);/i // Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]*)/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\n /(unix)\\s?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n /*\n var Browser = function (name, version) {\n this[NAME] = name;\n this[VERSION] = version;\n };\n var CPU = function (arch) {\n this[ARCHITECTURE] = arch;\n };\n var Device = function (vendor, model, type) {\n this[VENDOR] = vendor;\n this[MODEL] = model;\n this[TYPE] = type;\n };\n var Engine = Browser;\n var OS = Browser;\n */\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n //var browser = new Browser();\n //var cpu = new CPU();\n //var device = new Device();\n //var engine = new Engine();\n //var os = new OS();\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n //browser = new Browser();\n //cpu = new CPU();\n //device = new Device();\n //engine = new Engine();\n //os = new OS();\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n //UAParser.Utils = util;\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n // TODO: test!!!!!!!!\n /*\n if (require && require.main === module && process) {\n // cli\n var jsonize = function (arr) {\n var res = [];\n for (var i in arr) {\n res.push(new UAParser(arr[i]).getResult());\n }\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\n };\n if (process.stdin.isTTY) {\n // via args\n jsonize(process.argv.slice(2));\n } else {\n // via pipe\n var str = '';\n process.stdin.on('readable', function() {\n var read = process.stdin.read();\n if (read !== null) {\n str += read;\n }\n });\n process.stdin.on('end', function () {\n jsonize(str.replace(/\\n$/, '').split('\\n'));\n });\n }\n }\n */\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (\"function\" === FUNC_TYPE && __webpack_require__(97)) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n return UAParser;\n }.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if (typeof $ !== UNDEF_TYPE) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\n/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n\n/* WEBPACK VAR INJECTION */}.call(exports, {}))\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(99);\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar bind = __webpack_require__(25);\nvar Axios = __webpack_require__(101);\nvar defaults = __webpack_require__(17);\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(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.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);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = __webpack_require__(29);\naxios.CancelToken = __webpack_require__(116);\naxios.isCancel = __webpack_require__(28);\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = __webpack_require__(117);\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar defaults = __webpack_require__(17);\nvar utils = __webpack_require__(0);\nvar InterceptorManager = __webpack_require__(111);\nvar dispatchRequest = __webpack_require__(112);\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(),\n response: new InterceptorManager()\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, {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\nmodule.exports = Axios;\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = 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/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar createError = __webpack_require__(27);\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 */\nmodule.exports = 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\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 */\nmodule.exports = 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/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\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 */\nmodule.exports = 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\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\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 */\nmodule.exports = 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\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = (\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\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = (\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\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\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\nmodule.exports = InterceptorManager;\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar transformData = __webpack_require__(113);\nvar isCancel = __webpack_require__(28);\nvar defaults = __webpack_require__(17);\nvar isAbsoluteURL = __webpack_require__(114);\nvar combineURLs = __webpack_require__(115);\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 */\nmodule.exports = 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.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/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\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 */\nmodule.exports = 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\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 */\nmodule.exports = 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/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Cancel = __webpack_require__(29);\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(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\nmodule.exports = CancelToken;\n\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export getHeader */\n/* unused harmony export getCandidateMessage */\n/* unused harmony export getNumberOfLeadingZeroes */\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getPublishedMessageFormat;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_nonce__ = __webpack_require__(119);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_nonce___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_nonce__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_tiny_sha256__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_tiny_sha256___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_tiny_sha256__);\n/* global window */var NonceGenerator=__WEBPACK_IMPORTED_MODULE_0_nonce___default()(10);/**\n * Format message header.\n * @param {String} apiKey - API key.\n * @param {String} topic - Topic to publish message.\n * @param {String} epoch - Optional epoch-based timestamp.\n * @returns {String}\n */function getHeader(apiKey,topic){var epoch=arguments.length>2&&arguments[2]!==undefined?arguments[2]:Date.now();var header={apikey:apiKey,tpc:topic,epoch:epoch};var headerJson=JSON.stringify(header);var headerBase64=btoa(headerJson);return headerBase64;}/**\n * Return a nonce.\n * @returns {Integer}\n */function getNonce(){var nonce=NonceGenerator();return nonce;}/**\n * Generate a message composed of concatenated header, message body and nonce.\n * @param {String} header - API key.\n * @param {String} messageBody - Topic to publish message.\n * @param {Integer} nonce - Optional single-use arbitrary integer.\n * @returns {String}\n */function getCandidateMessage(header,messageBody){var nonce=arguments.length>2&&arguments[2]!==undefined?arguments[2]:getNonce();var message=header+'.'+messageBody+'.'+nonce;return message;}/**\n * Return the number of leading zeroes in target string.\n * @param {String} targetString - String to be checked.\n * @returns {Integer}\n */function getNumberOfLeadingZeroes(targetString){var i=0;for(i=0;i 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\nmodule.exports = {\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/utils.js\n// module id = 0\n// module chunks = 0","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/loglevel/lib/loglevel.js\n// module id = 1\n// module chunks = 0","/* global window */\n\nimport log from 'loglevel';\n\nconst settings = {\n defaultLogLevel: log.levels.WARN,\n timeout: 5000,\n sessionLength: 1000 * 60 * 30,\n\n sailthru: {\n scripts: [\n 'https://assets.htvapps.com/metaphor/latest/spm.v1.min.63c81dd.js',\n ],\n },\n\n braze: {\n scripts: [\n 'https://assets.htvapps.com/metaphor/latest/appboy.min.25f9513.js',\n ],\n enableHtmlInAppMessages: true,\n },\n\n ...window.METAPHOR_SETTINGS,\n};\n\nexport default settings;\n\n\n\n// WEBPACK FOOTER //\n// ./src/settings.js","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nativeCreate.js\n// module id = 3\n// module chunks = 0","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_assocIndexOf.js\n// module id = 4\n// module chunks = 0","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getMapData.js\n// module id = 5\n// module chunks = 0","var assign = make_assign()\nvar create = make_create()\nvar trim = make_trim()\nvar Global = (typeof window !== 'undefined' ? window : global)\n\nmodule.exports = {\n\tassign: assign,\n\tcreate: create,\n\ttrim: trim,\n\tbind: bind,\n\tslice: slice,\n\teach: each,\n\tmap: map,\n\tpluck: pluck,\n\tisList: isList,\n\tisFunction: isFunction,\n\tisObject: isObject,\n\tGlobal: Global\n}\n\nfunction make_assign() {\n\tif (Object.assign) {\n\t\treturn Object.assign\n\t} else {\n\t\treturn function shimAssign(obj, props1, props2, etc) {\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\teach(Object(arguments[i]), function(val, key) {\n\t\t\t\t\tobj[key] = val\n\t\t\t\t})\n\t\t\t}\t\t\t\n\t\t\treturn obj\n\t\t}\n\t}\n}\n\nfunction make_create() {\n\tif (Object.create) {\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\treturn assign.apply(this, [Object.create(obj)].concat(assignArgsList))\n\t\t}\n\t} else {\n\t\tfunction F() {} // eslint-disable-line no-inner-declarations\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\tF.prototype = obj\n\t\t\treturn assign.apply(this, [new F()].concat(assignArgsList))\n\t\t}\n\t}\n}\n\nfunction make_trim() {\n\tif (String.prototype.trim) {\n\t\treturn function trim(str) {\n\t\t\treturn String.prototype.trim.call(str)\n\t\t}\n\t} else {\n\t\treturn function trim(str) {\n\t\t\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n\t\t}\n\t}\n}\n\nfunction bind(obj, fn) {\n\treturn function() {\n\t\treturn fn.apply(obj, Array.prototype.slice.call(arguments, 0))\n\t}\n}\n\nfunction slice(arr, index) {\n\treturn Array.prototype.slice.call(arr, index || 0)\n}\n\nfunction each(obj, fn) {\n\tpluck(obj, function(val, key) {\n\t\tfn(val, key)\n\t\treturn false\n\t})\n}\n\nfunction map(obj, fn) {\n\tvar res = (isList(obj) ? [] : {})\n\tpluck(obj, function(v, k) {\n\t\tres[k] = fn(v, k)\n\t\treturn false\n\t})\n\treturn res\n}\n\nfunction pluck(obj, fn) {\n\tif (isList(obj)) {\n\t\tfor (var i=0; i 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/get.js\n// module id = 8\n// module chunks = 0","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArray.js\n// module id = 9\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isSymbol.js\n// module id = 10\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Symbol.js\n// module id = 11\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_root.js\n// module id = 12\n// module chunks = 0","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getNative.js\n// module id = 13\n// module chunks = 0","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObject.js\n// module id = 14\n// module chunks = 0","var engine = require('../src/store-engine')\n\nvar storages = [\n\trequire('../storages/localStorage'), \n\trequire('../storages/sessionStorage'), \n\trequire('../storages/cookieStorage'), \n\trequire('../storages/memoryStorage'),\n]\nvar plugins = []\n\nmodule.exports = engine.createStore(storages, plugins)\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/store/dist/store.modern.js\n// module id = 15\n// module chunks = 0","/* global window */\n\nimport log from 'loglevel';\nimport store from 'store/dist/store.modern';\nimport uuidv4 from 'uuid/v4';\n\nconst liidKey = 'liid';\n\n/**\n * Create, store and return a local installation ID.\n * If the liid is alredy set, return the existing value.\n * Local storage is used by default, with a fallback to cookies.\n * @returns {String}\n */\nfunction liid() {\n if (!store.enabled) {\n log.error('Storage not available.');\n return uuidv4();\n }\n\n let liidValue = store.get(liidKey);\n\n if (typeof liidValue === 'undefined') {\n liidValue = uuidv4();\n store.set(liidKey, liidValue);\n log.debug('New liid created.');\n }\n\n return liidValue;\n}\n\nexport default liid;\n\nwindow.Metaphor = window.Metaphor || {};\nwindow.Metaphor.getLiid = liid;\n\n\n\n// WEBPACK FOOTER //\n// ./src/liid.js","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\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 = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\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\nmodule.exports = defaults;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/defaults.js\n// module id = 17\n// module chunks = 0","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._75 = 0;\n this._83 = 0;\n this._18 = null;\n this._38 = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._47 = null;\nPromise._71 = null;\nPromise._44 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._83 === 3) {\n self = self._18;\n }\n if (Promise._47) {\n Promise._47(self);\n }\n if (self._83 === 0) {\n if (self._75 === 0) {\n self._75 = 1;\n self._38 = deferred;\n return;\n }\n if (self._75 === 1) {\n self._75 = 2;\n self._38 = [self._38, deferred];\n return;\n }\n self._38.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._83 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._83 === 1) {\n resolve(deferred.promise, self._18);\n } else {\n reject(deferred.promise, self._18);\n }\n return;\n }\n var ret = tryCallOne(cb, self._18);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._83 = 3;\n self._18 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._83 = 1;\n self._18 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._83 = 2;\n self._18 = newValue;\n if (Promise._71) {\n Promise._71(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._75 === 1) {\n handle(self, self._38);\n self._38 = null;\n }\n if (self._75 === 2) {\n for (var i = 0; i < self._38.length; i++) {\n handle(self, self._38[i]);\n }\n self._38 = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/promise/lib/core.js\n// module id = 18\n// module chunks = 0","/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader = false;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api (key, value, attributes) {\n\t\t\tvar result;\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Write\n\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tattributes = extend({\n\t\t\t\t\tpath: '/'\n\t\t\t\t}, api.defaults, attributes);\n\n\t\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\t\tvar expires = new Date();\n\t\t\t\t\texpires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n\t\t\t\t\tattributes.expires = expires;\n\t\t\t\t}\n\n\t\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\t\ttry {\n\t\t\t\t\tresult = JSON.stringify(value);\n\t\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\t\tvalue = result;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif (!converter.write) {\n\t\t\t\t\tvalue = encodeURIComponent(String(value))\n\t\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = converter.write(value, key);\n\t\t\t\t}\n\n\t\t\t\tkey = encodeURIComponent(String(key));\n\t\t\t\tkey = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n\t\t\t\tkey = key.replace(/[\\(\\)]/g, escape);\n\n\t\t\t\tvar stringifiedAttributes = '';\n\n\t\t\t\tfor (var attributeName in attributes) {\n\t\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName];\n\t\t\t\t}\n\t\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t\t}\n\n\t\t\t// Read\n\n\t\t\tif (!key) {\n\t\t\t\tresult = {};\n\t\t\t}\n\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling \"get()\"\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar rdecode = /(%[0-9A-Z]{2})+/g;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!this.json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = parts[0].replace(rdecode, decodeURIComponent);\n\t\t\t\t\tcookie = converter.read ?\n\t\t\t\t\t\tconverter.read(cookie, name) : converter(cookie, name) ||\n\t\t\t\t\t\tcookie.replace(rdecode, decodeURIComponent);\n\n\t\t\t\t\tif (this.json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tresult = cookie;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\tresult[name] = cookie;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tapi.set = api;\n\t\tapi.get = function (key) {\n\t\t\treturn api.call(api, key);\n\t\t};\n\t\tapi.getJSON = function () {\n\t\t\treturn api.apply({\n\t\t\t\tjson: true\n\t\t\t}, [].slice.call(arguments));\n\t\t};\n\t\tapi.defaults = {};\n\n\t\tapi.remove = function (key, attributes) {\n\t\t\tapi(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/js-cookie/src/js.cookie.js\n// module id = 19\n// module chunks = 0","/*! load-js v3.0.2 - Wed Dec 20 2017 16:30:02 GMT-0500 (EST). (c) 2017 Miguel Castillo . Licensed under MIT */\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).loadJS=e()}}(function(){return function e(r,t,n){function o(i,u){if(!t[i]){if(!r[i]){var l=\"function\"==typeof require&&require;if(!u&&l)return l(i,!0);if(a)return a(i,!0);var d=new Error(\"Cannot find module '\"+i+\"'\");throw d.code=\"MODULE_NOT_FOUND\",d}var c=t[i]={exports:{}};r[i][0].call(c.exports,function(e){var t=r[i][1][e];return o(t||e)},c,c.exports,e,r,t,n)}return t[i].exports}for(var a=\"function\"==typeof require&&require,i=0;i true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/eq.js\n// module id = 23\n// module chunks = 0","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_toKey.js\n// module id = 24\n// module chunks = 0","'use strict';\n\nmodule.exports = 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\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/bind.js\n// module id = 25\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = 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 var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\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[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\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 // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : 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 = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/adapters/xhr.js\n// module id = 26\n// module chunks = 0","'use strict';\n\nvar enhanceError = require('./enhanceError');\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 */\nmodule.exports = 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\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/createError.js\n// module id = 27\n// module chunks = 0","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/isCancel.js\n// module id = 28\n// module chunks = 0","'use strict';\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\nmodule.exports = Cancel;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/Cancel.js\n// module id = 29\n// module chunks = 0","(function (global, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine([], factory);\r\n\t} else if (typeof module !== 'undefined' && module.exports){\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\tglobal.sha256 = factory();\r\n\t}\r\n})(this, function () {\r\n\r\nvar sha256 = function sha256(ascii) {\r\n\tfunction rightRotate(value, amount) {\r\n\t\treturn (value>>>amount) | (value<<(32 - amount));\r\n\t};\r\n\t\r\n\tvar mathPow = Math.pow;\r\n\tvar maxWord = mathPow(2, 32);\r\n\tvar lengthProperty = 'length';\r\n\tvar i, j; // Used as a counter across the whole file\r\n\tvar result = '';\r\n\r\n\tvar words = [];\r\n\tvar asciiBitLength = ascii[lengthProperty]*8;\r\n\t\r\n\t//* caching results is optional - remove/add slash from front of this line to toggle\r\n\t// Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes\r\n\t// (we actually calculate the first 64, but extra values are just ignored)\r\n\tvar hash = sha256.h = sha256.h || [];\r\n\t// Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes\r\n\tvar k = sha256.k = sha256.k || [];\r\n\tvar primeCounter = k[lengthProperty];\r\n\t/*/\r\n\tvar hash = [], k = [];\r\n\tvar primeCounter = 0;\r\n\t//*/\r\n\r\n\tvar isComposite = {};\r\n\tfor (var candidate = 2; primeCounter < 64; candidate++) {\r\n\t\tif (!isComposite[candidate]) {\r\n\t\t\tfor (i = 0; i < 313; i += candidate) {\r\n\t\t\t\tisComposite[i] = candidate;\r\n\t\t\t}\r\n\t\t\thash[primeCounter] = (mathPow(candidate, .5)*maxWord)|0;\r\n\t\t\tk[primeCounter++] = (mathPow(candidate, 1/3)*maxWord)|0;\r\n\t\t}\r\n\t}\r\n\t\r\n\tascii += '\\x80'; // Append '1' bit (plus zero padding)\r\n\twhile (ascii[lengthProperty]%64 - 56) ascii += '\\x00'; // More zero padding\r\n\tfor (i = 0; i < ascii[lengthProperty]; i++) {\r\n\t\tj = ascii.charCodeAt(i);\r\n\t\tif (j>>8) return; // ASCII check: only accept characters in range 0-255\r\n\t\twords[i>>2] |= j << ((3 - i)%4)*8;\r\n\t}\r\n\twords[words[lengthProperty]] = ((asciiBitLength/maxWord)|0);\r\n\twords[words[lengthProperty]] = (asciiBitLength)\r\n\t\r\n\t// process each chunk\r\n\tfor (j = 0; j < words[lengthProperty];) {\r\n\t\tvar w = words.slice(j, j += 16); // The message is expanded into 64 words as part of the iteration\r\n\t\tvar oldHash = hash;\r\n\t\t// This is now the \"working hash\", often labelled as variables a...g\r\n\t\t// (we have to truncate as well, otherwise extra entries at the end accumulate\r\n\t\thash = hash.slice(0, 8);\r\n\t\t\r\n\t\tfor (i = 0; i < 64; i++) {\r\n\t\t\tvar i2 = i + j;\r\n\t\t\t// Expand the message into 64 words\r\n\t\t\t// Used below if \r\n\t\t\tvar w15 = w[i - 15], w2 = w[i - 2];\r\n\r\n\t\t\t// Iterate\r\n\t\t\tvar a = hash[0], e = hash[4];\r\n\t\t\tvar temp1 = hash[7]\r\n\t\t\t\t+ (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) // S1\r\n\t\t\t\t+ ((e&hash[5])^((~e)&hash[6])) // ch\r\n\t\t\t\t+ k[i]\r\n\t\t\t\t// Expand the message schedule if needed\r\n\t\t\t\t+ (w[i] = (i < 16) ? w[i] : (\r\n\t\t\t\t\t\tw[i - 16]\r\n\t\t\t\t\t\t+ (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15>>>3)) // s0\r\n\t\t\t\t\t\t+ w[i - 7]\r\n\t\t\t\t\t\t+ (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2>>>10)) // s1\r\n\t\t\t\t\t)|0\r\n\t\t\t\t);\r\n\t\t\t// This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble\r\n\t\t\tvar temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) // S0\r\n\t\t\t\t+ ((a&hash[1])^(a&hash[2])^(hash[1]&hash[2])); // maj\r\n\t\t\t\r\n\t\t\thash = [(temp1 + temp2)|0].concat(hash); // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice()\r\n\t\t\thash[4] = (hash[4] + temp1)|0;\r\n\t\t}\r\n\t\t\r\n\t\tfor (i = 0; i < 8; i++) {\r\n\t\t\thash[i] = (hash[i] + oldHash[i])|0;\r\n\t\t}\r\n\t}\r\n\t\r\n\tfor (i = 0; i < 8; i++) {\r\n\t\tfor (j = 3; j + 1; j--) {\r\n\t\t\tvar b = (hash[i]>>(j*8))&255;\r\n\t\t\tresult += ((b < 16) ? 0 : '') + b.toString(16);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\n\r\nsha256.code = \"var sha256=function a(b){function c(a,b){return a>>>b|a<<32-b}for(var d,e,f=Math.pow,g=f(2,32),h=\\\"length\\\",i=\\\"\\\",j=[],k=8*b[h],l=a.h=a.h||[],m=a.k=a.k||[],n=m[h],o={},p=2;64>n;p++)if(!o[p]){for(d=0;313>d;d+=p)o[d]=p;l[n]=f(p,.5)*g|0,m[n++]=f(p,1/3)*g|0}for(b+=\\\"\\\\x80\\\";b[h]%64-56;)b+=\\\"\\\\x00\\\";for(d=0;d>8)return;j[d>>2]|=e<<(3-d)%4*8}for(j[j[h]]=k/g|0,j[j[h]]=k,e=0;ed;d++){var s=q[d-15],t=q[d-2],u=l[0],v=l[4],w=l[7]+(c(v,6)^c(v,11)^c(v,25))+(v&l[5]^~v&l[6])+m[d]+(q[d]=16>d?q[d]:q[d-16]+(c(s,7)^c(s,18)^s>>>3)+q[d-7]+(c(t,17)^c(t,19)^t>>>10)|0),x=(c(u,2)^c(u,13)^c(u,22))+(u&l[1]^u&l[2]^l[1]&l[2]);l=[w+x|0].concat(l),l[4]=l[4]+w|0}for(d=0;8>d;d++)l[d]=l[d]+r[d]|0}for(d=0;8>d;d++)for(e=3;e+1;e--){var y=l[d]>>8*e&255;i+=(16>y?0:\\\"\\\")+y.toString(16)}return i};\";\r\n\r\nreturn sha256;\r\n\r\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tiny-sha256/index.js\n// module id = 30\n// module chunks = 0","'use strict';\n\nif (typeof Promise === 'undefined') {\n // Rejection tracking prevents a common issue where React gets into an\n // inconsistent state due to an error, but it gets swallowed by a Promise,\n // and the user has no idea what causes React's erratic future behavior.\n require('promise/lib/rejection-tracking').enable();\n window.Promise = require('promise/lib/es6-extensions.js');\n}\n\n// Object.assign() is commonly used with React.\n// It will use the native implementation if it's present and isn't buggy.\nObject.assign = require('object-assign');\n\n// In tests, polyfill requestAnimationFrame since jsdom doesn't provide it yet.\n// We don't polyfill it in the browser--this is user's responsibility.\nif (process.env.NODE_ENV === 'test') {\n require('raf').polyfill(global);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./config/polyfills.js\n// module id = 32\n// module chunks = 0","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._47 = null;\n Promise._71 = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._47 = function (promise) {\n if (\n promise._83 === 2 && // IS REJECTED\n rejections[promise._56]\n ) {\n if (rejections[promise._56].logged) {\n onHandled(promise._56);\n } else {\n clearTimeout(rejections[promise._56].timeout);\n }\n delete rejections[promise._56];\n }\n };\n Promise._71 = function (promise, err) {\n if (promise._75 === 0) { // not yet handled\n promise._56 = id++;\n rejections[promise._56] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._56),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/promise/lib/rejection-tracking.js\n// module id = 33\n// module chunks = 0","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/asap/browser-raw.js\n// module id = 34\n// module chunks = 0","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._44);\n p._83 = 1;\n p._18 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._83 === 3) {\n val = val._18;\n }\n if (val._83 === 1) return res(i, val._18);\n if (val._83 === 2) reject(val._18);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/promise/lib/es6-extensions.js\n// module id = 35\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 36\n// module chunks = 0","import log from 'loglevel';\nimport whenDomReady from 'when-dom-ready';\n\nimport settings from './settings';\nimport bootstrap from './bootstrap';\n\nfunction index() {\n log.setDefaultLevel(settings.defaultLogLevel);\n\n return whenDomReady()\n .then(() => bootstrap());\n}\n\nindex();\n\nexport default index;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","/* eslint no-void: \"off\" */\n\n// Loaded ready states\nvar loadedStates = ['interactive', 'complete'];\n\n// Return Promise\nvar whenDomReady = function whenDomReady(cb, doc) {\n\treturn new Promise(function (resolve) {\n\t\t// Allow doc to be passed in as the lone first param\n\t\tif (cb && typeof cb !== 'function') {\n\t\t\tdoc = cb;\n\t\t\tcb = null;\n\t\t}\n\n\t\t// Use global document if we don't have one\n\t\tdoc = doc || window.document;\n\n\t\t// Handle DOM load\n\t\tvar done = function done() {\n\t\t\treturn resolve(void (cb && setTimeout(cb)));\n\t\t};\n\n\t\t// Resolve now if DOM has already loaded\n\t\t// Otherwise wait for DOMContentLoaded\n\t\tif (loadedStates.indexOf(doc.readyState) !== -1) {\n\t\t\tdone();\n\t\t} else {\n\t\t\tdoc.addEventListener('DOMContentLoaded', done);\n\t\t}\n\t});\n};\n\n// Promise chain helper\nwhenDomReady.resume = function (doc) {\n\treturn function (val) {\n\t\treturn whenDomReady(doc).then(function () {\n\t\t\treturn val;\n\t\t});\n\t};\n};\n\nexport default whenDomReady;\n//# sourceMappingURL=index.es2015.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/when-dom-ready/dist/index.es2015.js\n// module id = 38\n// module chunks = 0","/* global window */\n\nimport log from 'loglevel';\nimport Cookies from 'js-cookie';\n\nimport Sailthru from './Sailthru';\nimport Braze from './Braze';\nimport PIP from './PIP';\nimport MediaOS from './MediaOS';\nimport liid from './liid';\n\n/**\n * Sync user ID before starting a Braze session.\n * @param {Object} sailthru - Sailthru instance.\n * @param {Object} braze - Braze instance.\n * @param {Object} pip - PIP instance.\n */\nfunction syncUserVeryLocal(sailthru, braze, pip) {\n if (!sailthru.isSailthruReady || !braze.isBrazeReady) {\n return;\n }\n\n sailthru.fetchCurrentUserData()\n .then(() => braze.changeUser(sailthru.userEmailHash))\n .then(() => braze.fetchCurrentUserData())\n .then(() => braze.openSession())\n .then(() => braze.setCustomAttributes())\n .then(() => pip.sendUserLinkingData(sailthru.userEmailHash, braze.userId))\n .then(() => pip.getUserLocationPermissionStatus())\n .then(() => pip.getUserLocation())\n .then(() => pip.getUserNeighborhoods())\n .then(() => pip.sendUserLocationData())\n .then(() => braze.setLastKnownLocation(pip.location, pip.neighborhoods))\n .then(() => braze.pushRequest())\n .catch(error => log.error(error));\n}\n\n/**\n * Sync user ID before starting a Braze session.\n * @param {Object} sailthru - Sailthru instance.\n * @param {Object} braze - Braze instance.\n * @param {Object} pip - PIP instance.\n */\nfunction syncUserMediaOS(sailthru, braze, pip) {\n if (!sailthru.isSailthruReady || !braze.isBrazeReady) {\n return;\n }\n\n const cid = Cookies.get('_hrstCID');\n\n braze.changeUser(cid)\n .then(() => braze.openSession())\n .then(() => pip.getUserLocationPermissionStatus())\n .then(() => pip.getUserLocation())\n .then(() => pip.getUserNeighborhoods())\n .then(() => pip.sendUserLocationData())\n .then(() => braze.setLastKnownLocation(pip.location, pip.neighborhoods))\n .then(() => MediaOS.updateWeather(pip.location))\n .then(() => braze.pushRequest())\n .catch(error => log.error(error));\n}\n\n/**\n * Load and initialize required scripts.\n */\nfunction bootstrap() {\n const sailthru = new Sailthru();\n const braze = new Braze();\n const pip = new PIP();\n const components = [sailthru, braze, pip];\n\n log.debug(`liid = [${liid()}]`);\n\n Promise.all(components.map(component => component.load()))\n .then(() => {\n components.map(component => component.init());\n\n if (window.VLCL) {\n syncUserVeryLocal(sailthru, braze, pip);\n }\n\n if (window.HRST) {\n syncUserMediaOS(sailthru, braze, pip);\n }\n })\n .catch(error => log.error(error));\n}\n\nexport default bootstrap;\n\n\n\n// WEBPACK FOOTER //\n// ./src/bootstrap.js","/* global window */\n\nimport log from 'loglevel';\nimport loadJS from 'load-js';\nimport get from 'lodash/get';\n\nimport settings from './settings';\n\n/**\n * Class representing Sailthru.\n */\nclass Sailthru {\n /**\n * Create a Sailthru instance.\n * @param {Object} params - Sailthru configuration parameters.\n */\n constructor(parms) {\n this.parms = parms;\n this.currentUserData = {};\n this.usedSignedUp = false;\n }\n\n /**\n * Check if Sailthru global script is ready.\n * @returns {Boolean}\n */\n get isSailthruReady() {\n return typeof window.Sailthru !== 'undefined';\n }\n\n /**\n * Load Sailthru global script.\n * @returns {Promise}\n */\n load() {\n const scriptsFound = typeof get(settings, 'sailthru.scripts') !== 'undefined';\n const customerIdFound = typeof get(settings, 'sailthru.customerId') !== 'undefined';\n\n if (!scriptsFound || !customerIdFound) {\n log.debug('Sailthru settings not found.');\n return Promise.resolve();\n }\n\n const scripts = get(settings, 'sailthru.scripts', []);\n const customerId = get(settings, 'sailthru.customerId', '');\n\n if (scripts.length !== 1 || !customerId.length) {\n log.debug('Invalid Sailthru settings.');\n return Promise.resolve();\n }\n\n return loadJS(settings.sailthru.scripts);\n }\n\n /**\n * Initialize Sailthru global script.\n */\n init() {\n if (!this.isSailthruReady) {\n log.error('Tried to initialize Sailthru before the script was ready.');\n return;\n }\n\n window.Sailthru.init({\n customerId: settings.sailthru.customerId,\n });\n\n if (window.VLCL) {\n this.registerVLWindowMessageHandler();\n }\n\n if (window.HRST) {\n this.registerMediaOSWindowMessageHandler();\n }\n\n log.debug('Sailthru initialized.');\n }\n\n /**\n * Register a window message event to capture VL iframe messages.\n */\n registerVLWindowMessageHandler() {\n window.addEventListener('message', event => {\n if (this.usedSignedUp\n || event.origin !== window.location.origin\n || !event.data\n || event.data.indexOf('sailthru:email:') !== 0) {\n return;\n }\n\n const email = get(event.data.split('sailthru:email:'), '1', '');\n\n if (!email) {\n return;\n }\n\n this.usedSignedUp = true;\n\n this.userSignUp(email, event.source);\n }, false);\n }\n\n /**\n * Register a window message event to capture MediaOS iframe messages.\n */\n registerMediaOSWindowMessageHandler() {\n window.addEventListener('message', event => {\n if (event.origin !== window.location.origin\n || !event.data\n || event.data.indexOf('sailthru:email:') !== 0) {\n return;\n }\n\n const siteId = get(settings, 'site_id');\n const email = get(event.data.split('sailthru:email:'), '1', '');\n\n if (!siteId || !email) {\n event.source.postMessage('sailthru:breakingNews:error', '*');\n return;\n }\n\n const lists = {};\n const vars = {};\n lists[get(settings, 'sailthru.emailListTarget', `${siteId}_news_local_breaking`)] = 1;\n\n log.debug(`Sailthru BreakingNews SignUp [${JSON.stringify(lists)}]`);\n\n window.Sailthru.integration('userSignUp', {\n email,\n lists,\n source: 'site-capture-modal',\n vars,\n onSuccess() {\n log.debug('Sailthru BreakingNews success');\n event.source.postMessage('sailthru:breakingNews:success', '*');\n },\n onError() {\n log.debug('Sailthru BreakingNews error');\n event.source.postMessage('sailthru:breakingNews:error', '*');\n },\n });\n }, false);\n }\n\n /**\n * Calls Sailthru sign up method and return the response to source window.\n * @param {String} email - user email.\n * @param {Object} source - source window.\n */\n userSignUp(email, source) {\n const siteId = get(settings, 'site_id', 'vl_nola');\n const lists = {};\n const vars = {};\n lists[siteId] = 1;\n vars[siteId] = 'true';\n\n log.debug('Sailthru userSignUp');\n\n window.Sailthru.integration('userSignUp', {\n email,\n lists,\n source: 'site-capture-modal',\n vars,\n onSuccess() {\n log.debug('Sailthru userSignUp success');\n source.postMessage('sailthru:userSignUp:success', '*');\n },\n onError() {\n log.debug('Sailthru userSignUp error');\n source.postMessage('sailthru:userSignUp:error', '*');\n },\n });\n }\n\n /**\n * Fetches known user email from Sailthru.\n * @returns {Promise}\n */\n fetchCurrentUserData() {\n const result = window.Sailthru.integration('getCurrentUser', {\n hash: 'sha256',\n onSuccess: response => {\n this.currentUserData = response;\n log.debug(`Sailthru userEmailHash = [${this.userEmailHash}]`);\n },\n });\n\n // Sailthru getCurrentUser returns false when cookie `sailthru_hid` is not available.\n if (typeof result !== 'object') {\n return Promise.resolve();\n }\n\n return result;\n }\n\n /**\n * Return a SHA-256 hash of the current user's email.\n * @returns {String}\n */\n get userEmailHash() {\n return this.currentUserData.emailHash;\n }\n}\n\nexport default Sailthru;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Sailthru.js","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseGet.js\n// module id = 41\n// module chunks = 0","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isKey.js\n// module id = 42\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_freeGlobal.js\n// module id = 43\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getRawTag.js\n// module id = 44\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_objectToString.js\n// module id = 45\n// module chunks = 0","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObjectLike.js\n// module id = 46\n// module chunks = 0","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_stringToPath.js\n// module id = 47\n// module chunks = 0","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_memoizeCapped.js\n// module id = 48\n// module chunks = 0","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/memoize.js\n// module id = 49\n// module chunks = 0","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_MapCache.js\n// module id = 50\n// module chunks = 0","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheClear.js\n// module id = 51\n// module chunks = 0","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Hash.js\n// module id = 52\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashClear.js\n// module id = 53\n// module chunks = 0","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsNative.js\n// module id = 54\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isFunction.js\n// module id = 55\n// module chunks = 0","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isMasked.js\n// module id = 56\n// module chunks = 0","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_coreJsData.js\n// module id = 57\n// module chunks = 0","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_toSource.js\n// module id = 58\n// module chunks = 0","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getValue.js\n// module id = 59\n// module chunks = 0","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashDelete.js\n// module id = 60\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashGet.js\n// module id = 61\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashHas.js\n// module id = 62\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_hashSet.js\n// module id = 63\n// module chunks = 0","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_ListCache.js\n// module id = 64\n// module chunks = 0","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheClear.js\n// module id = 65\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheDelete.js\n// module id = 66\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheGet.js\n// module id = 67\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheHas.js\n// module id = 68\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_listCacheSet.js\n// module id = 69\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Map.js\n// module id = 70\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheDelete.js\n// module id = 71\n// module chunks = 0","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isKeyable.js\n// module id = 72\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheGet.js\n// module id = 73\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheHas.js\n// module id = 74\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_mapCacheSet.js\n// module id = 75\n// module chunks = 0","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/toString.js\n// module id = 76\n// module chunks = 0","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseToString.js\n// module id = 77\n// module chunks = 0","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayMap.js\n// module id = 78\n// module chunks = 0","/* global window */\n\nimport log from 'loglevel';\nimport loadJS from 'load-js';\nimport get from 'lodash/get';\nimport store from 'store/dist/store.modern';\n\nimport settings from './settings';\nimport liid from './liid';\n\n/**\n * Class representing Braze.\n */\nclass Braze {\n /**\n * Create a Braze instance.\n * @param {Object} params - Braze configuration parameters.\n */\n constructor(parms) {\n this.parms = parms;\n this.currentUserData = {};\n this.lastPushRequestKey = 'MetaphorLastPushRequest';\n }\n\n /**\n * Check if Braze global script is ready.\n * @returns {Boolean}\n */\n get isBrazeReady() {\n return typeof window.appboy !== 'undefined';\n }\n\n /**\n * Load Braze global script.\n * @returns {Promise}\n */\n load() {\n const scriptsFound = typeof get(settings, 'braze.scripts') !== 'undefined';\n const apiKeyFound = typeof get(settings, 'braze.apiKey') !== 'undefined';\n\n if (!scriptsFound || !apiKeyFound) {\n log.debug('Braze settings not found.');\n return Promise.resolve();\n }\n\n const scripts = get(settings, 'braze.scripts', []);\n const apiKey = get(settings, 'braze.apiKey', '');\n\n if (scripts.length !== 1 || !apiKey.length) {\n log.debug('Invalid Braze settings.');\n return Promise.resolve();\n }\n\n return loadJS(settings.braze.scripts);\n }\n\n /**\n * Initialize Braze global script.\n */\n init() {\n if (!this.isBrazeReady) {\n log.error('Tried to initialize Braze before the script was ready.');\n return;\n }\n\n window.appboy.initialize(settings.braze.apiKey, {\n doNotLoadFontAwesome: true,\n enableHtmlInAppMessages: settings.braze.enableHtmlInAppMessages,\n safariWebsitePushId: settings.braze.safariWebsitePushId,\n });\n\n window.appboy.display.automaticallyShowNewInAppMessages();\n\n log.debug('Braze initialized.');\n }\n\n /**\n * Fetches user ID.\n * @returns {Promise}\n */\n fetchCurrentUserData() {\n window.appboy.getUser().getUserId(userId => {\n if (userId) {\n log.debug(`Braze userId = [${userId}]`);\n this.currentUserData.userId = userId;\n }\n return Promise.resolve();\n });\n }\n\n /**\n * Return user ID.\n * @returns {String}\n */\n get userId() {\n return this.currentUserData.userId;\n }\n\n /**\n * Open Braze session.\n * @returns {Promise}\n */\n openSession() {\n return new Promise(resolve => {\n window.appboy.openSession(() => {\n log.debug('Braze session opened.');\n\n const siteId = get(settings, 'site_id', 'vl_nola');\n const eventName = `siteVisit.${siteId}`;\n window.appboy.logCustomEvent(eventName);\n log.debug(`Braze custom event [${eventName}] triggered.`);\n return resolve();\n });\n });\n }\n\n /**\n * Change user ID.\n * @param {String} userId - SHA-256 hash of user's email.\n * @returns {Promise}\n */\n changeUser(userId) {\n if (!userId) {\n return Promise.resolve();\n }\n\n return new Promise(resolve => {\n window.appboy.changeUser(userId, () => {\n log.debug(`Braze userId changed [${userId}]`);\n return resolve();\n });\n });\n }\n\n /**\n * Set custom attributes to current user object.\n * @returns {Promise}\n */\n setCustomAttributes() {\n const user = window.appboy.getUser();\n\n if (user) {\n user.addToCustomAttributeArray('liid', liid());\n log.debug('Braze custom attribute liid set.');\n }\n\n return Promise.resolve();\n }\n\n /**\n * Check if push prompt can be triggered.\n * @returns {Boolean}\n */\n get canRequestPushPermission() {\n if (!store.enabled) {\n log.error('Storage not available.');\n return true;\n }\n\n const lastRequest = store.get(this.lastPushRequestKey);\n if (typeof lastRequest === 'undefined') {\n return true;\n }\n\n return Date.now() - lastRequest > settings.sessionLength;\n }\n\n /**\n * Requests push permission.\n * @returns {Promise}\n */\n pushRequest() {\n if (!window.appboy.isPushSupported()) {\n log.error('Push not supported.');\n return Promise.resolve();\n }\n\n if (window.appboy.isPushBlocked()) {\n log.debug('Push blocked.');\n return Promise.resolve();\n }\n\n if (window.appboy.isPushPermissionGranted()) {\n log.debug('Push already granted.');\n return Promise.resolve();\n }\n\n if (!this.canRequestPushPermission) {\n log.debug('Cannot request push permission yet.');\n return Promise.resolve();\n }\n\n return new Promise(resolve => {\n log.debug('Requesting Braze push permission.');\n\n store.set(this.lastPushRequestKey, Date.now());\n\n window.appboy.registerAppboyPushMessages(() => {\n log.debug('Braze push request granted.');\n resolve();\n }, () => {\n log.debug('Braze push request denied.');\n resolve();\n });\n });\n }\n\n /**\n * Set user last known location.\n * @param {Object} location - User location object.\n * @param {Object} neighborhoods - User neighborhoods object.\n * @returns {Promise}\n */\n setLastKnownLocation(location, neighborhoods) {\n if (location && location.length) {\n const { lat, lon } = location[0];\n const user = window.appboy.getUser();\n if (user) {\n user.setLastKnownLocation(lat, lon);\n log.debug('Braze set last known location.');\n }\n }\n\n if (neighborhoods && neighborhoods.length) {\n neighborhoods.forEach(neighborhood => {\n const eventName = `Neighborhood ${neighborhood.name}`;\n window.appboy.logCustomEvent(eventName);\n log.debug(`Braze custom event [${eventName}] triggered.`);\n });\n }\n\n return Promise.resolve();\n }\n}\n\nexport default Braze;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Braze.js","var util = require('./util')\nvar slice = util.slice\nvar pluck = util.pluck\nvar each = util.each\nvar bind = util.bind\nvar create = util.create\nvar isList = util.isList\nvar isFunction = util.isFunction\nvar isObject = util.isObject\n\nmodule.exports = {\n\tcreateStore: createStore\n}\n\nvar storeAPI = {\n\tversion: '2.0.12',\n\tenabled: false,\n\t\n\t// get returns the value of the given key. If that value\n\t// is undefined, it returns optionalDefaultValue instead.\n\tget: function(key, optionalDefaultValue) {\n\t\tvar data = this.storage.read(this._namespacePrefix + key)\n\t\treturn this._deserialize(data, optionalDefaultValue)\n\t},\n\n\t// set will store the given value at key and returns value.\n\t// Calling set with value === undefined is equivalent to calling remove.\n\tset: function(key, value) {\n\t\tif (value === undefined) {\n\t\t\treturn this.remove(key)\n\t\t}\n\t\tthis.storage.write(this._namespacePrefix + key, this._serialize(value))\n\t\treturn value\n\t},\n\n\t// remove deletes the key and value stored at the given key.\n\tremove: function(key) {\n\t\tthis.storage.remove(this._namespacePrefix + key)\n\t},\n\n\t// each will call the given callback once for each key-value pair\n\t// in this store.\n\teach: function(callback) {\n\t\tvar self = this\n\t\tthis.storage.each(function(val, namespacedKey) {\n\t\t\tcallback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))\n\t\t})\n\t},\n\n\t// clearAll will remove all the stored key-value pairs in this store.\n\tclearAll: function() {\n\t\tthis.storage.clearAll()\n\t},\n\n\t// additional functionality that can't live in plugins\n\t// ---------------------------------------------------\n\n\t// hasNamespace returns true if this store instance has the given namespace.\n\thasNamespace: function(namespace) {\n\t\treturn (this._namespacePrefix == '__storejs_'+namespace+'_')\n\t},\n\n\t// createStore creates a store.js instance with the first\n\t// functioning storage in the list of storage candidates,\n\t// and applies the the given mixins to the instance.\n\tcreateStore: function() {\n\t\treturn createStore.apply(this, arguments)\n\t},\n\t\n\taddPlugin: function(plugin) {\n\t\tthis._addPlugin(plugin)\n\t},\n\t\n\tnamespace: function(namespace) {\n\t\treturn createStore(this.storage, this.plugins, namespace)\n\t}\n}\n\nfunction _warn() {\n\tvar _console = (typeof console == 'undefined' ? null : console)\n\tif (!_console) { return }\n\tvar fn = (_console.warn ? _console.warn : _console.log)\n\tfn.apply(_console, arguments)\n}\n\nfunction createStore(storages, plugins, namespace) {\n\tif (!namespace) {\n\t\tnamespace = ''\n\t}\n\tif (storages && !isList(storages)) {\n\t\tstorages = [storages]\n\t}\n\tif (plugins && !isList(plugins)) {\n\t\tplugins = [plugins]\n\t}\n\n\tvar namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')\n\tvar namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)\n\tvar legalNamespaces = /^[a-zA-Z0-9_\\-]*$/ // alpha-numeric + underscore and dash\n\tif (!legalNamespaces.test(namespace)) {\n\t\tthrow new Error('store.js namespaces can only have alphanumerics + underscores and dashes')\n\t}\n\t\n\tvar _privateStoreProps = {\n\t\t_namespacePrefix: namespacePrefix,\n\t\t_namespaceRegexp: namespaceRegexp,\n\n\t\t_testStorage: function(storage) {\n\t\t\ttry {\n\t\t\t\tvar testStr = '__storejs__test__'\n\t\t\t\tstorage.write(testStr, testStr)\n\t\t\t\tvar ok = (storage.read(testStr) === testStr)\n\t\t\t\tstorage.remove(testStr)\n\t\t\t\treturn ok\n\t\t\t} catch(e) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\t_assignPluginFnProp: function(pluginFnProp, propName) {\n\t\t\tvar oldFn = this[propName]\n\t\t\tthis[propName] = function pluginFn() {\n\t\t\t\tvar args = slice(arguments, 0)\n\t\t\t\tvar self = this\n\n\t\t\t\t// super_fn calls the old function which was overwritten by\n\t\t\t\t// this mixin.\n\t\t\t\tfunction super_fn() {\n\t\t\t\t\tif (!oldFn) { return }\n\t\t\t\t\teach(arguments, function(arg, i) {\n\t\t\t\t\t\targs[i] = arg\n\t\t\t\t\t})\n\t\t\t\t\treturn oldFn.apply(self, args)\n\t\t\t\t}\n\n\t\t\t\t// Give mixing function access to super_fn by prefixing all mixin function\n\t\t\t\t// arguments with super_fn.\n\t\t\t\tvar newFnArgs = [super_fn].concat(args)\n\n\t\t\t\treturn pluginFnProp.apply(self, newFnArgs)\n\t\t\t}\n\t\t},\n\n\t\t_serialize: function(obj) {\n\t\t\treturn JSON.stringify(obj)\n\t\t},\n\n\t\t_deserialize: function(strVal, defaultVal) {\n\t\t\tif (!strVal) { return defaultVal }\n\t\t\t// It is possible that a raw string value has been previously stored\n\t\t\t// in a storage without using store.js, meaning it will be a raw\n\t\t\t// string value instead of a JSON serialized string. By defaulting\n\t\t\t// to the raw string value in case of a JSON parse error, we allow\n\t\t\t// for past stored values to be forwards-compatible with store.js\n\t\t\tvar val = ''\n\t\t\ttry { val = JSON.parse(strVal) }\n\t\t\tcatch(e) { val = strVal }\n\n\t\t\treturn (val !== undefined ? val : defaultVal)\n\t\t},\n\t\t\n\t\t_addStorage: function(storage) {\n\t\t\tif (this.enabled) { return }\n\t\t\tif (this._testStorage(storage)) {\n\t\t\t\tthis.storage = storage\n\t\t\t\tthis.enabled = true\n\t\t\t}\n\t\t},\n\n\t\t_addPlugin: function(plugin) {\n\t\t\tvar self = this\n\n\t\t\t// If the plugin is an array, then add all plugins in the array.\n\t\t\t// This allows for a plugin to depend on other plugins.\n\t\t\tif (isList(plugin)) {\n\t\t\t\teach(plugin, function(plugin) {\n\t\t\t\t\tself._addPlugin(plugin)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Keep track of all plugins we've seen so far, so that we\n\t\t\t// don't add any of them twice.\n\t\t\tvar seenPlugin = pluck(this.plugins, function(seenPlugin) {\n\t\t\t\treturn (plugin === seenPlugin)\n\t\t\t})\n\t\t\tif (seenPlugin) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.plugins.push(plugin)\n\n\t\t\t// Check that the plugin is properly formed\n\t\t\tif (!isFunction(plugin)) {\n\t\t\t\tthrow new Error('Plugins must be function values that return objects')\n\t\t\t}\n\n\t\t\tvar pluginProperties = plugin.call(this)\n\t\t\tif (!isObject(pluginProperties)) {\n\t\t\t\tthrow new Error('Plugins must return an object of function properties')\n\t\t\t}\n\n\t\t\t// Add the plugin function properties to this store instance.\n\t\t\teach(pluginProperties, function(pluginFnProp, propName) {\n\t\t\t\tif (!isFunction(pluginFnProp)) {\n\t\t\t\t\tthrow new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')\n\t\t\t\t}\n\t\t\t\tself._assignPluginFnProp(pluginFnProp, propName)\n\t\t\t})\n\t\t},\n\t\t\n\t\t// Put deprecated properties in the private API, so as to not expose it to accidential\n\t\t// discovery through inspection of the store object.\n\t\t\n\t\t// Deprecated: addStorage\n\t\taddStorage: function(storage) {\n\t\t\t_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')\n\t\t\tthis._addStorage(storage)\n\t\t}\n\t}\n\n\tvar store = create(_privateStoreProps, storeAPI, {\n\t\tplugins: []\n\t})\n\tstore.raw = {}\n\teach(store, function(prop, propName) {\n\t\tif (isFunction(prop)) {\n\t\t\tstore.raw[propName] = bind(store, prop)\t\t\t\n\t\t}\n\t})\n\teach(storages, function(storage) {\n\t\tstore._addStorage(storage)\n\t})\n\teach(plugins, function(plugin) {\n\t\tstore._addPlugin(plugin)\n\t})\n\treturn store\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/store/src/store-engine.js\n// module id = 80\n// module chunks = 0","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'localStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nfunction localStorage() {\n\treturn Global.localStorage\n}\n\nfunction read(key) {\n\treturn localStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn localStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = localStorage().length - 1; i >= 0; i--) {\n\t\tvar key = localStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn localStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn localStorage().clear()\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/store/storages/localStorage.js\n// module id = 81\n// module chunks = 0","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'sessionStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll\n}\n\nfunction sessionStorage() {\n\treturn Global.sessionStorage\n}\n\nfunction read(key) {\n\treturn sessionStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn sessionStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = sessionStorage().length - 1; i >= 0; i--) {\n\t\tvar key = sessionStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn sessionStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn sessionStorage().clear()\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/store/storages/sessionStorage.js\n// module id = 82\n// module chunks = 0","// cookieStorage is useful Safari private browser mode, where localStorage\n// doesn't work but cookies do. This implementation is adopted from\n// https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage\n\nvar util = require('../src/util')\nvar Global = util.Global\nvar trim = util.trim\n\nmodule.exports = {\n\tname: 'cookieStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar doc = Global.document\n\nfunction read(key) {\n\tif (!key || !_has(key)) { return null }\n\tvar regexpStr = \"(?:^|.*;\\\\s*)\" +\n\t\tescape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") +\n\t\t\"\\\\s*\\\\=\\\\s*((?:[^;](?!;))*[^;]?).*\"\n\treturn unescape(doc.cookie.replace(new RegExp(regexpStr), \"$1\"))\n}\n\nfunction each(callback) {\n\tvar cookies = doc.cookie.split(/; ?/g)\n\tfor (var i = cookies.length - 1; i >= 0; i--) {\n\t\tif (!trim(cookies[i])) {\n\t\t\tcontinue\n\t\t}\n\t\tvar kvp = cookies[i].split('=')\n\t\tvar key = unescape(kvp[0])\n\t\tvar val = unescape(kvp[1])\n\t\tcallback(val, key)\n\t}\n}\n\nfunction write(key, data) {\n\tif(!key) { return }\n\tdoc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\"\n}\n\nfunction remove(key) {\n\tif (!key || !_has(key)) {\n\t\treturn\n\t}\n\tdoc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\"\n}\n\nfunction clearAll() {\n\teach(function(_, key) {\n\t\tremove(key)\n\t})\n}\n\nfunction _has(key) {\n\treturn (new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(doc.cookie)\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/store/storages/cookieStorage.js\n// module id = 83\n// module chunks = 0","// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\n\nmodule.exports = {\n\tname: 'memoryStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar memoryStorage = {}\n\nfunction read(key) {\n\treturn memoryStorage[key]\n}\n\nfunction write(key, data) {\n\tmemoryStorage[key] = data\n}\n\nfunction each(callback) {\n\tfor (var key in memoryStorage) {\n\t\tif (memoryStorage.hasOwnProperty(key)) {\n\t\t\tcallback(memoryStorage[key], key)\n\t\t}\n\t}\n}\n\nfunction remove(key) {\n\tdelete memoryStorage[key]\n}\n\nfunction clearAll(key) {\n\tmemoryStorage = {}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/store/storages/memoryStorage.js\n// module id = 84\n// module chunks = 0","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/v4.js\n// module id = 85\n// module chunks = 0","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && msCrypto.getRandomValues.bind(msCrypto));\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/lib/rng-browser.js\n// module id = 86\n// module chunks = 0","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\nmodule.exports = bytesToUuid;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/lib/bytesToUuid.js\n// module id = 87\n// module chunks = 0","/* global window */\n\nimport log from 'loglevel';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport isMobileJS from 'ismobilejs';\nimport UAParser from 'ua-parser-js';\nimport axios from 'axios';\nimport Cookies from 'js-cookie';\nimport store from 'store/dist/store.modern';\nimport sha256 from 'tiny-sha256';\n\nimport settings from './settings';\nimport liid from './liid';\nimport { getPublishedMessageFormat } from './message';\n\n/**\n * Class representing PIP.\n */\nclass PIP {\n /**\n * Create a PIP instance.\n * @param {Object} params - PIP configuration parameters.\n */\n constructor(parms) {\n this.parms = parms;\n this.globalConfig = null;\n this.ids = [];\n this.location = null;\n this.neighborhoods = null;\n this.lastLocationRequestKey = 'MetaphorLastLocationRequest';\n this.lastPIPRequestKey = 'MetaphorLastPIPRequest';\n this.userLocationPermissionGranted = false;\n }\n\n /**\n * Check if PIP is ready.\n * @returns {Boolean}\n */\n get isPIPReady() {\n return this.globalConfig !== null;\n }\n\n /**\n * Load PIP global config file.\n * @returns {Promise}\n */\n load() {\n let pipUrl = get(settings, 'globalConfigUrl');\n if (!pipUrl) {\n log.debug('Invalid PIP settings.');\n return Promise.resolve();\n }\n\n pipUrl = pipUrl.replace('{env}', this.env);\n\n return axios.get(pipUrl, {\n timeout: settings.timeout,\n })\n .then(response => {\n this.globalConfig = get(response, 'data', null);\n\n if (this.topics.length > 0) {\n const allTopics = get(this.globalConfig, 'topic_manager.topics', {});\n const filteredTopics = allTopics.filter(topic => topic.enabled);\n set(this.globalConfig, 'topic_manager.topics', filteredTopics);\n }\n })\n .catch(error => log.error(error))\n .then(() => Promise.resolve());\n }\n\n /**\n * Initialize PIP.\n */\n init() {\n log.debug('PIP initialized.');\n }\n\n /**\n * Return site env.\n * @returns {String}\n */\n get env() {\n return get(settings, 'env', 'dev');\n }\n\n /**\n * Return site ID.\n * @returns {String}\n */\n get siteId() {\n return get(settings, 'site_id', 'vl_nola');\n }\n\n /**\n * Return topic manager version.\n * @returns {String}\n */\n get version() {\n return get(this.globalConfig, 'topic_manager.version', '');\n }\n\n /**\n * Return a list of available topics.\n * @returns {Array}\n */\n get topics() {\n const topicManager = get(this.globalConfig, 'topic_manager.topics', {});\n const topics = topicManager.map(topic => topic.name);\n return topics;\n }\n\n /**\n * Return Hoodie URL.\n * @returns {String}\n */\n get hoodieUrl() {\n return get(this.globalConfig, 'hoodie_url', '');\n }\n\n /**\n * Retrieves API key for a topic.\n * @param {String} topicName - topic name.\n * @returns {String}\n */\n getApiKey(topicName) {\n const topicManager = get(this.globalConfig, 'topic_manager.topics', {});\n const topicData = topicManager.find(topic => topic.name === topicName);\n return get(topicData, 'apikey', '');\n }\n\n /**\n * Retrieves hash difficulty for a topic.\n * @param {String} topicName - topic name.\n * @returns {String}\n */\n getDifficulty(topicName) {\n const topicManager = get(this.globalConfig, 'topic_manager.topics', {});\n const topicData = topicManager.find(topic => topic.name === topicName);\n return get(topicData, 'powd', 3);\n }\n\n /**\n * Retrieves endpoint for a topic.\n * @param {String} topicName - topic name.\n * @param {Boolean} rawFormat - if true, returns endpoint without replacing macros.\n * @returns {String}\n */\n getEndpoint(topicName, rawFormat = false) {\n const topicManager = get(this.globalConfig, 'topic_manager.topics', {});\n const topicData = topicManager.find(topic => topic.name === topicName);\n\n let endpoint = get(topicData, 'endpoint', '');\n if (rawFormat) {\n return endpoint;\n }\n\n endpoint = endpoint.replace('{env}', this.env);\n endpoint = endpoint.replace('{version}', this.version);\n\n return endpoint;\n }\n\n /**\n * Add user id to linking IDs array.\n * @param {String} id - user id.\n * @param {String} context - user id context.\n * @param {String} source - user id source, optional.\n * @param {Boolean} hash - whether or not to hash the id, defaults to false.\n */\n setUserLinkingId(id, context, source = null, hash = false) {\n if (!id || !context) {\n return;\n }\n\n const hashed = hash ? sha256(id) : id;\n\n this.ids.push({\n user_id: hashed,\n user_id_context: context,\n user_id_source: source,\n });\n }\n\n /**\n * Format user linking IDs array.\n * @param {String} sailthruId - SHA-256 hash of user's email.\n * @param {String} brazeId - Braze user ID.\n * @returns {Array}\n */\n getUserLinkingIds(sailthruId, brazeId) {\n if (sailthruId) {\n this.ids.push({\n user_id: sailthruId,\n user_id_context: 'sha256-email',\n user_id_source: null,\n });\n\n this.ids.push({\n user_id: sailthruId,\n user_id_context: 'sailthruID',\n user_id_source: null,\n });\n }\n\n if (brazeId) {\n this.ids.push({\n user_id: brazeId,\n user_id_context: 'brazeID',\n user_id_source: null,\n });\n }\n\n let anonUserCookie = null;\n if (!this.ids.length) {\n anonUserCookie = Cookies.get('sailthru_visitor');\n }\n if (anonUserCookie) {\n this.ids.push({\n user_id: anonUserCookie,\n user_id_context: 'sailthruID-anon',\n user_id_source: null,\n });\n }\n\n const idsDebug = this.ids.map(id => id.user_id_context);\n log.debug(`User linking IDs = [${idsDebug.join(', ')}]`);\n\n return this.ids;\n }\n\n /**\n * Formats a user linking message payload.\n * @param {Array} ids - Array of user IDs.\n * @returns {Object}\n */\n getUserLinkingPayload(ids, ts = Date.now()) {\n const parser = new UAParser();\n const result = parser.getResult();\n\n const platform = `${get(result, 'os.name')} ${isMobileJS.any ? 'mobile' : 'desktop'}`;\n\n return {\n version: '1.0',\n ts,\n liid: liid(),\n device: get(result, 'device.model', null),\n user_agent: get(result, 'browser.name', null),\n client_version: get(result, 'browser.version', null),\n platform,\n site_id: this.siteId,\n ids,\n };\n }\n\n /**\n * Send user linking data to PIP.\n * @param {String} sailthruId - SHA-256 hash of user's email.\n * @param {String} brazeId - Braze user ID.\n * @returns {Promise}\n */\n sendUserLinkingData(sailthruId, brazeId) {\n if (!this.isPIPReady) {\n log.error('Tried to send PIP data before config was loaded.');\n return Promise.resolve();\n }\n\n const topic = 'userid';\n const ids = this.getUserLinkingIds(sailthruId, brazeId);\n\n if (!ids.length) {\n log.error('No user linking IDs found.');\n return Promise.resolve();\n }\n\n const message = getPublishedMessageFormat(\n JSON.stringify(this.getUserLinkingPayload(ids)),\n this.getApiKey(topic),\n topic,\n this.getDifficulty(topic),\n );\n\n let postSuccess = false;\n log.debug('Sending user linking data to PIP.');\n\n return axios.post(this.getEndpoint(topic), message, {\n headers: {\n 'Content-Type': 'text/plain',\n },\n })\n .then(() => {\n postSuccess = true;\n })\n .catch(error => log.error(error))\n .then(() => {\n if (postSuccess) {\n log.debug('User linking data sent to PIP successfully.');\n }\n return Promise.resolve();\n });\n }\n\n /**\n * Fetch neighborhoods from user location data.\n * @returns {Promise}\n */\n getUserNeighborhoods() {\n if (!this.location) {\n return Promise.resolve();\n }\n\n const { lat, lon } = this.location[0];\n const requestUrl = `${this.hoodieUrl}?lat=${lat}&lon=${lon}`;\n\n return axios.get(requestUrl, {\n timeout: settings.timeout,\n })\n .then(response => {\n this.neighborhoods = get(response, 'data.neighborhoods', null);\n })\n .catch(error => log.error(error))\n .then(() => Promise.resolve());\n }\n\n /**\n * Check if user geo location permission has been granted.\n * @returns {Promise}\n */\n getUserLocationPermissionStatus() {\n if (!get(window, 'navigator.permissions')) {\n return Promise.resolve();\n }\n\n const permission = {\n name: 'geolocation',\n };\n\n return new Promise(resolve => {\n window.navigator.permissions.query(permission)\n .then(result => {\n this.userLocationPermissionGranted = result.state === 'granted';\n return resolve();\n });\n });\n }\n\n /**\n * Check if user location prompt can be triggered.\n * @returns {Boolean}\n */\n get canRequestUserLocation() {\n if (this.userLocationPermissionGranted) {\n return true;\n }\n\n if (!store.enabled) {\n log.error('Storage not available.');\n return true;\n }\n\n const lastRequest = store.get(this.lastLocationRequestKey);\n if (typeof lastRequest === 'undefined') {\n return true;\n }\n\n if (Date.now() - lastRequest > settings.sessionLength) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Check if user location data can be sent to PIP.\n * @returns {Boolean}\n */\n get canSendUserLocationToPIP() {\n if (!store.enabled) {\n log.error('Storage not available.');\n return true;\n }\n\n const sendThreshold = 1000;\n const lastRequest = store.get(this.lastPIPRequestKey);\n if (typeof lastRequest === 'undefined') {\n return true;\n }\n\n if (Date.now() - lastRequest > sendThreshold) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Set user location data.\n * @param {String} latitude - Latitude.\n * @param {String} longitude - Longitude.\n */\n setUserLocation(latitude, longitude) {\n this.location = [\n {\n ts: Date.now(),\n lat: latitude,\n lon: longitude,\n motion_recognition: [\n {\n motion_type: 'still',\n motion_confidence_score: 0,\n },\n ],\n },\n ];\n }\n\n /**\n * Ask for permission and fetch user geo location.\n * @param {Boolean} ignoreSession - Ignore session location prompt limit.\n * @returns {Promise}\n */\n getUserLocation(ignoreSession = false) {\n if (!ignoreSession && !this.canRequestUserLocation) {\n return Promise.resolve();\n }\n\n const options = {\n enableHighAccuracy: false,\n timeout: 10000,\n maximumAge: 0,\n };\n\n return new Promise(resolve => {\n store.set(this.lastLocationRequestKey, Date.now());\n\n if (!window.navigator.geolocation) {\n resolve();\n }\n\n window.navigator.geolocation.getCurrentPosition(\n location => {\n this.setUserLocation(location.coords.latitude, location.coords.longitude);\n resolve();\n },\n () => resolve(),\n options,\n );\n });\n }\n\n /**\n * Formats a user location message payload.\n * @param {Object} location - User location object.\n * @returns {Object}\n */\n getUserLocationPayload(location, ts = Date.now()) {\n const parser = new UAParser();\n const result = parser.getResult();\n\n const platform = `${get(result, 'os.name')} ${isMobileJS.any ? 'mobile' : 'desktop'}`;\n\n return {\n version: '1.0',\n ts,\n user_id: liid(),\n user_id_context: 'liid',\n device: get(result, 'device.model', null),\n user_agent: get(result, 'browser.name', null),\n client_version: get(result, 'browser.version', null),\n platform,\n site_id: this.siteId,\n location,\n };\n }\n\n /**\n * Send user location data to PIP.\n * @returns {Promise}\n */\n sendUserLocationData() {\n if (!this.isPIPReady) {\n log.error('Tried to send PIP data before config was loaded.');\n return Promise.resolve();\n }\n\n if (!this.canSendUserLocationToPIP) {\n return Promise.resolve();\n }\n\n if (!this.location) {\n log.warn('No user location data found.');\n return Promise.resolve();\n }\n\n store.set(this.lastPIPRequestKey, Date.now());\n const topic = 'userloc';\n\n const message = getPublishedMessageFormat(\n JSON.stringify(this.getUserLocationPayload(this.location)),\n this.getApiKey(topic),\n topic,\n this.getDifficulty(topic),\n );\n\n let postSuccess = false;\n log.debug('Sending user location data to PIP.');\n\n return axios.post(this.getEndpoint(topic), message, {\n headers: {\n 'Content-Type': 'text/plain',\n },\n })\n .then(() => {\n postSuccess = true;\n })\n .catch(error => log.error(error))\n .then(() => {\n if (postSuccess) {\n log.debug('User location data sent to PIP successfully.');\n }\n return Promise.resolve();\n });\n }\n}\n\nexport default PIP;\n\nwindow.Metaphor = window.Metaphor || {};\nwindow.Metaphor.PIP = PIP;\n\n\n\n// WEBPACK FOOTER //\n// ./src/PIP.js","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/set.js\n// module id = 89\n// module chunks = 0","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseSet.js\n// module id = 90\n// module chunks = 0","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_assignValue.js\n// module id = 91\n// module chunks = 0","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseAssignValue.js\n// module id = 92\n// module chunks = 0","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_defineProperty.js\n// module id = 93\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isIndex.js\n// module id = 94\n// module chunks = 0","/**\n * isMobile.js v0.4.1\n *\n * A simple library to detect Apple phones and tablets,\n * Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),\n * and any kind of seven inch device, via user agent sniffing.\n *\n * @author: Kai Mallea (kmallea@gmail.com)\n *\n * @license: http://creativecommons.org/publicdomain/zero/1.0/\n */\n(function (global) {\n\n var apple_phone = /iPhone/i,\n apple_ipod = /iPod/i,\n apple_tablet = /iPad/i,\n android_phone = /(?=.*\\bAndroid\\b)(?=.*\\bMobile\\b)/i, // Match 'Android' AND 'Mobile'\n android_tablet = /Android/i,\n amazon_phone = /(?=.*\\bAndroid\\b)(?=.*\\bSD4930UR\\b)/i,\n amazon_tablet = /(?=.*\\bAndroid\\b)(?=.*\\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\\b)/i,\n windows_phone = /Windows Phone/i,\n windows_tablet = /(?=.*\\bWindows\\b)(?=.*\\bARM\\b)/i, // Match 'Windows' AND 'ARM'\n other_blackberry = /BlackBerry/i,\n other_blackberry_10 = /BB10/i,\n other_opera = /Opera Mini/i,\n other_chrome = /(CriOS|Chrome)(?=.*\\bMobile\\b)/i,\n other_firefox = /(?=.*\\bFirefox\\b)(?=.*\\bMobile\\b)/i, // Match 'Firefox' AND 'Mobile'\n seven_inch = new RegExp(\n '(?:' + // Non-capturing group\n\n 'Nexus 7' + // Nexus 7\n\n '|' + // OR\n\n 'BNTV250' + // B&N Nook Tablet 7 inch\n\n '|' + // OR\n\n 'Kindle Fire' + // Kindle Fire\n\n '|' + // OR\n\n 'Silk' + // Kindle Fire, Silk Accelerated\n\n '|' + // OR\n\n 'GT-P1000' + // Galaxy Tab 7 inch\n\n ')', // End non-capturing group\n\n 'i'); // Case-insensitive matching\n\n var match = function(regex, userAgent) {\n return regex.test(userAgent);\n };\n\n var IsMobileClass = function(userAgent) {\n var ua = userAgent || navigator.userAgent;\n\n // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n var tmp = ua.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n ua = tmp[0];\n }\n\n // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probable happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n tmp = ua.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n ua = tmp[0];\n }\n\n this.apple = {\n phone: match(apple_phone, ua),\n ipod: match(apple_ipod, ua),\n tablet: !match(apple_phone, ua) && match(apple_tablet, ua),\n device: match(apple_phone, ua) || match(apple_ipod, ua) || match(apple_tablet, ua)\n };\n this.amazon = {\n phone: match(amazon_phone, ua),\n tablet: !match(amazon_phone, ua) && match(amazon_tablet, ua),\n device: match(amazon_phone, ua) || match(amazon_tablet, ua)\n };\n this.android = {\n phone: match(amazon_phone, ua) || match(android_phone, ua),\n tablet: !match(amazon_phone, ua) && !match(android_phone, ua) && (match(amazon_tablet, ua) || match(android_tablet, ua)),\n device: match(amazon_phone, ua) || match(amazon_tablet, ua) || match(android_phone, ua) || match(android_tablet, ua)\n };\n this.windows = {\n phone: match(windows_phone, ua),\n tablet: match(windows_tablet, ua),\n device: match(windows_phone, ua) || match(windows_tablet, ua)\n };\n this.other = {\n blackberry: match(other_blackberry, ua),\n blackberry10: match(other_blackberry_10, ua),\n opera: match(other_opera, ua),\n firefox: match(other_firefox, ua),\n chrome: match(other_chrome, ua),\n device: match(other_blackberry, ua) || match(other_blackberry_10, ua) || match(other_opera, ua) || match(other_firefox, ua) || match(other_chrome, ua)\n };\n this.seven_inch = match(seven_inch, ua);\n this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch;\n\n // excludes 'other' devices and ipods, targeting touchscreen phones\n this.phone = this.apple.phone || this.android.phone || this.windows.phone;\n\n // excludes 7 inch devices, classifying as phone or tablet is left to the user\n this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet;\n\n if (typeof window === 'undefined') {\n return this;\n }\n };\n\n var instantiate = function() {\n var IM = new IsMobileClass();\n IM.Class = IsMobileClass;\n return IM;\n };\n\n if (typeof module !== 'undefined' && module.exports && typeof window === 'undefined') {\n //node\n module.exports = IsMobileClass;\n } else if (typeof module !== 'undefined' && module.exports && typeof window !== 'undefined') {\n //browserify\n module.exports = instantiate();\n } else if (typeof define === 'function' && define.amd) {\n //AMD\n define('isMobile', [], global.isMobile = instantiate());\n } else {\n global.isMobile = instantiate();\n }\n\n})(this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ismobilejs/isMobile.js\n// module id = 95\n// module chunks = 0","/*!\n * UAParser.js v0.7.18\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman \n * Dual licensed under GPLv2 or MIT\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.18',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var margedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n margedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n margedRegexes[i] = regexes[i];\n }\n }\n return margedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n //var result = {},\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\n\n /*// construct object barebones\n for (p = 0; p < args[1].length; p++) {\n q = args[1][p];\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\n }*/\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n // console.log(this);\n //return this;\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n\n // Trident based\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser/Baidu\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\n ], [NAME, VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [[NAME, 'Edge'], VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\n // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\n ], [NAME, VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\n ], [NAME, VERSION], [\n\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\n ], [NAME, VERSION], [\n\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\n ], [NAME], [\n\n /(LBBROWSER)/i // LieBao Browser\n ], [NAME], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n\n /* /////////////////////\n // Media players BEGIN\n ////////////////////////\n\n , [\n\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\n /(coremedia) v((\\d+)[\\w\\._]+)/i\n ], [NAME, VERSION], [\n\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\n ], [NAME, VERSION], [\n\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\n ], [NAME, VERSION], [\n\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\n // NSPlayer/PSP-InternetRadioPlayer/Videos\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\n ], [NAME, VERSION], [\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\n ], [NAME, VERSION], [\n\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\n ], [[NAME, 'Flip Player'], VERSION], [\n\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\n ], [NAME], [\n\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\n // Gstreamer\n ], [NAME, VERSION], [\n\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\n // Java/urllib/requests/wget/cURL\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\n ], [NAME, VERSION], [\n\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\n // MPlayer SVN\n ], [NAME, VERSION], [\n\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\n ], [NAME, VERSION], [\n\n /(mplayer)/i, // MPlayer (no other info)\n /(yourmuze)/i, // YourMuze\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\n ], [NAME], [\n\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\n ], [NAME, VERSION], [\n\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\n ], [NAME, VERSION], [\n\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\n ], [NAME, VERSION], [\n\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\n ], [NAME, VERSION], [\n\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\n // inlight radio\n ], [NAME], [\n\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\n // SoundTap/Totem/Stagefright/Streamium\n ], [NAME, VERSION], [\n\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\n ], [NAME, VERSION], [\n\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\n ], [NAME, VERSION], [\n\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\n ], [[NAME, /-/g, ' '], VERSION], [\n\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\n // Windows Media Server\n ], [VERSION, [NAME, 'Windows']], [\n\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\n ], [NAME, VERSION], [\n\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\n ], [[NAME, 'rad.io'], VERSION]\n\n //////////////////////\n // Media players END\n ////////////////////*/\n\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+;))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\n /(zte)-(\\w*)/i, // ZTE\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w*)/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]*)/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w*)/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel xl|pixel)\\s/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\n\n /android.+a000(1)\\s+build/i, // OnePlus\n /android.+oneplus\\s(a\\d{4})\\s+build/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n\n\n /*//////////////////////////\n // TODO: move to string map\n ////////////////////////////\n\n /(C6603)/i // Sony Xperia Z C6603\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n /(C6903)/i // Sony Xperia Z 1\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /(SM-G900[F|H])/i // Samsung Galaxy S5\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G7102)/i // Samsung Galaxy Grand 2\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G313HZ)/i // Samsung Galaxy V\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n\n /(T3C)/i // Advan Vandroid T3C\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN S4A)/i // Advan Vandroid S4A\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\n\n /(V972M)/i // ZTE V972M\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\n\n /////////////\n // END TODO\n ///////////*/\n\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\n /linux;.+(sailfish);/i // Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]*)/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\n /(unix)\\s?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n /*\n var Browser = function (name, version) {\n this[NAME] = name;\n this[VERSION] = version;\n };\n var CPU = function (arch) {\n this[ARCHITECTURE] = arch;\n };\n var Device = function (vendor, model, type) {\n this[VENDOR] = vendor;\n this[MODEL] = model;\n this[TYPE] = type;\n };\n var Engine = Browser;\n var OS = Browser;\n */\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n //var browser = new Browser();\n //var cpu = new CPU();\n //var device = new Device();\n //var engine = new Engine();\n //var os = new OS();\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n //browser = new Browser();\n //cpu = new CPU();\n //device = new Device();\n //engine = new Engine();\n //os = new OS();\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n //UAParser.Utils = util;\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n // TODO: test!!!!!!!!\n /*\n if (require && require.main === module && process) {\n // cli\n var jsonize = function (arr) {\n var res = [];\n for (var i in arr) {\n res.push(new UAParser(arr[i]).getResult());\n }\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\n };\n if (process.stdin.isTTY) {\n // via args\n jsonize(process.argv.slice(2));\n } else {\n // via pipe\n var str = '';\n process.stdin.on('readable', function() {\n var read = process.stdin.read();\n if (read !== null) {\n str += read;\n }\n });\n process.stdin.on('end', function () {\n jsonize(str.replace(/\\n$/, '').split('\\n'));\n });\n }\n }\n */\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if (typeof $ !== UNDEF_TYPE) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ua-parser-js/src/ua-parser.js\n// module id = 96\n// module chunks = 0","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = 97\n// module chunks = 0","module.exports = require('./lib/axios');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/index.js\n// module id = 98\n// module chunks = 0","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\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(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.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);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/axios.js\n// module id = 99\n// module chunks = 0","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-buffer/index.js\n// module id = 100\n// module chunks = 0","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\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(),\n response: new InterceptorManager()\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, {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\nmodule.exports = Axios;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/Axios.js\n// module id = 101\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 102\n// module chunks = 0","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = 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\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/normalizeHeaderName.js\n// module id = 103\n// module chunks = 0","'use strict';\n\nvar createError = require('./createError');\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 */\nmodule.exports = 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/settle.js\n// module id = 104\n// module chunks = 0","'use strict';\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 */\nmodule.exports = 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\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/enhanceError.js\n// module id = 105\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\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 */\nmodule.exports = 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\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/buildURL.js\n// module id = 106\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\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 */\nmodule.exports = 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/parseHeaders.js\n// module id = 107\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/isURLSameOrigin.js\n// module id = 108\n// module chunks = 0","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/btoa.js\n// module id = 109\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/cookies.js\n// module id = 110\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\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\nmodule.exports = InterceptorManager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/InterceptorManager.js\n// module id = 111\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\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 */\nmodule.exports = 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.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\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/dispatchRequest.js\n// module id = 112\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\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 */\nmodule.exports = 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/transformData.js\n// module id = 113\n// module chunks = 0","'use strict';\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 */\nmodule.exports = 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\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/isAbsoluteURL.js\n// module id = 114\n// module chunks = 0","'use strict';\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 */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/combineURLs.js\n// module id = 115\n// module chunks = 0","'use strict';\n\nvar Cancel = require('./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(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\nmodule.exports = CancelToken;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/CancelToken.js\n// module id = 116\n// module chunks = 0","'use strict';\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 */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/spread.js\n// module id = 117\n// module chunks = 0","/* global window */\n\nimport Nonce from 'nonce';\nimport sha256 from 'tiny-sha256';\n\nconst NonceGenerator = Nonce(10);\n\n/**\n * Format message header.\n * @param {String} apiKey - API key.\n * @param {String} topic - Topic to publish message.\n * @param {String} epoch - Optional epoch-based timestamp.\n * @returns {String}\n */\nexport function getHeader(apiKey, topic, epoch = Date.now()) {\n const header = {\n apikey: apiKey,\n tpc: topic,\n epoch,\n };\n\n const headerJson = JSON.stringify(header);\n const headerBase64 = btoa(headerJson);\n return headerBase64;\n}\n\n/**\n * Return a nonce.\n * @returns {Integer}\n */\nfunction getNonce() {\n const nonce = NonceGenerator();\n return nonce;\n}\n\n/**\n * Generate a message composed of concatenated header, message body and nonce.\n * @param {String} header - API key.\n * @param {String} messageBody - Topic to publish message.\n * @param {Integer} nonce - Optional single-use arbitrary integer.\n * @returns {String}\n */\nexport function getCandidateMessage(header, messageBody, nonce = getNonce()) {\n const message = `${header}.${messageBody}.${nonce}`;\n return message;\n}\n\n/**\n * Return the number of leading zeroes in target string.\n * @param {String} targetString - String to be checked.\n * @returns {Integer}\n */\nexport function getNumberOfLeadingZeroes(targetString) {\n let i = 0;\n\n for (i = 0; i < targetString.length; i++) {\n if (targetString[i] !== '0') {\n break;\n }\n }\n\n return i;\n}\n\n/**\n * Create formatted message for topic publishing.\n * Message follows a \"aaa.bbb.ccc\" pattern, where:\n * \"aaa\" is the Base64-encoded header;\n * \"bbb\" is the Base64-encoded message body;\n * \"ccc\" is a nonce that generates a SHA-256 hash of the message with target difficulty;\n * @param {String} body - Message body, serialized JSON.\n * @param {String} apiKey - API key.\n * @param {String} topic - Topic to publish message.\n * @param {Integer} difficulty - SHA-256 hash difficulty (number of leading zeroes).\n */\nexport function getPublishedMessageFormat(body, apiKey, topic, difficulty) {\n const header = getHeader(apiKey, topic);\n const messageBody = btoa(body);\n\n let candidate = getCandidateMessage(header, messageBody);\n let candidateHash = sha256(candidate);\n let numLeadingZeroes = getNumberOfLeadingZeroes(candidateHash);\n\n while (numLeadingZeroes !== difficulty) {\n candidate = getCandidateMessage(header, messageBody);\n candidateHash = sha256(candidate);\n numLeadingZeroes = getNumberOfLeadingZeroes(candidateHash);\n }\n\n return candidate;\n}\n\nwindow.Metaphor = window.Metaphor || {};\nwindow.Metaphor.getPublishedMessageFormat = getPublishedMessageFormat;\n\n\n\n// WEBPACK FOOTER //\n// ./src/message.js","module.exports = function(length) {\n var last = null\n , repeat = 0\n\n if (typeof length == 'undefined') length = 15\n\n return function() {\n var now = Math.pow(10, 2) * +new Date()\n\n if (now == last) {\n repeat++\n } else {\n repeat = 0\n last = now\n }\n\n var s = (now + repeat).toString()\n return +s.substr(s.length - length)\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/nonce/index.js\n// module id = 119\n// module chunks = 0","/* global window */\n\nimport log from 'loglevel';\n\nclass MediaOS {\n static updateWeather(location) {\n if (location && window.Dewy && window.Dewy.updateUserLocation) {\n const { lat, lon } = location[0];\n window.Dewy.updateUserLocation(lat, lon);\n log.debug('MediaOS: updating user location for weather.');\n }\n\n return Promise.resolve();\n }\n}\n\nexport default MediaOS;\n\n\n\n// WEBPACK FOOTER //\n// ./src/MediaOS.js"],"sourceRoot":""}