{"version":3,"sources":["webpack:///./node_modules/@azure/msal-browser/dist/config/Configuration.js","webpack:///./node_modules/@azure/msal-browser/dist/crypto/GuidGenerator.js","webpack:///./node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.js","webpack:///./node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.js","webpack:///./node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.js","webpack:///./node_modules/@azure/msal-browser/dist/cache/MemoryStorage.js","webpack:///./node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.js","webpack:///./node_modules/@azure/msal-browser/dist/crypto/CryptoOps.js","webpack:///./node_modules/@azure/msal-browser/dist/cache/BrowserStorage.js","webpack:///./node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.js","webpack:///./node_modules/@azure/msal-browser/dist/cache/TokenCache.js","webpack:///./node_modules/@azure/msal-browser/dist/app/ClientApplication.js","webpack:///./node_modules/@azure/msal-browser/dist/app/PublicClientApplication.js","webpack:///./node_modules/@azure/msal-browser/dist/_virtual/_tslib.js"],"names":["DEFAULT_POPUP_TIMEOUT_MS","DEFAULT_IFRAME_TIMEOUT_MS","DEFAULT_REDIRECT_TIMEOUT_MS","buildConfiguration","_a","isBrowserEnvironment","userInputAuth","auth","userInputCache","cache","userInputSystem","system","DEFAULT_AUTH_OPTIONS","clientId","authority","DEFAULT_AUTHORITY","knownAuthorities","cloudDiscoveryMetadata","authorityMetadata","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","clientCapabilities","protocolMode","AAD","DEFAULT_CACHE_OPTIONS","cacheLocation","SessionStorage","storeAuthStateInCookie","secureCookies","DEFAULT_LOGGER_OPTIONS","loggerCallback","logLevel","Info","piiLoggingEnabled","DEFAULT_BROWSER_SYSTEM_OPTIONS","loggerOptions","networkClient","getBrowserNetworkClient","navigationClient","loadFrameTimeout","windowHashTimeout","iframeHashTimeout","navigateFrameWait","detectIEOrEdge","redirectNavigationTimeout","asyncPopups","allowRedirectInIframe","overlayedConfig","GuidGenerator","cryptoObj","this","prototype","generateGuid","buffer","Uint8Array","getRandomValues","MathUtils","decimalToHex","err","guidHolder","hex","r","guidResponse","i","Math","random","isGuid","guid","regexGuid","test","RANDOM_BYTE_ARR_LENGTH","PkceGenerator","base64Encode","Base64Encode","generateCodes","codeVerifier","codeChallenge","label","generateCodeVerifier","generateCodeChallengeFromVerifier","sent","verifier","challenge","pkceCodeVerifierB64","urlEncodeArr","e","BrowserAuthError","createPkceNotGeneratedError","pkceCodeVerifier","pkceHashedCodeVerifier","e_1","trys","push","sha256Digest","PKCS1_V15_KEYGEN_ALG","S256_HASH_ALG","MODULUS_LENGTH","PUBLIC_EXPONENT","BrowserCrypto","logger","hasCryptoAPI","createCryptoNotAvailableError","_keygenAlgorithmOptions","name","hash","modulusLength","publicExponent","dataString","data","BrowserStringUtils","stringToUtf8Arr","hasIECrypto","getMSCryptoDigest","getSubtleCryptoDigest","dataBuffer","window","crypto","generateKeyPair","extractable","usages","msCryptoGenerateKey","subtle","generateKey","exportJwk","key","msCryptoExportJwk","exportKey","importJwk","keyString","keyBuffer","getJwkString","stringToArrayBuffer","msCryptoImportKey","importKey","sign","msCryptoSign","hasBrowserCrypto","algorithm","digest","Promise","resolve","reject","digestOperation","addEventListener","target","result","error","_this","msGenerateKey","msExportKey","resultBuffer","resultString","utf8ArrToString","replace","split","join","JSON","parse","msImportKey","msSign","jwk","stringify","Object","keys","sort","DatabaseStorage","dbName","version","tableName","dbOpen","open","openDB","indexedDB","event","createObjectStore","db","createDatabaseUnavailableError","validateDbIsOpen","getItem","createDatabaseNotOpenError","transaction","objectStore","dbGet","get","setItem","payload","dbPut","put","removeItem","dbDelete","delete","getKeys","dbGetKeys","getAllKeys","containsKey","dbContainsKey","count","deleteDatabase","deleteDbRequest","MemoryStorage","Map","value","set","cacheKeys","forEach","has","clear","AsyncMemoryStorage","inMemoryCache","indexedDBCache","handleDatabaseAccessError","errorCode","databaseUnavailable","code","item","verbose","e_2","e_3","e_4","length","e_5","e_6","CryptoOps","browserCrypto","b64Encode","b64Decode","Base64Decode","guidGenerator","pkceGenerator","asymmetricKeys","symmetricKeys","createNewGuid","input","encode","base64Decode","decode","generatePkceCodes","getPublicKeyThumbprint","request","keyPair","publicKeyJwk","pubKeyThumprintObj","publicJwkString","publicJwkBuffer","publicJwkHash","privateKeyJwk","unextractablePrivateKey","EXTRACTABLE","POP_KEY_USAGES","publicKey","kty","n","privateKey","requestMethod","resourceRequestMethod","requestUri","resourceRequestUri","removeTokenBindingKey","kid","keyFound","clearKeystore","dataStoreNames","databaseStorage","_b","signJwt","cachedKeyPair","publicKeyJwkString","header","encodedHeader","encodedPayload","tokenString","tokenBuffer","signatureBuffer","encodedSignature","createSigningKeyNotFoundInStorageError","alg","type","urlEncode","cnf","BrowserStorage","validateWindowStorage","windowStorage","LocalStorage","BrowserConfigurationAuthError","createStorageNotSupportedError","storageSupported","hasOwnProperty","_super","BrowserCacheManager","cacheConfig","cryptoImpl","call","COOKIE_LIFE_MULTIPLIER","internalStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","setupTemporaryCacheStorage","migrateCacheEntries","idTokenKey","Constants","CACHE_PREFIX","ID_TOKEN","clientInfoKey","CLIENT_INFO","errorKey","ERROR","errorDescKey","ERROR_DESC","idTokenValue","clientInfoValue","errorValue","errorDescValue","values","keysToMigrate","cacheKey","index","migrateCacheEntry","newKey","setTemporaryCache","validateAndParseJson","jsonValue","parsedJson","getAccount","accountKey","account","parsedAccount","AccountEntity","isAccountEntity","CacheManager","toObject","setAccount","trace","generateAccountKey","getIdTokenCredential","parsedIdToken","IdTokenEntity","isIdTokenEntity","setIdTokenCredential","idToken","generateCredentialKey","getAccessTokenCredential","accessTokenKey","parsedAccessToken","AccessTokenEntity","isAccessTokenEntity","setAccessTokenCredential","accessToken","getRefreshTokenCredential","refreshTokenKey","parsedRefreshToken","RefreshTokenEntity","isRefreshTokenEntity","setRefreshTokenCredential","refreshToken","getAppMetadata","appMetadataKey","parsedMetadata","AppMetadataEntity","isAppMetadataEntity","setAppMetadata","appMetadata","generateAppMetadataKey","getServerTelemetry","serverTelemetryKey","ServerTelemetryEntity","isServerTelemetryEntity","setServerTelemetry","serverTelemetry","getAuthorityMetadata","AuthorityMetadataEntity","isAuthorityMetadataEntity","getAuthorityMetadataKeys","allKeys","filter","isAuthorityMetadata","setWrapperMetadata","wrapperSKU","wrapperVersion","WRAPPER_SKU","WRAPPER_VER","getWrapperMetadata","sku","setAuthorityMetadata","entity","getActiveAccount","activeAccountIdKey","generateCacheKey","ACTIVE_ACCOUNT","activeAccountId","getAccountInfoByFilter","localAccountId","setActiveAccount","accountFilter","allAccounts","getAllAccounts","accountObj","username","toLowerCase","homeAccountId","tenantId","environment","getThrottlingCache","throttlingCacheKey","parsedThrottlingCache","ThrottlingEntity","isThrottlingEntity","setThrottlingCache","throttlingCache","getTemporaryCache","itemCookie","getItemCookie","setItemCookie","clearItemCookie","removeAllAccounts","removeAppMetadata","indexOf","cookieName","cookieValue","expires","cookieStr","encodeURIComponent","expireTime","getCookieExpirationTime","document","cookie","cookieList","charAt","substring","decodeURIComponent","clearMsalCookies","cookiePrefix","cookieKey","cookieLifeDays","today","Date","expr","getTime","toUTCString","getCache","setCache","generatedKey","StringUtils","startsWith","ADAL_ID_TOKEN","generateAuthorityKey","stateString","stateId","ProtocolUtils","parseRequestState","libraryState","id","AUTHORITY","generateNonceKey","NONCE_IDTOKEN","generateStateKey","REQUEST_STATE","getCachedAuthority","cachedState","stateCacheKey","state","authorityCacheKey","updateCacheEntries","nonce","authorityInstance","loginHint","nonceCacheKey","ccsCredential","credential","CcsCredential","HOME_ACCOUNT_ID","CCS_CREDENTIAL","isEmpty","UPN","resetRequestCache","REQUEST_PARAMS","ORIGIN_URI","URL_HASH","CORRELATION_ID","setInteractionInProgress","cleanRequestByState","stateKey","infoPii","cleanRequestByInteractionType","interactionType","stateValue","parsedState","BrowserProtocolUtils","extractBrowserRequestState","cacheCodeRequest","authCodeRequest","encodedValue","getCachedRequest","encodedTokenRequest","createNoTokenRequestCacheError","parsedRequest","createUnableToParseTokenRequestCacheError","cachedAuthority","createNoCachedAuthorityError","isInteractionInProgress","matchClientId","getInteractionInProgress","INTERACTION_STATUS_KEY","inProgress","getLegacyLoginHint","adalIdTokenString","msalIdTokenString","cachedIdTokenString","cachedIdToken","claims","preferred_username","upn","DEFAULT_BROWSER_CACHE_MANAGER","cacheOptions","TokenCache","configuration","storage","config","loadExternalTokens","response","options","info","id_token","createUnableToLoadTokenError","loadIdToken","loadAccessToken","authorityOptions","Authority","clientInfo","hostnameAndPort","tenant","client_info","idTokenEntity","createIdTokenEntity","idAuthToken","AuthToken","accountEntity","createAccount","undefined","createGenericAccount","access_token","expires_in","extendedExpiresOn","scopes","ScopeSet","printScopes","expiresOn","accessTokenEntity","createAccessTokenEntity","ClientApplication","Logger","redirectResponse","eventHandler","EventHandler","tokenCache","handleRedirectPromise","loggedInAccounts","redirectResponseKey","correlationId","redirectClient","EMPTY_STRING","emitEvent","EventType","HANDLE_REDIRECT_START","Redirect","RedirectClient","then","isLoggingIn","LOGIN_SUCCESS","ACQUIRE_TOKEN_SUCCESS","HANDLE_REDIRECT_END","catch","ACQUIRE_TOKEN_FAILURE","LOGIN_FAILURE","acquireTokenRedirect","isLoggedIn","preflightBrowserEnvironmentCheck","ACQUIRE_TOKEN_START","LOGIN_START","acquireToken","acquireTokenPopup","Popup","popupClient","PopupClient","ssoSilent","silentIframeClient","silentTokenResult","Silent","SSO_SILENT_START","SilentIframeClient","SSO_SILENT_SUCCESS","SSO_SILENT_FAILURE","acquireTokenByRefreshToken","silentRefreshClient","ACQUIRE_TOKEN_NETWORK_START","BrowserUtils","blockReloadInHiddenIframes","SilentRefreshClient","isServerError","ServerError","isInteractionRequiredError","InteractionRequiredAuthError","isInvalidGrantError","BrowserConstants","INVALID_GRANT_ERROR","acquireTokenSilent_authCode","logout","logoutRequest","warning","logoutRedirect","logoutPopup","getAccountByUsername","userName","verbosePii","getAccountByHomeId","getAccountByLocalId","blockNonBrowserEnvironment","blockRedirectInIframe","blockAcquireTokenInPopups","createInMemoryRedirectUnavailableError","addEventCallback","callback","removeEventCallback","callbackId","enableAccountStorageEvents","disableAccountStorageEvents","getTokenCache","getLogger","setLogger","initializeWrapperLibrary","setNavigationClient","getConfiguration","PublicClientApplication","activeSilentTokenRequests","loginRedirect","loginPopup","acquireTokenSilent","thumbprint","silentRequestKey","cachedResponse","createNoAccountError","homeAccountIdentifier","authenticationScheme","shrClaims","sshJwk","sshKid","acquireTokenSilentAsync","silentCacheClient","silentRequest","SilentCacheClient","initializeSilentRequest","tokenRenewalResult","tokenRenewalError_1","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","__extends","__","constructor","create","__assign","assign","t","s","arguments","apply","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","step","next","rejected","done","__generator","body","f","y","g","_","ops","verb","Symbol","iterator","v","op","TypeError","pop","__read","o","m","ar","__spread","concat"],"mappings":"0HAAA,oLAaIA,EAA2B,IAC3BC,EAA4B,IAC5BC,EAA8B,IAUlC,SAASC,EAAmBC,EAAIC,GAC5B,IAAIC,EAAgBF,EAAGG,KAAMC,EAAiBJ,EAAGK,MAAOC,EAAkBN,EAAGO,OAEzEC,EAAuB,CACvBC,SAAU,GACVC,UAAW,GAAK,OAAUC,kBAC1BC,iBAAkB,GAClBC,uBAAwB,GACxBC,kBAAmB,GACnBC,YAAa,GACbC,sBAAuB,GACvBC,2BAA2B,EAC3BC,mBAAoB,GACpBC,aAAc,OAAaC,KAG3BC,EAAwB,CACxBC,cAAe,OAAqBC,eACpCC,wBAAwB,EACxBC,eAAe,GAGfC,EAAyB,CAEzBC,eAAgB,aAChBC,SAAU,OAASC,KACnBC,mBAAmB,GAGnBC,EAAiC,eAAS,eAAS,GAAI,QAAyB,CAAEC,cAAeN,EAAwBO,cAAehC,EAAuB,OAAaiC,0BAA4B,OAAsBC,iBAAkB,IAAI,OAAoBC,iBAAkB,EAE1RC,kBAAoB/B,GAAmBA,EAAgB8B,kBAAqBxC,EAA0B0C,kBAAoBhC,GAAmBA,EAAgB8B,kBAAqBvC,EAA2B0C,kBAAmBtC,GAAwB,OAAauC,iBAAmB,IAAM,EAAGC,0BAA2B3C,EAA6B4C,aAAa,EAAOC,uBAAuB,IACpYC,EAAkB,CAClBzC,KAAM,eAAS,eAAS,GAAIK,GAAuBN,GACnDG,MAAO,eAAS,eAAS,GAAIgB,GAAwBjB,GACrDG,OAAQ,eAAS,eAAS,GAAIwB,GAAiCzB,IAEnE,OAAOsC,I,+GCtDP,EAA+B,WAC/B,SAASC,EAAcC,GACnBC,KAAKD,UAAYA,EA6ErB,OArDAD,EAAcG,UAAUC,aAAe,WACnC,IACI,IAAIC,EAAS,IAAIC,WAAW,IAQ5B,OAPAJ,KAAKD,UAAUM,gBAAgBF,GAE/BA,EAAO,IAAM,GACbA,EAAO,IAAM,GAEbA,EAAO,IAAM,IACbA,EAAO,IAAM,IACNG,EAAA,KAAUC,aAAaJ,EAAO,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,IACnEG,EAAA,KAAUC,aAAaJ,EAAO,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,IAClE,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,IACxE,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,IACxE,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,IACxE,IAAMG,EAAA,KAAUC,aAAaJ,EAAO,KAAOG,EAAA,KAAUC,aAAaJ,EAAO,KACzEG,EAAA,KAAUC,aAAaJ,EAAO,KAAOG,EAAA,KAAUC,aAAaJ,EAAO,KACnEG,EAAA,KAAUC,aAAaJ,EAAO,KAAOG,EAAA,KAAUC,aAAaJ,EAAO,KAE7E,MAAOK,GAKH,IAJA,IAAIC,EAAa,uCACbC,EAAM,mBACNC,EAAI,EACJC,EAAe,GACVC,EAAI,EAAGA,EAAI,GAAIA,IACE,MAAlBJ,EAAWI,IAAgC,MAAlBJ,EAAWI,KAEpCF,EAAoB,GAAhBG,KAAKC,SAAgB,GAEP,MAAlBN,EAAWI,GACXD,GAAgBF,EAAIC,GAEG,MAAlBF,EAAWI,IAEhBF,GAAK,EACLA,GAAK,EACLC,GAAgBF,EAAIC,IAGpBC,GAAgBH,EAAWI,GAGnC,OAAOD,IAOfd,EAAckB,OAAS,SAAUC,GAC7B,IAAIC,EAAY,6EAChB,OAAOA,EAAUC,KAAKF,IAEnBnB,EA/EuB,G,oCCG9BsB,EAAyB,GAIzB,EAA+B,WAC/B,SAASC,EAActB,GACnBC,KAAKsB,aAAe,IAAIC,EAAA,KACxBvB,KAAKD,UAAYA,EAgErB,OA3DAsB,EAAcpB,UAAUuB,cAAgB,WACpC,OAAO,eAAUxB,UAAM,OAAQ,GAAQ,WACnC,IAAIyB,EAAcC,EAClB,OAAO,eAAY1B,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAED,OADAF,EAAezB,KAAK4B,uBACb,CAAC,EAAa5B,KAAK6B,kCAAkCJ,IAChE,KAAK,EAED,OADAC,EAAgBzE,EAAG6E,OACZ,CAAC,EAAc,CACdC,SAAUN,EACVO,UAAWN,YAUvCL,EAAcpB,UAAU2B,qBAAuB,WAC3C,IAEI,IAAIzB,EAAS,IAAIC,WAAWgB,GAC5BpB,KAAKD,UAAUM,gBAAgBF,GAE/B,IAAI8B,EAAsBjC,KAAKsB,aAAaY,aAAa/B,GACzD,OAAO8B,EAEX,MAAOE,GACH,MAAMC,EAAA,KAAiBC,4BAA4BF,KAO3Dd,EAAcpB,UAAU4B,kCAAoC,SAAUS,GAClE,OAAO,eAAUtC,UAAM,OAAQ,GAAQ,WACnC,IAAIuC,EAAwBC,EAC5B,OAAO,eAAYxC,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAED,OADA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa1C,KAAKD,UAAU4C,aAAaL,IACrD,KAAK,EAGD,OAFAC,EAAyBtF,EAAG6E,OAErB,CAAC,EAAc9B,KAAKsB,aAAaY,aAAa,IAAI9B,WAAWmC,KACxE,KAAK,EAED,MADAC,EAAMvF,EAAG6E,OACHM,EAAA,KAAiBC,4BAA4BG,GACvD,KAAK,EAAG,MAAO,CAAC,WAKzBnB,EAnEuB,G,YCA9BuB,EAAuB,oBAEvBC,EAAgB,UAEhBC,EAAiB,KAEjBC,EAAkB,IAAI3C,WAAW,CAAC,EAAM,EAAM,IAK9C,EAA+B,WAC/B,SAAS4C,EAAcC,GAEnB,GADAjD,KAAKiD,OAASA,GACRjD,KAAKkD,eACP,MAAMd,EAAA,KAAiBe,8BAA8B,oDAEzDnD,KAAKoD,wBAA0B,CAC3BC,KAAMT,EACNU,KAAMT,EACNU,cAAeT,EACfU,eAAgBT,GAgPxB,OAzOAC,EAAc/C,UAAU0C,aAAe,SAAUc,GAC7C,OAAO,eAAUzD,UAAM,OAAQ,GAAQ,WACnC,IAAI0D,EACJ,OAAO,eAAY1D,MAAM,SAAU/C,GAE/B,OADAyG,EAAOC,EAAA,KAAmBC,gBAAgBH,GACnC,CAAC,EAAczD,KAAK6D,cAAgB7D,KAAK8D,kBAAkBjB,EAAea,GAAQ1D,KAAK+D,sBAAsBlB,EAAea,WAQ/IV,EAAc/C,UAAUI,gBAAkB,SAAU2D,GAChD,IAAIjE,EAAYkE,OAAO,aAAeA,OAAOC,OAC7C,IAAKnE,EAAUM,gBACX,MAAM+B,EAAA,KAAiBe,8BAA8B,mCAEzDpD,EAAUM,gBAAgB2D,IAO9BhB,EAAc/C,UAAUkE,gBAAkB,SAAUC,EAAaC,GAC7D,OAAO,eAAUrE,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAe+C,KAAK6D,cACpB7D,KAAKsE,oBAAoBF,EAAaC,GACpCJ,OAAOC,OAAOK,OAAOC,YAAYxE,KAAKoD,wBAAyBgB,EAAaC,WASlGrB,EAAc/C,UAAUwE,UAAY,SAAUC,GAC1C,OAAO,eAAU1E,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc+C,KAAK6D,cAAgB7D,KAAK2E,kBAAkBD,GAAOT,OAAOC,OAAOK,OAAOK,UAAU,OAAgBF,WAWpI1B,EAAc/C,UAAU4E,UAAY,SAAUH,EAAKN,EAAaC,GAC5D,OAAO,eAAUrE,UAAM,OAAQ,GAAQ,WACnC,IAAI8E,EAAWC,EACf,OAAO,eAAY/E,MAAM,SAAU/C,GAG/B,OAFA6H,EAAY9B,EAAcgC,aAAaN,GACvCK,EAAYpB,EAAA,KAAmBsB,oBAAoBH,GAC5C,CAAC,EAAc9E,KAAK6D,cACnB7D,KAAKkF,kBAAkBH,EAAWX,EAAaC,GAC7CJ,OAAOC,OAAOK,OAAOY,UAAU,OAAgBT,EAAK1E,KAAKoD,wBAAyBgB,EAAaC,WASrHrB,EAAc/C,UAAUmF,KAAO,SAAUV,EAAKhB,GAC1C,OAAO,eAAU1D,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc+C,KAAK6D,cACnB7D,KAAKqF,aAAaX,EAAKhB,GACrBO,OAAOC,OAAOK,OAAOa,KAAKpF,KAAKoD,wBAAyBsB,EAAKhB,WAOnFV,EAAc/C,UAAUiD,aAAe,WACnC,OAAOlD,KAAK6D,eAAiB7D,KAAKsF,oBAKtCtC,EAAc/C,UAAU4D,YAAc,WAClC,MAAO,aAAcI,QAKzBjB,EAAc/C,UAAUqF,iBAAmB,WACvC,MAAO,WAAYrB,QAOvBjB,EAAc/C,UAAU8D,sBAAwB,SAAUwB,EAAW7B,GACjE,OAAO,eAAU1D,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAcgH,OAAOC,OAAOK,OAAOiB,OAAOD,EAAW7B,WASzEV,EAAc/C,UAAU6D,kBAAoB,SAAUyB,EAAW7B,GAC7D,OAAO,eAAU1D,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc,IAAIwI,SAAQ,SAAUC,EAASC,GAC7C,IAAIC,EAAkB3B,OAAO,YAAYM,OAAOiB,OAAOD,EAAW7B,EAAKvD,QACvEyF,EAAgBC,iBAAiB,YAAY,SAAU1D,GACnDuD,EAAQvD,EAAE2D,OAAOC,WAErBH,EAAgBC,iBAAiB,SAAS,SAAUG,GAChDL,EAAOK,iBAW/BhD,EAAc/C,UAAUqE,oBAAsB,SAAUF,EAAaC,GACjE,OAAO,eAAUrE,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc,IAAIwI,SAAQ,SAAUC,EAASC,GAC7C,IAAIO,EAAgBjC,OAAO,YAAYM,OAAOC,YAAYyB,EAAM7C,wBAAyBgB,EAAaC,GACtG6B,EAAcL,iBAAiB,YAAY,SAAU1D,GACjDuD,EAAQvD,EAAE2D,OAAOC,WAErBG,EAAcL,iBAAiB,SAAS,SAAUG,GAC9CL,EAAOK,iBAW/BhD,EAAc/C,UAAU0E,kBAAoB,SAAUD,GAClD,OAAO,eAAU1E,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc,IAAIwI,SAAQ,SAAUC,EAASC,GAC7C,IAAIQ,EAAclC,OAAO,YAAYM,OAAOK,UAAU,OAAgBF,GACtEyB,EAAYN,iBAAiB,YAAY,SAAU1D,GAC/C,IAAIiE,EAAejE,EAAE2D,OAAOC,OACxBM,EAAe1C,EAAA,KAAmB2C,gBAAgB,IAAIlG,WAAWgG,IAChEG,QAAQ,MAAO,IACfA,QAAQ,MAAO,IACfA,QAAQ,MAAO,IACfC,MAAM,KAAKC,KAAK,IAChBF,QAAQ,KAAU,IACvB,IACIb,EAAQgB,KAAKC,MAAMN,IAEvB,MAAOlE,GACHwD,EAAOxD,OAGfgE,EAAYN,iBAAiB,SAAS,SAAUG,GAC5CL,EAAOK,iBAa/BhD,EAAc/C,UAAUiF,kBAAoB,SAAUH,EAAWX,EAAaC,GAC1E,OAAO,eAAUrE,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc,IAAIwI,SAAQ,SAAUC,EAASC,GAC7C,IAAIiB,EAAc3C,OAAO,YAAYM,OAAOY,UAAU,OAAgBJ,EAAWkB,EAAM7C,wBAAyBgB,EAAaC,GAC7HuC,EAAYf,iBAAiB,YAAY,SAAU1D,GAC/CuD,EAAQvD,EAAE2D,OAAOC,WAErBa,EAAYf,iBAAiB,SAAS,SAAUG,GAC5CL,EAAOK,iBAW/BhD,EAAc/C,UAAUoF,aAAe,SAAUX,EAAKhB,GAClD,OAAO,eAAU1D,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc,IAAIwI,SAAQ,SAAUC,EAASC,GAC7C,IAAIkB,EAAS5C,OAAO,YAAYM,OAAOa,KAAKa,EAAM7C,wBAAyBsB,EAAKhB,GAChFmD,EAAOhB,iBAAiB,YAAY,SAAU1D,GAC1CuD,EAAQvD,EAAE2D,OAAOC,WAErBc,EAAOhB,iBAAiB,SAAS,SAAUG,GACvCL,EAAOK,iBAU/BhD,EAAcgC,aAAe,SAAU8B,GACnC,OAAOJ,KAAKK,UAAUD,EAAKE,OAAOC,KAAKH,GAAKI,SAEzClE,EA1PuB,GCb9B,EAAiC,WACjC,SAASmE,IACLnH,KAAKoH,OAAS,OACdpH,KAAKqH,QAAU,OACfrH,KAAKsH,UAAY,OACjBtH,KAAKuH,QAAS,EAuMlB,OAlMAJ,EAAgBlH,UAAUuH,KAAO,WAC7B,OAAO,eAAUxH,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc,IAAIwI,SAAQ,SAAUC,EAASC,GAC7C,IAAI8B,EAASxD,OAAOyD,UAAUF,KAAKvB,EAAMmB,OAAQnB,EAAMoB,SACvDI,EAAO5B,iBAAiB,iBAAiB,SAAU1D,GAC/C,IAAIwF,EAAQxF,EACZwF,EAAM7B,OAAOC,OAAO6B,kBAAkB3B,EAAMqB,cAEhDG,EAAO5B,iBAAiB,WAAW,SAAU1D,GACzC,IAAIwF,EAAQxF,EACZ8D,EAAM4B,GAAKF,EAAM7B,OAAOC,OACxBE,EAAMsB,QAAS,EACf7B,OAEJ+B,EAAO5B,iBAAiB,SAAS,WAAc,OAAOF,EAAOvD,EAAA,KAAiB0F,gDAQlGX,EAAgBlH,UAAU8H,iBAAmB,WACzC,OAAO,eAAU/H,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EACD,OAAM3B,KAAKuH,OAAe,CAAC,EAAa,GACjC,CAAC,EAAavH,KAAKwH,QAC9B,KAAK,EAAG,MAAO,CAAC,EAAcvK,EAAG6E,QACjC,KAAK,EAAG,MAAO,CAAC,WAShCqF,EAAgBlH,UAAU+H,QAAU,SAAUtD,GAC1C,OAAO,eAAU1E,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAAG,MAAO,CAAC,EAAa3B,KAAK+H,oBAClC,KAAK,EAED,OADA9K,EAAG6E,OACI,CAAC,EAAc,IAAI2D,SAAQ,SAAUC,EAASC,GAE7C,IAAKM,EAAM4B,GACP,OAAOlC,EAAOvD,EAAA,KAAiB6F,8BAEnC,IAAIC,EAAcjC,EAAM4B,GAAGK,YAAY,CAACjC,EAAMqB,WAAY,YACtDa,EAAcD,EAAYC,YAAYlC,EAAMqB,WAC5Cc,EAAQD,EAAYE,IAAI3D,GAC5B0D,EAAMvC,iBAAiB,WAAW,SAAU1D,GACxC,IAAIwF,EAAQxF,EACZuD,EAAQiC,EAAM7B,OAAOC,WAEzBqC,EAAMvC,iBAAiB,SAAS,SAAU1D,GAAK,OAAOwD,EAAOxD,kBAWzFgF,EAAgBlH,UAAUqI,QAAU,SAAU5D,EAAK6D,GAC/C,OAAO,eAAUvI,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAAG,MAAO,CAAC,EAAa3B,KAAK+H,oBAClC,KAAK,EAED,OADA9K,EAAG6E,OACI,CAAC,EAAc,IAAI2D,SAAQ,SAAUC,EAASC,GAE7C,IAAKM,EAAM4B,GACP,OAAOlC,EAAOvD,EAAA,KAAiB6F,8BAEnC,IAAIC,EAAcjC,EAAM4B,GAAGK,YAAY,CAACjC,EAAMqB,WAAY,aACtDa,EAAcD,EAAYC,YAAYlC,EAAMqB,WAC5CkB,EAAQL,EAAYM,IAAIF,EAAS7D,GACrC8D,EAAM3C,iBAAiB,WAAW,WAAc,OAAOH,OACvD8C,EAAM3C,iBAAiB,SAAS,SAAU1D,GAAK,OAAOwD,EAAOxD,kBAUzFgF,EAAgBlH,UAAUyI,WAAa,SAAUhE,GAC7C,OAAO,eAAU1E,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAAG,MAAO,CAAC,EAAa3B,KAAK+H,oBAClC,KAAK,EAED,OADA9K,EAAG6E,OACI,CAAC,EAAc,IAAI2D,SAAQ,SAAUC,EAASC,GAC7C,IAAKM,EAAM4B,GACP,OAAOlC,EAAOvD,EAAA,KAAiB6F,8BAEnC,IAAIC,EAAcjC,EAAM4B,GAAGK,YAAY,CAACjC,EAAMqB,WAAY,aACtDa,EAAcD,EAAYC,YAAYlC,EAAMqB,WAC5CqB,EAAWR,EAAYS,OAAOlE,GAClCiE,EAAS9C,iBAAiB,WAAW,WAAc,OAAOH,OAC1DiD,EAAS9C,iBAAiB,SAAS,SAAU1D,GAAK,OAAOwD,EAAOxD,kBAS5FgF,EAAgBlH,UAAU4I,QAAU,WAChC,OAAO,eAAU7I,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAAG,MAAO,CAAC,EAAa3B,KAAK+H,oBAClC,KAAK,EAED,OADA9K,EAAG6E,OACI,CAAC,EAAc,IAAI2D,SAAQ,SAAUC,EAASC,GAC7C,IAAKM,EAAM4B,GACP,OAAOlC,EAAOvD,EAAA,KAAiB6F,8BAEnC,IAAIC,EAAcjC,EAAM4B,GAAGK,YAAY,CAACjC,EAAMqB,WAAY,YACtDa,EAAcD,EAAYC,YAAYlC,EAAMqB,WAC5CwB,EAAYX,EAAYY,aAC5BD,EAAUjD,iBAAiB,WAAW,SAAU1D,GAC5C,IAAIwF,EAAQxF,EACZuD,EAAQiC,EAAM7B,OAAOC,WAEzB+C,EAAUjD,iBAAiB,SAAS,SAAU1D,GAAK,OAAOwD,EAAOxD,kBAU7FgF,EAAgBlH,UAAU+I,YAAc,SAAUtE,GAC9C,OAAO,eAAU1E,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAAG,MAAO,CAAC,EAAa3B,KAAK+H,oBAClC,KAAK,EAED,OADA9K,EAAG6E,OACI,CAAC,EAAc,IAAI2D,SAAQ,SAAUC,EAASC,GAC7C,IAAKM,EAAM4B,GACP,OAAOlC,EAAOvD,EAAA,KAAiB6F,8BAEnC,IAAIC,EAAcjC,EAAM4B,GAAGK,YAAY,CAACjC,EAAMqB,WAAY,YACtDa,EAAcD,EAAYC,YAAYlC,EAAMqB,WAC5C2B,EAAgBd,EAAYe,MAAMxE,GACtCuE,EAAcpD,iBAAiB,WAAW,SAAU1D,GAChD,IAAIwF,EAAQxF,EACZuD,EAAgC,IAAxBiC,EAAM7B,OAAOC,WAEzBkD,EAAcpD,iBAAiB,SAAS,SAAU1D,GAAK,OAAOwD,EAAOxD,kBAWjGgF,EAAgBlH,UAAUkJ,eAAiB,WACvC,OAAO,eAAUnJ,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc,IAAIwI,SAAQ,SAAUC,EAASC,GAC7C,IAAIyD,EAAkBnF,OAAOyD,UAAUyB,eAAe,QACtDC,EAAgBvD,iBAAiB,WAAW,WAAc,OAAOH,GAAQ,MACzE0D,EAAgBvD,iBAAiB,SAAS,WAAc,OAAOF,GAAO,iBAKnFwB,EA5MyB,GCPhCkC,EAA+B,WAC/B,SAASA,IACLrJ,KAAK1C,MAAQ,IAAIgM,IAwBrB,OAtBAD,EAAcpJ,UAAU+H,QAAU,SAAUtD,GACxC,OAAO1E,KAAK1C,MAAM+K,IAAI3D,IAAQ,MAElC2E,EAAcpJ,UAAUqI,QAAU,SAAU5D,EAAK6E,GAC7CvJ,KAAK1C,MAAMkM,IAAI9E,EAAK6E,IAExBF,EAAcpJ,UAAUyI,WAAa,SAAUhE,GAC3C1E,KAAK1C,MAAMsL,OAAOlE,IAEtB2E,EAAcpJ,UAAU4I,QAAU,WAC9B,IAAIY,EAAY,GAIhB,OAHAzJ,KAAK1C,MAAMoM,SAAQ,SAAUH,EAAO7E,GAChC+E,EAAU/G,KAAKgC,MAEZ+E,GAEXJ,EAAcpJ,UAAU+I,YAAc,SAAUtE,GAC5C,OAAO1E,KAAK1C,MAAMqM,IAAIjF,IAE1B2E,EAAcpJ,UAAU2J,MAAQ,WAC5B5J,KAAK1C,MAAMsM,SAERP,EA1BuB,GCS9B,EAAoC,WACpC,SAASQ,EAAmB5G,GACxBjD,KAAK8J,cAAgB,IAAIT,EACzBrJ,KAAK+J,eAAiB,IAAI,EAC1B/J,KAAKiD,OAASA,EA2KlB,OAzKA4G,EAAmB5J,UAAU+J,0BAA4B,SAAUhE,GAC3DA,aAAiB5D,EAAA,MAAoB4D,EAAMiE,YAAc7H,EAAA,KAAwB8H,oBAAoBC,MACrGnK,KAAKiD,OAAO+C,MAAM,gJAQ1B6D,EAAmB5J,UAAU+H,QAAU,SAAUtD,GAC7C,OAAO,eAAU1E,UAAM,OAAQ,GAAQ,WACnC,IAAIoK,EAAM5H,EACV,OAAO,eAAYxC,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAED,GADAyI,EAAOpK,KAAK8J,cAAc9B,QAAQtD,GAC5B0F,EAAM,MAAO,CAAC,EAAa,GACjCnN,EAAG0E,MAAQ,EACf,KAAK,EAGD,OAFA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB1C,KAAKiD,OAAOoH,QAAQ,+EACb,CAAC,EAAarK,KAAK+J,eAAe/B,QAAQtD,IACrD,KAAK,EAAG,MAAO,CAAC,EAAczH,EAAG6E,QACjC,KAAK,EAGD,OAFAU,EAAMvF,EAAG6E,OACT9B,KAAKgK,0BAA0BxH,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAc4H,WAW9CP,EAAmB5J,UAAUqI,QAAU,SAAU5D,EAAK6E,GAClD,OAAO,eAAUvJ,UAAM,OAAQ,GAAQ,WACnC,IAAIsK,EACJ,OAAO,eAAYtK,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EACD3B,KAAK8J,cAAcxB,QAAQ5D,EAAK6E,GAChCtM,EAAG0E,MAAQ,EACf,KAAK,EAED,OADA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa1C,KAAK+J,eAAezB,QAAQ5D,EAAK6E,IAC1D,KAAK,EAED,OADAtM,EAAG6E,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAwI,EAAMrN,EAAG6E,OACT9B,KAAKgK,0BAA0BM,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAShCT,EAAmB5J,UAAUyI,WAAa,SAAUhE,GAChD,OAAO,eAAU1E,UAAM,OAAQ,GAAQ,WACnC,IAAIuK,EACJ,OAAO,eAAYvK,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EACD3B,KAAK8J,cAAcpB,WAAWhE,GAC9BzH,EAAG0E,MAAQ,EACf,KAAK,EAED,OADA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa1C,KAAK+J,eAAerB,WAAWhE,IACxD,KAAK,EAED,OADAzH,EAAG6E,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAyI,EAAMtN,EAAG6E,OACT9B,KAAKgK,0BAA0BO,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAShCV,EAAmB5J,UAAU4I,QAAU,WACnC,OAAO,eAAU7I,UAAM,OAAQ,GAAQ,WACnC,IAAIyJ,EAAWe,EACf,OAAO,eAAYxK,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAED,GADA8H,EAAYzJ,KAAK8J,cAAcjB,UACJ,IAArBY,EAAUgB,OAAe,MAAO,CAAC,EAAa,GACpDxN,EAAG0E,MAAQ,EACf,KAAK,EAGD,OAFA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB1C,KAAKiD,OAAOoH,QAAQ,8DACb,CAAC,EAAarK,KAAK+J,eAAelB,WAC7C,KAAK,EAAG,MAAO,CAAC,EAAc5L,EAAG6E,QACjC,KAAK,EAGD,OAFA0I,EAAMvN,EAAG6E,OACT9B,KAAKgK,0BAA0BQ,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAcf,WAS9CI,EAAmB5J,UAAU+I,YAAc,SAAUtE,GACjD,OAAO,eAAU1E,UAAM,OAAQ,GAAQ,WACnC,IAAIgJ,EAAa0B,EACjB,OAAO,eAAY1K,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAED,GADAqH,EAAchJ,KAAK8J,cAAcd,YAAYtE,GACvCsE,EAAa,MAAO,CAAC,EAAa,GACxC/L,EAAG0E,MAAQ,EACf,KAAK,EAGD,OAFA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB1C,KAAKiD,OAAOoH,QAAQ,sEACb,CAAC,EAAarK,KAAK+J,eAAef,YAAYtE,IACzD,KAAK,EAAG,MAAO,CAAC,EAAczH,EAAG6E,QACjC,KAAK,EAGD,OAFA4I,EAAMzN,EAAG6E,OACT9B,KAAKgK,0BAA0BU,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAc1B,WAQ9Ca,EAAmB5J,UAAU2J,MAAQ,WACjC,OAAO,eAAU5J,UAAM,OAAQ,GAAQ,WACnC,IAAI2K,EACJ,OAAO,eAAY3K,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EACD3B,KAAK8J,cAAcF,QACnB3M,EAAG0E,MAAQ,EACf,KAAK,EAED,OADA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa1C,KAAK+J,eAAeZ,kBAC7C,KAAK,EAED,OADAlM,EAAG6E,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA6I,EAAM1N,EAAG6E,OACT9B,KAAKgK,0BAA0BW,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAKzBd,EA/K4B,GCMnC,EAA2B,WAC3B,SAASe,EAAU3H,GACfjD,KAAKiD,OAASA,EAEdjD,KAAK6K,cAAgB,IAAI,EAAc7K,KAAKiD,QAC5CjD,KAAK8K,UAAY,IAAIvJ,EAAA,KACrBvB,KAAK+K,UAAY,IAAIC,EAAA,KACrBhL,KAAKiL,cAAgB,IAAI,EAAcjL,KAAK6K,eAC5C7K,KAAKkL,cAAgB,IAAI,EAAclL,KAAK6K,eAC5C7K,KAAK1C,MAAQ,CACT6N,eAAgB,IAAI,EAAmBnL,KAAKiD,QAC5CmI,cAAe,IAAI,EAAmBpL,KAAKiD,SAuKnD,OAhKA2H,EAAU3K,UAAUoL,cAAgB,WAChC,OAAOrL,KAAKiL,cAAc/K,gBAM9B0K,EAAU3K,UAAUqB,aAAe,SAAUgK,GACzC,OAAOtL,KAAK8K,UAAUS,OAAOD,IAMjCV,EAAU3K,UAAUuL,aAAe,SAAUF,GACzC,OAAOtL,KAAK+K,UAAUU,OAAOH,IAKjCV,EAAU3K,UAAUyL,kBAAoB,WACpC,OAAO,eAAU1L,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,MAAO,CAAC,EAAc+C,KAAKkL,cAAc1J,wBAQrDoJ,EAAU3K,UAAU0L,uBAAyB,SAAUC,GACnD,OAAO,eAAU5L,UAAM,OAAQ,GAAQ,WACnC,IAAI6L,EAASC,EAAcC,EAAoBC,EAAiBC,EAAiBC,EAAeC,EAAeC,EAC/G,OAAO,eAAYpM,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAAG,MAAO,CAAC,EAAa3B,KAAK6K,cAAc1G,gBAAgByG,EAAUyB,YAAazB,EAAU0B,iBACjG,KAAK,EAED,OADAT,EAAU5O,EAAG6E,OACN,CAAC,EAAa9B,KAAK6K,cAAcpG,UAAUoH,EAAQU,YAC9D,KAAK,EAQD,OAPAT,EAAe7O,EAAG6E,OAClBiK,EAAqB,CACjB5J,EAAG2J,EAAa3J,EAChBqK,IAAKV,EAAaU,IAClBC,EAAGX,EAAaW,GAEpBT,EAAkB,EAAchH,aAAa+G,GACtC,CAAC,EAAa/L,KAAK6K,cAAclI,aAAaqJ,IACzD,KAAK,EAGD,OAFAC,EAAkBhP,EAAG6E,OACrBoK,EAAgBlM,KAAK8K,UAAU5I,aAAa,IAAI9B,WAAW6L,IACpD,CAAC,EAAajM,KAAK6K,cAAcpG,UAAUoH,EAAQa,aAC9D,KAAK,EAED,OADAP,EAAgBlP,EAAG6E,OACZ,CAAC,EAAa9B,KAAK6K,cAAchG,UAAUsH,GAAe,EAAO,CAAC,UAC7E,KAAK,EAGD,OAFAC,EAA0BnP,EAAG6E,OAEtB,CAAC,EAAa9B,KAAK1C,MAAM6N,eAAe7C,QAAQ4D,EAAe,CAC9DQ,WAAYN,EACZG,UAAWV,EAAQU,UACnBI,cAAef,EAAQgB,sBACvBC,WAAYjB,EAAQkB,sBAEhC,KAAK,EAGD,OADA7P,EAAG6E,OACI,CAAC,EAAcoK,WAS1CtB,EAAU3K,UAAU8M,sBAAwB,SAAUC,GAClD,OAAO,eAAUhN,UAAM,OAAQ,GAAQ,WACnC,IAAIiN,EACJ,OAAO,eAAYjN,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAAG,MAAO,CAAC,EAAa3B,KAAK1C,MAAM6N,eAAezC,WAAWsE,IAClE,KAAK,EAED,OADA/P,EAAG6E,OACI,CAAC,EAAa9B,KAAK1C,MAAM6N,eAAenC,YAAYgE,IAC/D,KAAK,EAED,OADAC,EAAWhQ,EAAG6E,OACP,CAAC,GAAemL,WAQ3CrC,EAAU3K,UAAUiN,cAAgB,WAChC,OAAO,eAAUlN,UAAM,OAAQ,GAAQ,WACnC,IAAImN,EAAgBC,EAAiBnQ,EACrC,OAAO,eAAY+C,MAAM,SAAUqN,GAC/B,OAAQA,EAAG1L,OACP,KAAK,EAGD,OAFAwL,EAAiBnG,OAAOC,KAAKjH,KAAK1C,OAClC8P,EAAkBpN,KAAK1C,MAAM6P,EAAe,IACvCC,EACE,CAAC,EAAaA,EAAgBjE,kBADR,CAAC,EAAa,GAE/C,KAAK,EAED,OADAlM,EAAKoQ,EAAGvL,OACD,CAAC,EAAa,GACzB,KAAK,EACD7E,GAAK,EACLoQ,EAAG1L,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAc1E,WAU9C2N,EAAU3K,UAAUqN,QAAU,SAAU/E,EAASyE,GAC7C,OAAO,eAAUhN,UAAM,OAAQ,GAAQ,WACnC,IAAIuN,EAAezB,EAAc0B,EAAoBC,EAAQC,EAAeC,EAAgBC,EAAaC,EAAaC,EAAiBC,EACvI,OAAO,eAAY/N,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAAG,MAAO,CAAC,EAAa3B,KAAK1C,MAAM6N,eAAenD,QAAQgF,IAC/D,KAAK,EAED,GADAO,EAAgBtQ,EAAG6E,QACdyL,EACD,MAAMnL,EAAA,KAAiB4L,uCAAuChB,GAElE,MAAO,CAAC,EAAahN,KAAK6K,cAAcpG,UAAU8I,EAAchB,YACpE,KAAK,EAeD,OAdAT,EAAe7O,EAAG6E,OAClB0L,EAAqB,EAAcxI,aAAa8G,GAChD2B,EAAS,CACLQ,IAAKnC,EAAamC,IAClBC,KAAM,QAEVR,EAAgB1N,KAAK8K,UAAUqD,UAAUzH,KAAKK,UAAU0G,IAExDlF,EAAQ6F,IAAM,CACVtH,IAAKJ,KAAKC,MAAM6G,IAEpBG,EAAiB3N,KAAK8K,UAAUqD,UAAUzH,KAAKK,UAAUwB,IACzDqF,EAAcF,EAAgB,IAAMC,EACpCE,EAAclK,EAAA,KAAmBsB,oBAAoB2I,GAC9C,CAAC,EAAa5N,KAAK6K,cAAczF,KAAKmI,EAAcb,WAAYmB,IAC3E,KAAK,EAGD,OAFAC,EAAkB7Q,EAAG6E,OACrBiM,EAAmB/N,KAAK8K,UAAU5I,aAAa,IAAI9B,WAAW0N,IACvD,CAAC,EAAcF,EAAc,IAAMG,WAK9DnD,EAAU0B,eAAiB,CAAC,OAAQ,UACpC1B,EAAUyB,aAAc,EACjBzB,EAlLmB,G,oOCZ1B,EAAgC,WAChC,SAASyD,EAAe9P,GACpByB,KAAKsO,sBAAsB/P,GAC3ByB,KAAKuO,cAAgBtK,OAAO1F,GA0BhC,OAxBA8P,EAAepO,UAAUqO,sBAAwB,SAAU/P,GACvD,GAAIA,IAAkB,OAAqBiQ,cAAgBjQ,IAAkB,OAAqBC,eAC9F,MAAMiQ,EAAA,KAA8BC,+BAA+BnQ,GAEvE,IAAIoQ,IAAqB1K,OAAO1F,GAChC,IAAKoQ,EACD,MAAMF,EAAA,KAA8BC,+BAA+BnQ,IAG3E8P,EAAepO,UAAU+H,QAAU,SAAUtD,GACzC,OAAO1E,KAAKuO,cAAcvG,QAAQtD,IAEtC2J,EAAepO,UAAUqI,QAAU,SAAU5D,EAAK6E,GAC9CvJ,KAAKuO,cAAcjG,QAAQ5D,EAAK6E,IAEpC8E,EAAepO,UAAUyI,WAAa,SAAUhE,GAC5C1E,KAAKuO,cAAc7F,WAAWhE,IAElC2J,EAAepO,UAAU4I,QAAU,WAC/B,OAAO7B,OAAOC,KAAKjH,KAAKuO,gBAE5BF,EAAepO,UAAU+I,YAAc,SAAUtE,GAC7C,OAAO1E,KAAKuO,cAAcK,eAAelK,IAEtC2J,EA7BwB,G,YCU/B,EAAqC,SAAUQ,GAE/C,SAASC,EAAoBpR,EAAUqR,EAAaC,EAAY/L,GAC5D,IAAIgD,EAAQ4I,EAAOI,KAAKjP,KAAMtC,EAAUsR,IAAehP,KAUvD,OARAiG,EAAMiJ,uBAAyB,MAC/BjJ,EAAM8I,YAAcA,EACpB9I,EAAMhD,OAASA,EACfgD,EAAMkJ,gBAAkB,IAAI9F,EAC5BpD,EAAMmJ,eAAiBnJ,EAAMoJ,oBAAoBpJ,EAAM8I,YAAYxQ,eACnE0H,EAAMqJ,sBAAwBrJ,EAAMsJ,2BAA2BtJ,EAAM8I,YAAYxQ,eAEjF0H,EAAMuJ,sBACCvJ,EAmzBX,OA/zBA,eAAU6I,EAAqBD,GAkB/BC,EAAoB7O,UAAUoP,oBAAsB,SAAU9Q,GAC1D,OAAQA,GACJ,KAAK,OAAqBiQ,aAC1B,KAAK,OAAqBhQ,eACtB,IAEI,OAAO,IAAI,EAAeD,GAE9B,MAAO4D,GACHnC,KAAKiD,OAAOoH,QAAQlI,GACpB,OAIZ,OADAnC,KAAK+O,YAAYxQ,cAAgB,OAAqB8K,cAC/C,IAAIA,GAMfyF,EAAoB7O,UAAUsP,2BAA6B,SAAUhR,GACjE,OAAQA,GACJ,KAAK,OAAqBiQ,aAC1B,KAAK,OAAqBhQ,eACtB,IAEI,OAAO,IAAI,EAAe,OAAqBA,gBAEnD,MAAO2D,GAEH,OADAnC,KAAKiD,OAAOoH,QAAQlI,GACbnC,KAAKmP,gBAEpB,KAAK,OAAqB9F,cAC1B,QACI,OAAOrJ,KAAKmP,kBAOxBL,EAAoB7O,UAAUuP,oBAAsB,WAChD,IAAIvJ,EAAQjG,KACRyP,EAAaC,EAAA,KAAUC,aAAe,IAAM,OAAoBC,SAChEC,EAAgBH,EAAA,KAAUC,aAAe,IAAM,OAAoBG,YACnEC,EAAWL,EAAA,KAAUC,aAAe,IAAM,OAAoBK,MAC9DC,EAAeP,EAAA,KAAUC,aAAe,IAAM,OAAoBO,WAClEC,EAAenQ,KAAKoP,eAAepH,QAAQyH,GAC3CW,EAAkBpQ,KAAKoP,eAAepH,QAAQ6H,GAC9CQ,EAAarQ,KAAKoP,eAAepH,QAAQ+H,GACzCO,EAAiBtQ,KAAKoP,eAAepH,QAAQiI,GAC7CM,EAAS,CAACJ,EAAcC,EAAiBC,EAAYC,GACrDE,EAAgB,CAAC,OAAoBZ,SAAU,OAAoBE,YAAa,OAAoBE,MAAO,OAAoBE,YACnIM,EAAc9G,SAAQ,SAAU+G,EAAUC,GAAS,OAAOzK,EAAM0K,kBAAkBF,EAAUF,EAAOG,QAQvG5B,EAAoB7O,UAAU0Q,kBAAoB,SAAUC,EAAQrH,GAC5DA,GACAvJ,KAAK6Q,kBAAkBD,EAAQrH,GAAO,IAO9CuF,EAAoB7O,UAAU6Q,qBAAuB,SAAUC,GAC3D,IACI,IAAIC,EAAatK,KAAKC,MAAMoK,GAO5B,OAAQC,GAAoC,kBAAfA,EAA2BA,EAAa,KAEzE,MAAOhL,GACH,OAAO,OAOf8I,EAAoB7O,UAAU+H,QAAU,SAAUtD,GAC9C,OAAO1E,KAAKoP,eAAepH,QAAQtD,IAOvCoK,EAAoB7O,UAAUqI,QAAU,SAAU5D,EAAK6E,GACnDvJ,KAAKoP,eAAe9G,QAAQ5D,EAAK6E,IAMrCuF,EAAoB7O,UAAUgR,WAAa,SAAUC,GACjD,IAAIC,EAAUnR,KAAKgI,QAAQkJ,GAC3B,IAAKC,EACD,OAAO,KAEX,IAAIC,EAAgBpR,KAAK8Q,qBAAqBK,GAC9C,OAAKC,GAAkBC,EAAA,KAAcC,gBAAgBF,GAG9CG,EAAA,KAAaC,SAAS,IAAIH,EAAA,KAAiBD,GAFvC,MASftC,EAAoB7O,UAAUwR,WAAa,SAAUN,GACjDnR,KAAKiD,OAAOyO,MAAM,yCAClB,IAAIhN,EAAMyM,EAAQQ,qBAClB3R,KAAKsI,QAAQ5D,EAAKgC,KAAKK,UAAUoK,KAMrCrC,EAAoB7O,UAAU2R,qBAAuB,SAAUnC,GAC3D,IAAIlG,EAAQvJ,KAAKgI,QAAQyH,GACzB,IAAKlG,EAED,OADAvJ,KAAKiD,OAAOyO,MAAM,kEACX,KAEX,IAAIG,EAAgB7R,KAAK8Q,qBAAqBvH,GAC9C,OAAKsI,GAAkBC,EAAA,KAAcC,gBAAgBF,IAIrD7R,KAAKiD,OAAOyO,MAAM,uDACXH,EAAA,KAAaC,SAAS,IAAIM,EAAA,KAAiBD,KAJ9C7R,KAAKiD,OAAOyO,MAAM,kEACX,OASf5C,EAAoB7O,UAAU+R,qBAAuB,SAAUC,GAC3DjS,KAAKiD,OAAOyO,MAAM,mDAClB,IAAIjC,EAAawC,EAAQC,wBACzBlS,KAAKsI,QAAQmH,EAAY/I,KAAKK,UAAUkL,KAM5CnD,EAAoB7O,UAAUkS,yBAA2B,SAAUC,GAC/D,IAAI7I,EAAQvJ,KAAKgI,QAAQoK,GACzB,IAAK7I,EAED,OADAvJ,KAAKiD,OAAOyO,MAAM,sEACX,KAEX,IAAIW,EAAoBrS,KAAK8Q,qBAAqBvH,GAClD,OAAK8I,GAAsBC,EAAA,KAAkBC,oBAAoBF,IAIjErS,KAAKiD,OAAOyO,MAAM,2DACXH,EAAA,KAAaC,SAAS,IAAIc,EAAA,KAAqBD,KAJlDrS,KAAKiD,OAAOyO,MAAM,sEACX,OASf5C,EAAoB7O,UAAUuS,yBAA2B,SAAUC,GAC/DzS,KAAKiD,OAAOyO,MAAM,uDAClB,IAAIU,EAAiBK,EAAYP,wBACjClS,KAAKsI,QAAQ8J,EAAgB1L,KAAKK,UAAU0L,KAMhD3D,EAAoB7O,UAAUyS,0BAA4B,SAAUC,GAChE,IAAIpJ,EAAQvJ,KAAKgI,QAAQ2K,GACzB,IAAKpJ,EAED,OADAvJ,KAAKiD,OAAOyO,MAAM,uEACX,KAEX,IAAIkB,EAAqB5S,KAAK8Q,qBAAqBvH,GACnD,OAAKqJ,GAAuBC,EAAA,KAAmBC,qBAAqBF,IAIpE5S,KAAKiD,OAAOyO,MAAM,4DACXH,EAAA,KAAaC,SAAS,IAAIqB,EAAA,KAAsBD,KAJnD5S,KAAKiD,OAAOyO,MAAM,uEACX,OASf5C,EAAoB7O,UAAU8S,0BAA4B,SAAUC,GAChEhT,KAAKiD,OAAOyO,MAAM,wDAClB,IAAIiB,EAAkBK,EAAad,wBACnClS,KAAKsI,QAAQqK,EAAiBjM,KAAKK,UAAUiM,KAMjDlE,EAAoB7O,UAAUgT,eAAiB,SAAUC,GACrD,IAAI3J,EAAQvJ,KAAKgI,QAAQkL,GACzB,IAAK3J,EAED,OADAvJ,KAAKiD,OAAOyO,MAAM,4DACX,KAEX,IAAIyB,EAAiBnT,KAAK8Q,qBAAqBvH,GAC/C,OAAK4J,GAAmBC,EAAA,KAAkBC,oBAAoBH,EAAgBC,IAI9EnT,KAAKiD,OAAOyO,MAAM,iDACXH,EAAA,KAAaC,SAAS,IAAI4B,EAAA,KAAqBD,KAJlDnT,KAAKiD,OAAOyO,MAAM,4DACX,OASf5C,EAAoB7O,UAAUqT,eAAiB,SAAUC,GACrDvT,KAAKiD,OAAOyO,MAAM,6CAClB,IAAIwB,EAAiBK,EAAYC,yBACjCxT,KAAKsI,QAAQ4K,EAAgBxM,KAAKK,UAAUwM,KAMhDzE,EAAoB7O,UAAUwT,mBAAqB,SAAUC,GACzD,IAAInK,EAAQvJ,KAAKgI,QAAQ0L,GACzB,IAAKnK,EAED,OADAvJ,KAAKiD,OAAOyO,MAAM,gEACX,KAEX,IAAIyB,EAAiBnT,KAAK8Q,qBAAqBvH,GAC/C,OAAK4J,GAAmBQ,EAAA,KAAsBC,wBAAwBF,EAAoBP,IAI1FnT,KAAKiD,OAAOyO,MAAM,qDACXH,EAAA,KAAaC,SAAS,IAAImC,EAAA,KAAyBR,KAJtDnT,KAAKiD,OAAOyO,MAAM,gEACX,OAUf5C,EAAoB7O,UAAU4T,mBAAqB,SAAUH,EAAoBI,GAC7E9T,KAAKiD,OAAOyO,MAAM,iDAClB1R,KAAKsI,QAAQoL,EAAoBhN,KAAKK,UAAU+M,KAKpDhF,EAAoB7O,UAAU8T,qBAAuB,SAAUrP,GAC3D,IAAI6E,EAAQvJ,KAAKmP,gBAAgBnH,QAAQtD,GACzC,IAAK6E,EAED,OADAvJ,KAAKiD,OAAOyO,MAAM,kEACX,KAEX,IAAIyB,EAAiBnT,KAAK8Q,qBAAqBvH,GAC/C,OAAI4J,GAAkBa,EAAA,KAAwBC,0BAA0BvP,EAAKyO,IACzEnT,KAAKiD,OAAOyO,MAAM,uDACXH,EAAA,KAAaC,SAAS,IAAIwC,EAAA,KAA2Bb,IAEzD,MAKXrE,EAAoB7O,UAAUiU,yBAA2B,WACrD,IAAIjO,EAAQjG,KACRmU,EAAUnU,KAAKmP,gBAAgBtG,UACnC,OAAOsL,EAAQC,QAAO,SAAU1P,GAC5B,OAAOuB,EAAMoO,oBAAoB3P,OAQzCoK,EAAoB7O,UAAUqU,mBAAqB,SAAUC,EAAYC,GACrExU,KAAKmP,gBAAgB7G,QAAQ,OAAkBmM,YAAaF,GAC5DvU,KAAKmP,gBAAgB7G,QAAQ,OAAkBoM,YAAaF,IAKhE1F,EAAoB7O,UAAU0U,mBAAqB,WAC/C,IAAIC,EAAM5U,KAAKmP,gBAAgBnH,QAAQ,OAAkByM,cAAgB,GACrEpN,EAAUrH,KAAKmP,gBAAgBnH,QAAQ,OAAkB0M,cAAgB,GAC7E,MAAO,CAACE,EAAKvN,IAMjByH,EAAoB7O,UAAU4U,qBAAuB,SAAUnQ,EAAKoQ,GAChE9U,KAAKiD,OAAOyO,MAAM,mDAClB1R,KAAKmP,gBAAgB7G,QAAQ5D,EAAKgC,KAAKK,UAAU+N,KAKrDhG,EAAoB7O,UAAU8U,iBAAmB,WAC7C,IAAIC,EAAqBhV,KAAKiV,iBAAiB,OAAoBC,gBAC/DC,EAAkBnV,KAAKoP,eAAepH,QAAQgN,GAClD,OAAKG,GAGEnV,KAAKoV,uBAAuB,CAAEC,eAAgBF,IAAmB,IAF7D,MAQfrG,EAAoB7O,UAAUqV,iBAAmB,SAAUnE,GACvD,IAAI6D,EAAqBhV,KAAKiV,iBAAiB,OAAoBC,gBAC/D/D,GACAnR,KAAKiD,OAAOoH,QAAQ,wCACpBrK,KAAKoP,eAAe9G,QAAQ0M,EAAoB7D,EAAQkE,kBAGxDrV,KAAKiD,OAAOoH,QAAQ,+DACpBrK,KAAKoP,eAAe1G,WAAWsM,KAOvClG,EAAoB7O,UAAUmV,uBAAyB,SAAUG,GAC7D,IAAIC,EAAcxV,KAAKyV,iBACvB,OAAOD,EAAYpB,QAAO,SAAUsB,GAChC,QAAIH,EAAcI,UAAYJ,EAAcI,SAASC,gBAAkBF,EAAWC,SAASC,mBAGvFL,EAAcM,eAAiBN,EAAcM,gBAAkBH,EAAWG,mBAG1EN,EAAcF,gBAAkBE,EAAcF,iBAAmBK,EAAWL,oBAG5EE,EAAcO,UAAYP,EAAcO,WAAaJ,EAAWI,aAGhEP,EAAcQ,aAAeR,EAAcQ,cAAgBL,EAAWK,oBAUlFjH,EAAoB7O,UAAU+V,mBAAqB,SAAUC,GACzD,IAAI1M,EAAQvJ,KAAKgI,QAAQiO,GACzB,IAAK1M,EAED,OADAvJ,KAAKiD,OAAOyO,MAAM,gEACX,KAEX,IAAIwE,EAAwBlW,KAAK8Q,qBAAqBvH,GACtD,OAAK2M,GAA0BC,EAAA,KAAiBC,mBAAmBH,EAAoBC,IAIvFlW,KAAKiD,OAAOyO,MAAM,qDACXH,EAAA,KAAaC,SAAS,IAAI2E,EAAA,KAAoBD,KAJjDlW,KAAKiD,OAAOyO,MAAM,gEACX,OAUf5C,EAAoB7O,UAAUoW,mBAAqB,SAAUJ,EAAoBK,GAC7EtW,KAAKiD,OAAOyO,MAAM,iDAClB1R,KAAKsI,QAAQ2N,EAAoBvP,KAAKK,UAAUuP,KAOpDxH,EAAoB7O,UAAUsW,kBAAoB,SAAU9F,EAAUjM,GAClE,IAAIE,EAAMF,EAAcxE,KAAKiV,iBAAiBxE,GAAYA,EAC1D,GAAIzQ,KAAK+O,YAAYtQ,uBAAwB,CACzC,IAAI+X,EAAaxW,KAAKyW,cAAc/R,GACpC,GAAI8R,EAEA,OADAxW,KAAKiD,OAAOyO,MAAM,uGACX8E,EAGf,IAAIjN,EAAQvJ,KAAKsP,sBAAsBtH,QAAQtD,GAC/C,IAAK6E,EAAO,CAER,GAAIvJ,KAAK+O,YAAYxQ,gBAAkB,OAAqBiQ,aAAc,CACtE,IAAIpE,EAAOpK,KAAKoP,eAAepH,QAAQtD,GACvC,GAAI0F,EAEA,OADApK,KAAKiD,OAAOyO,MAAM,sFACXtH,EAIf,OADApK,KAAKiD,OAAOyO,MAAM,+EACX,KAGX,OADA1R,KAAKiD,OAAOyO,MAAM,wEACXnI,GASXuF,EAAoB7O,UAAU4Q,kBAAoB,SAAUJ,EAAUlH,EAAO/E,GACzE,IAAIE,EAAMF,EAAcxE,KAAKiV,iBAAiBxE,GAAYA,EAC1DzQ,KAAKsP,sBAAsBhH,QAAQ5D,EAAK6E,GACpCvJ,KAAK+O,YAAYtQ,yBACjBuB,KAAKiD,OAAOyO,MAAM,kGAClB1R,KAAK0W,cAAchS,EAAK6E,KAQhCuF,EAAoB7O,UAAUyI,WAAa,SAAUhE,GAOjD,OANA1E,KAAKoP,eAAe1G,WAAWhE,GAC/B1E,KAAKsP,sBAAsB5G,WAAWhE,GAClC1E,KAAK+O,YAAYtQ,yBACjBuB,KAAKiD,OAAOyO,MAAM,wFAClB1R,KAAK2W,gBAAgBjS,KAElB,GAMXoK,EAAoB7O,UAAU+I,YAAc,SAAUtE,GAClD,OAAO1E,KAAKoP,eAAepG,YAAYtE,IAAQ1E,KAAKsP,sBAAsBtG,YAAYtE,IAK1FoK,EAAoB7O,UAAU4I,QAAU,WACpC,OAAO,eAAS7I,KAAKoP,eAAevG,UAAW7I,KAAKsP,sBAAsBzG,YAK9EiG,EAAoB7O,UAAU2J,MAAQ,WAClC,OAAO,eAAU5J,UAAM,OAAQ,GAAQ,WACnC,IAAIiG,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAEL,MAAO,CAAC,EAAa3B,KAAK4W,qBAC1B,KAAK,EAYD,OAVA3Z,EAAG6E,OACH9B,KAAK6W,oBAEL7W,KAAK6I,UAAUa,SAAQ,SAAU+G,IAExBxK,EAAMmJ,eAAepG,YAAYyH,KAAaxK,EAAMqJ,sBAAsBtG,YAAYyH,KAA8D,IAA9CA,EAASqG,QAAQpH,EAAA,KAAUC,gBAAgE,IAAtCc,EAASqG,QAAQ7Q,EAAMvI,WACnLuI,EAAMyC,WAAW+H,MAGzBzQ,KAAKmP,gBAAgBvF,QACd,CAAC,WAW5BkF,EAAoB7O,UAAUyW,cAAgB,SAAUK,EAAYC,EAAaC,GAC7E,IAAIC,EAAYC,mBAAmBJ,GAAc,IAAMI,mBAAmBH,GAAe,WACzF,GAAIC,EAAS,CACT,IAAIG,EAAapX,KAAKqX,wBAAwBJ,GAC9CC,GAAa,WAAaE,EAAa,IAEvCpX,KAAK+O,YAAYrQ,gBACjBwY,GAAa,WAEjBI,SAASC,OAASL,GAMtBpI,EAAoB7O,UAAUwW,cAAgB,SAAUM,GAGpD,IAFA,IAAI1T,EAAO8T,mBAAmBJ,GAAc,IACxCS,EAAaF,SAASC,OAAO/Q,MAAM,KAC9B3F,EAAI,EAAGA,EAAI2W,EAAW/M,OAAQ5J,IAAK,CACxC,IAAI0W,EAASC,EAAW3W,GACxB,MAA4B,MAArB0W,EAAOE,OAAO,GACjBF,EAASA,EAAOG,UAAU,GAE9B,GAA6B,IAAzBH,EAAOT,QAAQzT,GACf,OAAOsU,mBAAmBJ,EAAOG,UAAUrU,EAAKoH,OAAQ8M,EAAO9M,SAGvE,MAAO,IAKXqE,EAAoB7O,UAAU2X,iBAAmB,WAC7C,IAAI3R,EAAQjG,KACR6X,EAAenI,EAAA,KAAUC,aAAe,IAAM3P,KAAKtC,SACnD8Z,EAAaF,SAASC,OAAO/Q,MAAM,KACvCgR,EAAW9N,SAAQ,SAAU6N,GACzB,MAA4B,MAArBA,EAAOE,OAAO,GAEjBF,EAASA,EAAOG,UAAU,GAE9B,GAAqC,IAAjCH,EAAOT,QAAQe,GAAqB,CACpC,IAAIC,EAAYP,EAAO/Q,MAAM,KAAK,GAClCP,EAAM0Q,gBAAgBmB,QAQlChJ,EAAoB7O,UAAU0W,gBAAkB,SAAUI,GACtD/W,KAAK0W,cAAcK,EAAY,IAAK,IAMxCjI,EAAoB7O,UAAUoX,wBAA0B,SAAUU,GAC9D,IAAIC,EAAQ,IAAIC,KACZC,EAAO,IAAID,KAAKD,EAAMG,UAAYJ,EAAiB/X,KAAKkP,wBAC5D,OAAOgJ,EAAKE,eAKhBtJ,EAAoB7O,UAAUoY,SAAW,WACrC,OAAOrY,KAAKoP,gBAKhBN,EAAoB7O,UAAUqY,SAAW,aAQzCxJ,EAAoB7O,UAAUgV,iBAAmB,SAAUvQ,GACvD,IAAI6T,EAAevY,KAAK8Q,qBAAqBpM,GAC7C,OAAK6T,EAME7R,KAAKK,UAAUrC,GALd8T,EAAA,KAAYC,WAAW/T,EAAKgL,EAAA,KAAUC,eAAiB6I,EAAA,KAAYC,WAAW/T,EAAK,OAAoBgU,eAChGhU,EAEJgL,EAAA,KAAUC,aAAe,IAAM3P,KAAKtC,SAAW,IAAMgH,GAQpEoK,EAAoB7O,UAAU0Y,qBAAuB,SAAUC,GAC3D,IAAIC,EAAUC,EAAA,KAAcC,kBAAkB/Y,KAAKgP,WAAY4J,GAAaI,aAAaC,GACzF,OAAOjZ,KAAKiV,iBAAiB,OAAmBiE,UAAY,IAAML,IAMtE/J,EAAoB7O,UAAUkZ,iBAAmB,SAAUP,GACvD,IAAIC,EAAUC,EAAA,KAAcC,kBAAkB/Y,KAAKgP,WAAY4J,GAAaI,aAAaC,GACzF,OAAOjZ,KAAKiV,iBAAiB,OAAmBmE,cAAgB,IAAMP,IAM1E/J,EAAoB7O,UAAUoZ,iBAAmB,SAAUT,GAEvD,IAAIC,EAAUC,EAAA,KAAcC,kBAAkB/Y,KAAKgP,WAAY4J,GAAaI,aAAaC,GACzF,OAAOjZ,KAAKiV,iBAAiB,OAAmBqE,cAAgB,IAAMT,IAK1E/J,EAAoB7O,UAAUsZ,mBAAqB,SAAUC,GACzD,IAAIC,EAAgBzZ,KAAKqZ,iBAAiBG,GACtCE,EAAQ1Z,KAAKuW,kBAAkBkD,GACnC,IAAKC,EACD,OAAO,KAEX,IAAIC,EAAoB3Z,KAAK2Y,qBAAqBe,GAClD,OAAO1Z,KAAKuW,kBAAkBoD,IAOlC7K,EAAoB7O,UAAU2Z,mBAAqB,SAAUF,EAAOG,EAAOC,EAAmBC,EAAW5I,GACrGnR,KAAKiD,OAAOyO,MAAM,iDAElB,IAAI+H,EAAgBzZ,KAAKqZ,iBAAiBK,GAC1C1Z,KAAK6Q,kBAAkB4I,EAAeC,GAAO,GAE7C,IAAIM,EAAgBha,KAAKmZ,iBAAiBO,GAC1C1Z,KAAK6Q,kBAAkBmJ,EAAeH,GAAO,GAE7C,IAAIF,EAAoB3Z,KAAK2Y,qBAAqBe,GAElD,GADA1Z,KAAK6Q,kBAAkB8I,EAAmBG,GAAmB,GACzD3I,EAAS,CACT,IAAI8I,EAAgB,CAChBC,WAAY/I,EAAQ0E,cACpB3H,KAAMiM,EAAA,KAAkBC,iBAE5Bpa,KAAK6Q,kBAAkB,OAAmBwJ,eAAgB3T,KAAKK,UAAUkT,IAAgB,QAExF,IAAKzB,EAAA,KAAY8B,QAAQP,GAAY,CAClCE,EAAgB,CAChBC,WAAYH,EACZ7L,KAAMiM,EAAA,KAAkBI,KAE5Bva,KAAK6Q,kBAAkB,OAAmBwJ,eAAgB3T,KAAKK,UAAUkT,IAAgB,KAOjGnL,EAAoB7O,UAAUua,kBAAoB,SAAUd,GACxD,IAAIzT,EAAQjG,KACZA,KAAKiD,OAAOyO,MAAM,gDAEb8G,EAAA,KAAY8B,QAAQZ,IACrB1Z,KAAK6I,UAAUa,SAAQ,SAAUhF,IACD,IAAxBA,EAAIoS,QAAQ4C,IACZzT,EAAMyC,WAAWhE,MAKzBgV,IACA1Z,KAAK0I,WAAW1I,KAAKqZ,iBAAiBK,IACtC1Z,KAAK0I,WAAW1I,KAAKmZ,iBAAiBO,IACtC1Z,KAAK0I,WAAW1I,KAAK2Y,qBAAqBe,KAE9C1Z,KAAK0I,WAAW1I,KAAKiV,iBAAiB,OAAmBwF,iBACzDza,KAAK0I,WAAW1I,KAAKiV,iBAAiB,OAAmByF,aACzD1a,KAAK0I,WAAW1I,KAAKiV,iBAAiB,OAAmB0F,WACzD3a,KAAK0I,WAAW1I,KAAKiV,iBAAiB,OAAmB2F,iBACzD5a,KAAK0I,WAAW1I,KAAKiV,iBAAiB,OAAmBoF,iBACzDra,KAAK6a,0BAAyB,IAMlC/L,EAAoB7O,UAAU6a,oBAAsB,SAAUlC,GAG1D,GAFA5Y,KAAKiD,OAAOyO,MAAM,kDAEdkH,EAAa,CACb,IAAImC,EAAW/a,KAAKqZ,iBAAiBT,GACjCY,EAAcxZ,KAAKsP,sBAAsBtH,QAAQ+S,GACrD/a,KAAKiD,OAAO+X,QAAQ,sFAAwFxB,GAC5GxZ,KAAKwa,kBAAkBhB,GAAe,IAE1CxZ,KAAK4X,oBAOT9I,EAAoB7O,UAAUgb,8BAAgC,SAAUC,GACpE,IAAIjV,EAAQjG,KACZA,KAAKiD,OAAOyO,MAAM,4DAElB1R,KAAK6I,UAAUa,SAAQ,SAAUhF,GAE7B,IAAuD,IAAnDA,EAAIoS,QAAQ,OAAmBwC,eAAnC,CAIA,IAAI6B,EAAalV,EAAMqJ,sBAAsBtH,QAAQtD,GACrD,GAAKyW,EAAL,CAIA,IAAIC,EAAcC,EAAA,KAAqBC,2BAA2BrV,EAAM+I,WAAYmM,GAChFC,GAAeA,EAAYF,kBAAoBA,IAC/CjV,EAAMhD,OAAO+X,QAAQ,gGAAkGG,GACvHlV,EAAMuU,kBAAkBW,SAGhCnb,KAAK4X,oBAET9I,EAAoB7O,UAAUsb,iBAAmB,SAAUC,EAAiB3Q,GACxE7K,KAAKiD,OAAOyO,MAAM,+CAClB,IAAI+J,EAAe5Q,EAAcvJ,aAAaoF,KAAKK,UAAUyU,IAC7Dxb,KAAK6Q,kBAAkB,OAAmB4J,eAAgBgB,GAAc,IAK5E3M,EAAoB7O,UAAUyb,iBAAmB,SAAUhC,EAAO7O,GAC9D7K,KAAKiD,OAAOyO,MAAM,+CAElB,IAAIiK,EAAsB3b,KAAKuW,kBAAkB,OAAmBkE,gBAAgB,GACpF,IAAKkB,EACD,MAAMvZ,EAAA,KAAiBwZ,iCAE3B,IAAIC,EAAgB7b,KAAK8Q,qBAAqBjG,EAAcW,aAAamQ,IACzE,IAAKE,EACD,MAAMzZ,EAAA,KAAiB0Z,4CAI3B,GAFA9b,KAAK0I,WAAW1I,KAAKiV,iBAAiB,OAAmBwF,iBAErDjC,EAAA,KAAY8B,QAAQuB,EAAcle,WAAY,CAC9C,IAAIgc,EAAoB3Z,KAAK2Y,qBAAqBe,GAC9CqC,EAAkB/b,KAAKuW,kBAAkBoD,GAC7C,IAAKoC,EACD,MAAM3Z,EAAA,KAAiB4Z,+BAE3BH,EAAcle,UAAYoe,EAE9B,OAAOF,GAEX/M,EAAoB7O,UAAUgc,wBAA0B,SAAUC,GAC9D,IAAIxe,EAAWsC,KAAKmc,2BACpB,OAAID,EACOxe,IAAasC,KAAKtC,WAGhBA,GAGjBoR,EAAoB7O,UAAUkc,yBAA2B,WACrD,IAAIzX,EAAMgL,EAAA,KAAUC,aAAe,IAAM,OAAmByM,uBAC5D,OAAOpc,KAAKuW,kBAAkB7R,GAAK,IAEvCoK,EAAoB7O,UAAU4a,yBAA2B,SAAUwB,GAC/D,IAAI3e,EAAWsC,KAAKmc,2BAEhBzX,EAAMgL,EAAA,KAAUC,aAAe,IAAM,OAAmByM,uBACxDC,IAAe3e,EAEfsC,KAAK6Q,kBAAkBnM,EAAK1E,KAAKtC,UAAU,GAErC2e,GAAc3e,IAAasC,KAAKtC,UACtCsC,KAAK0I,WAAWhE,IAMxBoK,EAAoB7O,UAAUqc,mBAAqB,WAE/C,IAAIC,EAAoBvc,KAAKuW,kBAAkB,OAAoBmC,eAC/D6D,IACAvc,KAAKoP,eAAe1G,WAAW,OAAoBgQ,eACnD1Y,KAAKiD,OAAOoH,QAAQ,oCAGxB,IAAImS,EAAoBxc,KAAKuW,kBAAkB,OAAoB3G,UAAU,GACzE4M,IACAxc,KAAK0I,WAAW1I,KAAKiV,iBAAiB,OAAoBrF,WAC1D5P,KAAKiD,OAAOoH,QAAQ,yCAExB,IAAIoS,EAAsBD,GAAqBD,EAC/C,GAAIE,EAAqB,CACrB,IAAIC,EAAgB,IAAI,OAAQD,EAAqBzc,KAAKgP,YAC1D,GAAI0N,EAAcC,QAAUD,EAAcC,OAAOC,mBAE7C,OADA5c,KAAKiD,OAAOoH,QAAQ,6GACbqS,EAAcC,OAAOC,mBAE3B,GAAIF,EAAcC,QAAUD,EAAcC,OAAOE,IAElD,OADA7c,KAAKiD,OAAOoH,QAAQ,8FACbqS,EAAcC,OAAOE,IAG5B7c,KAAKiD,OAAOoH,QAAQ,0JAG5B,OAAO,MAEJyE,EAh0B6B,CAi0BtCyC,EAAA,MACEuL,EAAgC,SAAUpf,EAAUuF,GACpD,IAAI8Z,EAAe,CACfxe,cAAe,OAAqB8K,cACpC5K,wBAAwB,EACxBC,eAAe,GAEnB,OAAO,IAAI,EAAoBhB,EAAUqf,EAAc,OAA+B9Z,I,sIC/0BtF,GAA4B,WAC5B,SAAS+Z,EAAWC,EAAeC,EAASja,EAAQlD,GAChDC,KAAK9C,qBAAyC,qBAAX+G,OACnCjE,KAAKmd,OAASF,EACdjd,KAAKkd,QAAUA,EACfld,KAAKiD,OAASA,EACdjD,KAAKD,UAAYA,EAqGrB,OA5FAid,EAAW/c,UAAUmd,mBAAqB,SAAUxR,EAASyR,EAAUC,GAEnE,GADAtd,KAAKiD,OAAOsa,KAAK,2CACZF,EAASG,SACV,MAAMpb,EAAA,KAAiBqb,6BAA6B,oDAExD,GAAI7R,EAAQuF,QACRnR,KAAK0d,YAAYL,EAASG,SAAU5R,EAAQuF,QAAQ0E,cAAejK,EAAQuF,QAAQ4E,YAAanK,EAAQuF,QAAQ2E,SAAUwH,GAC1Htd,KAAK2d,gBAAgB/R,EAASyR,EAAUzR,EAAQuF,QAAQ0E,cAAejK,EAAQuF,QAAQ4E,YAAanK,EAAQuF,QAAQ2E,SAAUwH,OAE7H,KAAI1R,EAAQjO,UAwBb,MAAMyE,EAAA,KAAiBqb,6BAA6B,yEAvBpD,IAAIG,EAAmB,CACnBxf,aAAc4B,KAAKmd,OAAO/f,KAAKgB,aAC/BP,iBAAkBmC,KAAKmd,OAAO/f,KAAKS,iBACnCC,uBAAwBkC,KAAKmd,OAAO/f,KAAKU,uBACzCC,kBAAmBiC,KAAKmd,OAAO/f,KAAKW,mBAEpCJ,EAAY,IAAIkgB,GAAA,KAAUjS,EAAQjO,UAAWqC,KAAKmd,OAAO3f,OAAO0B,cAAec,KAAKkd,QAASU,GAEjG,GAAIN,EAAQQ,WACR9d,KAAKiD,OAAOyO,MAAM,2CAClB1R,KAAK0d,YAAYL,EAASG,SAAUF,EAAQQ,WAAYngB,EAAUogB,gBAAiBpgB,EAAUqgB,OAAQV,GACrGtd,KAAK2d,gBAAgB/R,EAASyR,EAAUC,EAAQQ,WAAYngB,EAAUogB,gBAAiBpgB,EAAUqgB,OAAQV,OAExG,KAAID,EAASY,YAMd,MAAM7b,EAAA,KAAiBqb,6BAA6B,yDALpDzd,KAAKiD,OAAOyO,MAAM,4CAClB1R,KAAK0d,YAAYL,EAASG,SAAUH,EAASY,YAAatgB,EAAUogB,gBAAiBpgB,EAAUqgB,OAAQV,GACvGtd,KAAK2d,gBAAgB/R,EAASyR,EAAUA,EAASY,YAAatgB,EAAUogB,gBAAiBpgB,EAAUqgB,OAAQV,MAkBvHN,EAAW/c,UAAUyd,YAAc,SAAUzL,EAAS4D,EAAeE,EAAaD,EAAUwH,GACxF,IAAIY,EAAgBpM,EAAA,KAAcqM,oBAAoBtI,EAAeE,EAAa9D,EAASjS,KAAKmd,OAAO/f,KAAKM,SAAUoY,GAClHsI,EAAc,IAAIC,EAAA,KAAUpM,EAASjS,KAAKD,WAC1Cue,EAAgBhB,EAAQQ,WACxBzM,EAAA,KAAckN,cAAcjB,EAAQQ,WAAYjI,EAAeuI,OAAaI,OAAWA,OAAWA,OAAWA,EAAWzI,GACxH1E,EAAA,KAAcoN,qBAAqB5I,EAAeuI,OAAaI,OAAWA,OAAWA,OAAWA,EAAWzI,GAC/G,IAAI/V,KAAK9C,qBAML,MAAMkF,EAAA,KAAiBqb,6BAA6B,wEALpDzd,KAAKiD,OAAOoH,QAAQ,iCACpBrK,KAAKkd,QAAQzL,WAAW6M,GACxBte,KAAKkd,QAAQlL,qBAAqBkM,IAgB1ClB,EAAW/c,UAAU0d,gBAAkB,SAAU/R,EAASyR,EAAUxH,EAAeE,EAAaD,EAAUwH,GACtG,GAAKD,EAASqB,aAAd,CAIA,IAAKrB,EAASsB,WACV,MAAMvc,EAAA,KAAiBqb,6BAA6B,4DAExD,IAAKH,EAAQsB,kBACT,MAAMxc,EAAA,KAAiBqb,6BAA6B,6DAExD,IAAIoB,EAAS,IAAIC,GAAA,KAASlT,EAAQiT,QAAQE,cACtCC,EAAY3B,EAASsB,WACrBC,EAAoBtB,EAAQsB,kBAC5BK,EAAoB3M,EAAA,KAAkB4M,wBAAwBrJ,EAAeE,EAAasH,EAASqB,aAAc1e,KAAKmd,OAAO/f,KAAKM,SAAUoY,EAAU+I,EAAQG,EAAWJ,EAAmB5e,KAAKD,WACrM,IAAIC,KAAK9C,qBAKL,MAAMkF,EAAA,KAAiBqb,6BAA6B,wEAJpDzd,KAAKiD,OAAOoH,QAAQ,qCACpBrK,KAAKkd,QAAQ1K,yBAAyByM,QAftCjf,KAAKiD,OAAOoH,QAAQ,sDAqBrB2S,EA3GoB,GCW3B,GAAmC,WAsBnC,SAASmC,EAAkBlC,GAMvBjd,KAAK9C,qBAAyC,qBAAX+G,OAEnCjE,KAAKmd,OAAS,eAAmBF,EAAejd,KAAK9C,sBAErD8C,KAAKiD,OAAS,IAAImc,EAAA,KAAOpf,KAAKmd,OAAO3f,OAAOyB,cAAe,OAAM,QAEjEe,KAAKd,cAAgBc,KAAKmd,OAAO3f,OAAO0B,cAExCc,KAAKZ,iBAAmBY,KAAKmd,OAAO3f,OAAO4B,iBAE3CY,KAAKqf,iBAAmB,IAAI/V,IAE5BtJ,KAAK6K,cAAgB7K,KAAK9C,qBAAuB,IAAI,EAAU8C,KAAKiD,QAAU,OAC9EjD,KAAKsf,aAAe,IAAIC,EAAA,KAAavf,KAAKiD,OAAQjD,KAAK6K,eAEvD7K,KAAKoP,eAAiBpP,KAAK9C,qBACvB,IAAI,EAAoB8C,KAAKmd,OAAO/f,KAAKM,SAAUsC,KAAKmd,OAAO7f,MAAO0C,KAAK6K,cAAe7K,KAAKiD,QAC/F6Z,EAA8B9c,KAAKmd,OAAO/f,KAAKM,SAAUsC,KAAKiD,QAElEjD,KAAKwf,WAAa,IAAI,GAAWxf,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAKiD,OAAQjD,KAAK6K,eAgczF,OAtbAsU,EAAkBlf,UAAUwf,sBAAwB,SAAUnc,GAC1D,OAAO,eAAUtD,UAAM,OAAQ,GAAQ,WACnC,IAAI0f,EAAkBC,EAAqBtC,EAAUuC,EAAeC,EAChE5Z,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAG/B,OAFA+C,KAAKiD,OAAOoH,QAAQ,gCACpBqV,EAAmB1f,KAAKyV,iBACpBzV,KAAK9C,sBACLyiB,EAAsBrc,GAAQoM,EAAA,KAAUoQ,aACxCzC,EAAWrd,KAAKqf,iBAAiBhX,IAAIsX,GACb,qBAAbtC,GACPrd,KAAKsf,aAAaS,UAAUC,EAAA,KAAUC,sBAAuB,OAAgBC,UAC7ElgB,KAAKiD,OAAOoH,QAAQ,iFACpBuV,EAAgB5f,KAAKoP,eAAemH,kBAAkB,OAAmBqE,gBAAgB,IAAS,GAClGiF,EAAiB,IAAIM,EAAA,KAAengB,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAK6K,cAAe7K,KAAKiD,OAAQjD,KAAKsf,aAActf,KAAKZ,iBAAkBwgB,GACjJvC,EAAWwC,EAAeJ,sBAAsBnc,GAC3C8c,MAAK,SAAUra,GAChB,GAAIA,EAAQ,CAER,IAAIsa,EAAcX,EAAiBjV,OAASxE,EAAMwP,iBAAiBhL,OAC/D4V,GACApa,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUM,cAAe,OAAgBJ,SAAUna,GAChFE,EAAMhD,OAAOoH,QAAQ,2DAGrBpE,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUO,sBAAuB,OAAgBL,SAAUna,GACxFE,EAAMhD,OAAOoH,QAAQ,kEAI7B,OADApE,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUQ,oBAAqB,OAAgBN,UACrEna,KAEN0a,OAAM,SAAUte,GASjB,MAPIud,EAAiBjV,OAAS,EAC1BxE,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUU,sBAAuB,OAAgBR,SAAU,KAAM/d,GAG9F8D,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUW,cAAe,OAAgBT,SAAU,KAAM/d,GAE1F8D,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUQ,oBAAqB,OAAgBN,UACtE/d,KAEVnC,KAAKqf,iBAAiB7V,IAAImW,EAAqBtC,IAG/Crd,KAAKiD,OAAOoH,QAAQ,8FAEjB,CAAC,EAAcgT,KAE1Brd,KAAKiD,OAAOoH,QAAQ,+DACb,CAAC,EAAc,cAalC8U,EAAkBlf,UAAU2gB,qBAAuB,SAAUhV,GACzD,OAAO,eAAU5L,UAAM,OAAQ,GAAQ,WACnC,IAAI6gB,EAAYhB,EACZ5Z,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAY/B,OAVA+C,KAAK8gB,iCAAiC,OAAgBZ,UACtDlgB,KAAKiD,OAAOoH,QAAQ,+BACpBwW,EAAa7gB,KAAKyV,iBAAiBhL,OAAS,EACxCoW,EACA7gB,KAAKsf,aAAaS,UAAUC,EAAA,KAAUe,oBAAqB,OAAgBb,SAAUtU,GAGrF5L,KAAKsf,aAAaS,UAAUC,EAAA,KAAUgB,YAAa,OAAgBd,SAAUtU,GAEjFiU,EAAiB,IAAIM,EAAA,KAAengB,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAK6K,cAAe7K,KAAKiD,OAAQjD,KAAKsf,aAActf,KAAKZ,iBAAkBwM,EAAQgU,eAClJ,CAAC,EAAcC,EAAeoB,aAAarV,GAAS6U,OAAM,SAAUte,GAQnE,MANI0e,EACA5a,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUU,sBAAuB,OAAgBR,SAAU,KAAM/d,GAG9F8D,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUW,cAAe,OAAgBT,SAAU,KAAM/d,GAEpFA,aAc1Bgd,EAAkBlf,UAAUihB,kBAAoB,SAAUtV,GACtD,IAAI3F,EAAQjG,KACZ,IACIA,KAAK8gB,iCAAiC,OAAgBK,OACtDnhB,KAAKiD,OAAOoH,QAAQ,2BAA4BuB,EAAQgU,eAE5D,MAAOzd,GAEH,OAAOsD,QAAQE,OAAOxD,GAG1B,IAAIud,EAAmB1f,KAAKyV,iBACxBiK,EAAiBjV,OAAS,EAC1BzK,KAAKsf,aAAaS,UAAUC,EAAA,KAAUe,oBAAqB,OAAgBI,MAAOvV,GAGlF5L,KAAKsf,aAAaS,UAAUC,EAAA,KAAUgB,YAAa,OAAgBG,MAAOvV,GAE9E,IAAIwV,EAAc,IAAIC,EAAA,KAAYrhB,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAK6K,cAAe7K,KAAKiD,OAAQjD,KAAKsf,aAActf,KAAKZ,iBAAkBwM,EAAQgU,eACvJ,OAAOwB,EAAYH,aAAarV,GAASwU,MAAK,SAAUra,GAEpD,IAAIsa,EAAcX,EAAiBjV,OAASxE,EAAMwP,iBAAiBhL,OAOnE,OANI4V,EACApa,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUM,cAAe,OAAgBa,MAAOpb,GAG7EE,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUO,sBAAuB,OAAgBY,MAAOpb,GAElFA,KACR0a,OAAM,SAAUte,GAQf,OAPIud,EAAiBjV,OAAS,EAC1BxE,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUU,sBAAuB,OAAgBS,MAAO,KAAMhf,GAG3F8D,EAAMqZ,aAAaS,UAAUC,EAAA,KAAUW,cAAe,OAAgBQ,MAAO,KAAMhf,GAGhFsD,QAAQE,OAAOxD,OAoB9Bgd,EAAkBlf,UAAUqhB,UAAY,SAAU1V,GAC9C,OAAO,eAAU5L,UAAM,OAAQ,GAAQ,WACnC,IAAIuhB,EAAoBC,EAAmBhf,EAC3C,OAAO,eAAYxC,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EACD3B,KAAK8gB,iCAAiC,OAAgBW,QACtDzhB,KAAKiD,OAAOoH,QAAQ,mBAAoBuB,EAAQgU,eAChD5f,KAAKsf,aAAaS,UAAUC,EAAA,KAAU0B,iBAAkB,OAAgBD,OAAQ7V,GAChF3O,EAAG0E,MAAQ,EACf,KAAK,EAGD,OAFA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB6e,EAAqB,IAAII,EAAA,KAAmB3hB,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAK6K,cAAe7K,KAAKiD,OAAQjD,KAAKsf,aAActf,KAAKZ,iBAAkB,OAAMkiB,UAAW1V,EAAQgU,eAC3K,CAAC,EAAa2B,EAAmBN,aAAarV,IACzD,KAAK,EAGD,OAFA4V,EAAoBvkB,EAAG6E,OACvB9B,KAAKsf,aAAaS,UAAUC,EAAA,KAAU4B,mBAAoB,OAAgBH,OAAQD,GAC3E,CAAC,EAAcA,GAC1B,KAAK,EAGD,MAFAhf,EAAMvF,EAAG6E,OACT9B,KAAKsf,aAAaS,UAAUC,EAAA,KAAU6B,mBAAoB,OAAgBJ,OAAQ,KAAMjf,GAClFA,EACV,KAAK,EAAG,MAAO,CAAC,WAgBhC2c,EAAkBlf,UAAU6hB,2BAA6B,SAAUlW,GAC/D,OAAO,eAAU5L,UAAM,OAAQ,GAAQ,WACnC,IAAI+hB,EACA9b,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAK/B,OAJA+C,KAAKsf,aAAaS,UAAUC,EAAA,KAAUgC,4BAA6B,OAAgBP,OAAQ7V,GAE3FqW,EAAA,KAAaC,6BACbH,EAAsB,IAAII,EAAA,KAAoBniB,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAK6K,cAAe7K,KAAKiD,OAAQjD,KAAKsf,aAActf,KAAKZ,iBAAkBwM,EAAQgU,eAC5J,CAAC,EAAcmC,EAAoBd,aAAarV,GAAS6U,OAAM,SAAUte,GACxE,IAAIigB,EAAgBjgB,aAAakgB,EAAA,KAC7BC,EAA6BngB,aAAaogB,EAAA,KAC1CC,EAAuBrgB,EAAE8H,YAAcwY,EAAA,KAAiBC,oBAC5D,GAAIN,GAAiBI,IAAwBF,EAA4B,CACrErc,EAAMhD,OAAOoH,QAAQ,uEAAwEuB,EAAQgU,eACrG,IAAI2B,EAAqB,IAAII,EAAA,KAAmB1b,EAAMkX,OAAQlX,EAAMmJ,eAAgBnJ,EAAM4E,cAAe5E,EAAMhD,OAAQgD,EAAMqZ,aAAcrZ,EAAM7G,iBAAkB,OAAMujB,4BAA6B/W,EAAQgU,eAC9M,OAAO2B,EAAmBN,aAAarV,GAE3C,MAAMzJ,aAY1Bgd,EAAkBlf,UAAU2iB,OAAS,SAAUC,GAC3C,OAAO,eAAU7iB,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAE/B,OADA+C,KAAKiD,OAAO6f,QAAQ,oGACb,CAAC,EAAc9iB,KAAK+iB,eAAeF,WAStD1D,EAAkBlf,UAAU8iB,eAAiB,SAAUF,GACnD,OAAO,eAAU7iB,UAAM,OAAQ,GAAQ,WACnC,IAAI6f,EACJ,OAAO,eAAY7f,MAAM,SAAU/C,GAG/B,OAFA+C,KAAK8gB,iCAAiC,OAAgBZ,UACtDL,EAAiB,IAAIM,EAAA,KAAengB,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAK6K,cAAe7K,KAAKiD,OAAQjD,KAAKsf,aAActf,KAAKZ,iBAAoC,OAAlByjB,QAA4C,IAAlBA,OAA2B,EAASA,EAAcjD,eACtN,CAAC,EAAcC,EAAe+C,OAAOC,WAQxD1D,EAAkBlf,UAAU+iB,YAAc,SAAUH,GAChD,IACI7iB,KAAK8gB,iCAAiC,OAAgBK,OACtD,IAAIC,EAAc,IAAIC,EAAA,KAAYrhB,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAK6K,cAAe7K,KAAKiD,OAAQjD,KAAKsf,aAActf,KAAKZ,iBAAoC,OAAlByjB,QAA4C,IAAlBA,OAA2B,EAASA,EAAcjD,eAC3N,OAAOwB,EAAYwB,OAAOC,GAE9B,MAAO1gB,GAEH,OAAOsD,QAAQE,OAAOxD,KAW9Bgd,EAAkBlf,UAAUwV,eAAiB,WAEzC,OADAzV,KAAKiD,OAAOoH,QAAQ,yBACbrK,KAAK9C,qBAAuB8C,KAAKoP,eAAeqG,iBAAmB,IAU9E0J,EAAkBlf,UAAUgjB,qBAAuB,SAAUC,GACzD,IAAI1N,EAAcxV,KAAKyV,iBACvB,OAAK+C,EAAA,KAAY8B,QAAQ4I,IAAa1N,GAAeA,EAAY/K,QAC7DzK,KAAKiD,OAAOoH,QAAQ,8CACpBrK,KAAKiD,OAAOkgB,WAAW,mDAAqDD,GACrE1N,EAAYpB,QAAO,SAAUsB,GAAc,OAAOA,EAAWC,SAASC,gBAAkBsN,EAAStN,iBAAkB,IAAM,OAGhI5V,KAAKiD,OAAOoH,QAAQ,mEACb,OAUf8U,EAAkBlf,UAAUmjB,mBAAqB,SAAUvN,GACvD,IAAIL,EAAcxV,KAAKyV,iBACvB,OAAK+C,EAAA,KAAY8B,QAAQzE,IAAkBL,GAAeA,EAAY/K,QAClEzK,KAAKiD,OAAOoH,QAAQ,mDACpBrK,KAAKiD,OAAOkgB,WAAW,wDAA0DtN,GAC1EL,EAAYpB,QAAO,SAAUsB,GAAc,OAAOA,EAAWG,gBAAkBA,KAAkB,IAAM,OAG9G7V,KAAKiD,OAAOoH,QAAQ,iEACb,OAUf8U,EAAkBlf,UAAUojB,oBAAsB,SAAUhO,GACxD,IAAIG,EAAcxV,KAAKyV,iBACvB,OAAK+C,EAAA,KAAY8B,QAAQjF,IAAmBG,GAAeA,EAAY/K,QACnEzK,KAAKiD,OAAOoH,QAAQ,oDACpBrK,KAAKiD,OAAOkgB,WAAW,yDAA2D9N,GAC3EG,EAAYpB,QAAO,SAAUsB,GAAc,OAAOA,EAAWL,iBAAmBA,KAAmB,IAAM,OAGhHrV,KAAKiD,OAAOoH,QAAQ,kEACb,OAOf8U,EAAkBlf,UAAUqV,iBAAmB,SAAUnE,GACrDnR,KAAKoP,eAAekG,iBAAiBnE,IAKzCgO,EAAkBlf,UAAU8U,iBAAmB,WAC3C,OAAO/U,KAAKoP,eAAe2F,oBAQ/BoK,EAAkBlf,UAAU6gB,iCAAmC,SAAU5F,GAWrE,GAVAlb,KAAKiD,OAAOoH,QAAQ,4CAEpB4X,EAAA,KAAaqB,2BAA2BtjB,KAAK9C,sBAE7C+kB,EAAA,KAAasB,sBAAsBrI,EAAiBlb,KAAKmd,OAAO3f,OAAOoC,uBAEvEqiB,EAAA,KAAaC,6BAEbD,EAAA,KAAauB,4BAETtI,IAAoB,OAAgBgF,UACpClgB,KAAKmd,OAAO7f,MAAMiB,gBAAkB,OAAqB8K,gBACxDrJ,KAAKmd,OAAO7f,MAAMmB,uBACnB,MAAMgQ,EAAA,KAA8BgV,0CAO5CtE,EAAkBlf,UAAUyjB,iBAAmB,SAAUC,GACrD,OAAO3jB,KAAKsf,aAAaoE,iBAAiBC,IAM9CxE,EAAkBlf,UAAU2jB,oBAAsB,SAAUC,GACxD7jB,KAAKsf,aAAasE,oBAAoBC,IAK1C1E,EAAkBlf,UAAU6jB,2BAA6B,WACrD9jB,KAAKsf,aAAawE,8BAKtB3E,EAAkBlf,UAAU8jB,4BAA8B,WACtD/jB,KAAKsf,aAAayE,+BAKtB5E,EAAkBlf,UAAU+jB,cAAgB,WACxC,OAAOhkB,KAAKwf,YAKhBL,EAAkBlf,UAAUgkB,UAAY,WACpC,OAAOjkB,KAAKiD,QAMhBkc,EAAkBlf,UAAUikB,UAAY,SAAUjhB,GAC9CjD,KAAKiD,OAASA,GAOlBkc,EAAkBlf,UAAUkkB,yBAA2B,SAAUvP,EAAKvN,GAElErH,KAAKoP,eAAekF,mBAAmBM,EAAKvN,IAMhD8X,EAAkBlf,UAAUmkB,oBAAsB,SAAUhlB,GACxDY,KAAKZ,iBAAmBA,GAK5B+f,EAAkBlf,UAAUokB,iBAAmB,WAC3C,OAAOrkB,KAAKmd,QAETgC,EA/e2B,G,aCNlC,GAAyC,SAAUtQ,GAuBnD,SAASyV,EAAwBrH,GAC7B,IAAIhX,EAAQ4I,EAAOI,KAAKjP,KAAMid,IAAkBjd,KAEhD,OADAiG,EAAMse,0BAA4B,IAAIjb,IAC/BrD,EAsHX,OA/IA,eAAUqe,EAAyBzV,GAoCnCyV,EAAwBrkB,UAAUukB,cAAgB,SAAU5Y,GACxD,OAAO,eAAU5L,UAAM,OAAQ,GAAQ,WACnC,OAAO,eAAYA,MAAM,SAAU/C,GAE/B,OADA+C,KAAKiD,OAAOoH,QAAQ,wBACb,CAAC,EAAcrK,KAAK4gB,qBAAqBhV,GAAW,gBAWvE0Y,EAAwBrkB,UAAUwkB,WAAa,SAAU7Y,GAErD,OADA5L,KAAKiD,OAAOoH,QAAQ,qBACbrK,KAAKkhB,kBAAkBtV,GAAW,SAQ7C0Y,EAAwBrkB,UAAUykB,mBAAqB,SAAU9Y,GAC7D,OAAO,eAAU5L,UAAM,OAAQ,GAAQ,WACnC,IAAImR,EAASwT,EAAYC,EAAkBC,EAAgBxH,EACvDpX,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAI/B,GAHA+C,KAAK8gB,iCAAiC,OAAgBW,QACtDzhB,KAAKiD,OAAOoH,QAAQ,4BAA6BuB,EAAQgU,eACzDzO,EAAUvF,EAAQuF,SAAWnR,KAAK+U,oBAC7B5D,EACD,MAAM/O,EAAA,KAAiB0iB,uBAgB3B,OAdAH,EAAa,CACTjnB,SAAUsC,KAAKmd,OAAO/f,KAAKM,SAC3BC,UAAWiO,EAAQjO,WAAa,GAChCkhB,OAAQjT,EAAQiT,OAChBkG,sBAAuB5T,EAAQ0E,cAC/BmP,qBAAsBpZ,EAAQoZ,qBAC9BpY,sBAAuBhB,EAAQgB,sBAC/BE,mBAAoBlB,EAAQkB,mBAC5BmY,UAAWrZ,EAAQqZ,UACnBC,OAAQtZ,EAAQsZ,OAChBC,OAAQvZ,EAAQuZ,QAEpBP,EAAmBle,KAAKK,UAAU4d,GAClCE,EAAiB7kB,KAAKukB,0BAA0Blc,IAAIuc,GACtB,qBAAnBC,GACP7kB,KAAKiD,OAAOoH,QAAQ,uEAAwEuB,EAAQgU,eACpGvC,EAAWrd,KAAKolB,wBAAwBxZ,EAASuF,GAC5CiP,MAAK,SAAUra,GAEhB,OADAE,EAAMse,0BAA0B3b,OAAOgc,GAChC7e,KAEN0a,OAAM,SAAUza,GAEjB,MADAC,EAAMse,0BAA0B3b,OAAOgc,GACjC5e,KAEVhG,KAAKukB,0BAA0B/a,IAAIob,EAAkBvH,GAC9C,CAAC,EAAcA,KAGtBrd,KAAKiD,OAAOoH,QAAQ,0FAA2FuB,EAAQgU,eAChH,CAAC,EAAciF,WAWtCP,EAAwBrkB,UAAUmlB,wBAA0B,SAAUxZ,EAASuF,GAC3E,OAAO,eAAUnR,UAAM,OAAQ,GAAQ,WACnC,IAAIqlB,EAAmBC,EACnBrf,EAAQjG,KACZ,OAAO,eAAYA,MAAM,SAAU/C,GAI/B,OAHAooB,EAAoB,IAAIE,GAAA,KAAkBvlB,KAAKmd,OAAQnd,KAAKoP,eAAgBpP,KAAK6K,cAAe7K,KAAKiD,OAAQjD,KAAKsf,aAActf,KAAKZ,iBAAkBwM,EAAQgU,eAC/J0F,EAAgBD,EAAkBG,wBAAwB5Z,EAASuF,GACnEnR,KAAKsf,aAAaS,UAAUC,EAAA,KAAUe,oBAAqB,OAAgBU,OAAQ7V,GAC5E,CAAC,EAAcyZ,EAAkBpE,aAAaqE,GAAe7E,OAAM,WAAc,OAAO,eAAUxa,OAAO,OAAQ,GAAQ,WACxH,IAAIwf,EAAoBC,EACxB,OAAO,eAAY1lB,MAAM,SAAU/C,GAC/B,OAAQA,EAAG0E,OACP,KAAK,EAED,OADA1E,EAAGwF,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa1C,KAAK8hB,2BAA2BwD,IACzD,KAAK,EAGD,OAFAG,EAAqBxoB,EAAG6E,OACxB9B,KAAKsf,aAAaS,UAAUC,EAAA,KAAUO,sBAAuB,OAAgBkB,OAAQgE,GAC9E,CAAC,EAAcA,GAC1B,KAAK,EAGD,MAFAC,EAAsBzoB,EAAG6E,OACzB9B,KAAKsf,aAAaS,UAAUC,EAAA,KAAUU,sBAAuB,OAAgBe,OAAQ,KAAMiE,GACrFA,EACV,KAAK,EAAG,MAAO,CAAC,qBAOrCpB,EAhJiC,CAiJ1C,K,oCClKF;;;;;;;;;;;;;;;;AAkBA,IAAIqB,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgB3e,OAAO8e,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAO7e,OAAO/G,UAAU2O,eAAeK,KAAK4W,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,KACzFN,EAAcC,EAAGC,IAG5B,SAASK,EAAUN,EAAGC,GAElB,SAASM,IAAOnmB,KAAKomB,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAE3lB,UAAkB,OAAN4lB,EAAa7e,OAAOqf,OAAOR,IAAMM,EAAGlmB,UAAY4lB,EAAE5lB,UAAW,IAAIkmB,GAGnF,IAAIG,EAAW,WAQX,OAPAA,EAAWtf,OAAOuf,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAG5lB,EAAI,EAAG4L,EAAIia,UAAUjc,OAAQ5J,EAAI4L,EAAG5L,IAE5C,IAAK,IAAIolB,KADTQ,EAAIC,UAAU7lB,GACA4lB,EAAOzf,OAAO/G,UAAU2O,eAAeK,KAAKwX,EAAGR,KAAIO,EAAEP,GAAKQ,EAAER,IAE9E,OAAOO,GAEJF,EAASK,MAAM3mB,KAAM0mB,YAGhC,SAASE,EAAUC,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAM1d,GAAS,OAAOA,aAAiBwd,EAAIxd,EAAQ,IAAIwd,GAAE,SAAUrhB,GAAWA,EAAQ6D,MAC/F,OAAO,IAAKwd,IAAMA,EAAIthB,WAAU,SAAUC,EAASC,GAC/C,SAASuhB,EAAU3d,GAAS,IAAM4d,EAAKH,EAAUI,KAAK7d,IAAW,MAAOpH,GAAKwD,EAAOxD,IACpF,SAASklB,EAAS9d,GAAS,IAAM4d,EAAKH,EAAU,SAASzd,IAAW,MAAOpH,GAAKwD,EAAOxD,IACvF,SAASglB,EAAKphB,GAAUA,EAAOuhB,KAAO5hB,EAAQK,EAAOwD,OAAS0d,EAAMlhB,EAAOwD,OAAO6W,KAAK8G,EAAWG,GAClGF,GAAMH,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKM,WAItE,SAASG,EAAYV,EAASW,GAC1B,IAAsGC,EAAGC,EAAGlB,EAAGmB,EAA3GC,EAAI,CAAEjmB,MAAO,EAAGG,KAAM,WAAa,GAAW,EAAP0kB,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAO/jB,KAAM,GAAIolB,IAAK,IAChG,OAAOF,EAAI,CAAEP,KAAMU,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BJ,EAAEI,OAAOC,UAAY,WAAa,OAAOhoB,OAAU2nB,EACvJ,SAASG,EAAKrb,GAAK,OAAO,SAAUwb,GAAK,OAAOd,EAAK,CAAC1a,EAAGwb,KACzD,SAASd,EAAKe,GACV,GAAIT,EAAG,MAAM,IAAIU,UAAU,mCAC3B,MAAOP,EAAG,IACN,GAAIH,EAAI,EAAGC,IAAMlB,EAAY,EAAR0B,EAAG,GAASR,EAAE,UAAYQ,EAAG,GAAKR,EAAE,YAAclB,EAAIkB,EAAE,YAAclB,EAAEvX,KAAKyY,GAAI,GAAKA,EAAEN,SAAWZ,EAAIA,EAAEvX,KAAKyY,EAAGQ,EAAG,KAAKZ,KAAM,OAAOd,EAE3J,OADIkB,EAAI,EAAGlB,IAAG0B,EAAK,CAAS,EAARA,EAAG,GAAQ1B,EAAEjd,QACzB2e,EAAG,IACP,KAAK,EAAG,KAAK,EAAG1B,EAAI0B,EAAI,MACxB,KAAK,EAAc,OAAXN,EAAEjmB,QAAgB,CAAE4H,MAAO2e,EAAG,GAAIZ,MAAM,GAChD,KAAK,EAAGM,EAAEjmB,QAAS+lB,EAAIQ,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKN,EAAEC,IAAIO,MAAOR,EAAEnlB,KAAK2lB,MAAO,SACxC,QACI,GAAM5B,EAAIoB,EAAEnlB,OAAM+jB,EAAIA,EAAE/b,OAAS,GAAK+b,EAAEA,EAAE/b,OAAS,MAAkB,IAAVyd,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEN,EAAI,EAAG,SACjG,GAAc,IAAVM,EAAG,MAAc1B,GAAM0B,EAAG,GAAK1B,EAAE,IAAM0B,EAAG,GAAK1B,EAAE,IAAM,CAAEoB,EAAEjmB,MAAQumB,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYN,EAAEjmB,MAAQ6kB,EAAE,GAAI,CAAEoB,EAAEjmB,MAAQ6kB,EAAE,GAAIA,EAAI0B,EAAI,MAC7D,GAAI1B,GAAKoB,EAAEjmB,MAAQ6kB,EAAE,GAAI,CAAEoB,EAAEjmB,MAAQ6kB,EAAE,GAAIoB,EAAEC,IAAInlB,KAAKwlB,GAAK,MACvD1B,EAAE,IAAIoB,EAAEC,IAAIO,MAChBR,EAAEnlB,KAAK2lB,MAAO,SAEtBF,EAAKV,EAAKvY,KAAK4X,EAASe,GAC1B,MAAOzlB,GAAK+lB,EAAK,CAAC,EAAG/lB,GAAIulB,EAAI,EAAK,QAAUD,EAAIjB,EAAI,EACtD,GAAY,EAAR0B,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE3e,MAAO2e,EAAG,GAAKA,EAAG,QAAK,EAAQZ,MAAM,IAIlF,SAASe,EAAOC,EAAG7b,GACf,IAAI8b,EAAsB,oBAAXR,QAAyBO,EAAEP,OAAOC,UACjD,IAAKO,EAAG,OAAOD,EACf,IAAmB3nB,EAAYwB,EAA3BtB,EAAI0nB,EAAEtZ,KAAKqZ,GAAOE,EAAK,GAC3B,IACI,YAAc,IAAN/b,GAAgBA,KAAM,MAAQ9L,EAAIE,EAAEumB,QAAQE,KAAMkB,EAAG9lB,KAAK/B,EAAE4I,OAExE,MAAOvD,GAAS7D,EAAI,CAAE6D,MAAOA,GAC7B,QACI,IACQrF,IAAMA,EAAE2mB,OAASiB,EAAI1nB,EAAE,YAAY0nB,EAAEtZ,KAAKpO,GAElD,QAAU,GAAIsB,EAAG,MAAMA,EAAE6D,OAE7B,OAAOwiB,EAGX,SAASC,IACL,IAAK,IAAID,EAAK,GAAI3nB,EAAI,EAAGA,EAAI6lB,UAAUjc,OAAQ5J,IAC3C2nB,EAAKA,EAAGE,OAAOL,EAAO3B,UAAU7lB,KACpC,OAAO2nB","file":"js/chunk-vendors~b521feb8.fcbf04f7.js","sourcesContent":["/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __assign } from '../_virtual/_tslib.js';\nimport { DEFAULT_SYSTEM_OPTIONS, StubbedNetworkModule, Constants, ProtocolMode, LogLevel } from '@azure/msal-common';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { BrowserCacheLocation } from '../utils/BrowserConstants.js';\nimport { NavigationClient } from '../navigation/NavigationClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Default timeout for popup windows and iframes in milliseconds\r\nvar DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nvar DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nvar DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nfunction buildConfiguration(_a, isBrowserEnvironment) {\r\n var userInputAuth = _a.auth, userInputCache = _a.cache, userInputSystem = _a.system;\r\n // Default auth options for browser\r\n var DEFAULT_AUTH_OPTIONS = {\r\n clientId: \"\",\r\n authority: \"\" + Constants.DEFAULT_AUTHORITY,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: \"\",\r\n authorityMetadata: \"\",\r\n redirectUri: \"\",\r\n postLogoutRedirectUri: \"\",\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD\r\n };\r\n // Default cache options for browser\r\n var DEFAULT_CACHE_OPTIONS = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n // Default logger options for browser\r\n var DEFAULT_LOGGER_OPTIONS = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: function () { },\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n // Default system options for browser\r\n var DEFAULT_BROWSER_SYSTEM_OPTIONS = __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), { loggerOptions: DEFAULT_LOGGER_OPTIONS, networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule, navigationClient: new NavigationClient(), loadFrameTimeout: 0, \r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS, iframeHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS, navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0, redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, asyncPopups: false, allowRedirectInIframe: false });\r\n var overlayedConfig = {\r\n auth: __assign(__assign({}, DEFAULT_AUTH_OPTIONS), userInputAuth),\r\n cache: __assign(__assign({}, DEFAULT_CACHE_OPTIONS), userInputCache),\r\n system: __assign(__assign({}, DEFAULT_BROWSER_SYSTEM_OPTIONS), userInputSystem)\r\n };\r\n return overlayedConfig;\r\n}\n\nexport { DEFAULT_IFRAME_TIMEOUT_MS, DEFAULT_POPUP_TIMEOUT_MS, DEFAULT_REDIRECT_TIMEOUT_MS, buildConfiguration };\n//# sourceMappingURL=Configuration.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { MathUtils } from '../utils/MathUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar GuidGenerator = /** @class */ (function () {\r\n function GuidGenerator(cryptoObj) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n GuidGenerator.prototype.generateGuid = function () {\r\n try {\r\n var buffer = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n var guidHolder = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n var hex = \"0123456789abcdef\";\r\n var r = 0;\r\n var guidResponse = \"\";\r\n for (var i = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n }\r\n else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n }\r\n else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n };\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n GuidGenerator.isGuid = function (guid) {\r\n var regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n };\r\n return GuidGenerator;\r\n}());\n\nexport { GuidGenerator };\n//# sourceMappingURL=GuidGenerator.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Constant byte array length\r\nvar RANDOM_BYTE_ARR_LENGTH = 32;\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nvar PkceGenerator = /** @class */ (function () {\r\n function PkceGenerator(cryptoObj) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n PkceGenerator.prototype.generateCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var codeVerifier, codeChallenge;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n codeVerifier = this.generateCodeVerifier();\r\n return [4 /*yield*/, this.generateCodeChallengeFromVerifier(codeVerifier)];\r\n case 1:\r\n codeChallenge = _a.sent();\r\n return [2 /*return*/, {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n PkceGenerator.prototype.generateCodeVerifier = function () {\r\n try {\r\n // Generate random values as utf-8\r\n var buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n var pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n }\r\n catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n };\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n PkceGenerator.prototype.generateCodeChallengeFromVerifier = function (pkceCodeVerifier) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pkceHashedCodeVerifier, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.cryptoObj.sha256Digest(pkceCodeVerifier)];\r\n case 1:\r\n pkceHashedCodeVerifier = _a.sent();\r\n // encode hash as base64\r\n return [2 /*return*/, this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier))];\r\n case 2:\r\n e_1 = _a.sent();\r\n throw BrowserAuthError.createPkceNotGeneratedError(e_1);\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return PkceGenerator;\r\n}());\n\nexport { PkceGenerator };\n//# sourceMappingURL=PkceGenerator.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nvar PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nvar S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nvar MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nvar PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]);\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nvar BrowserCrypto = /** @class */ (function () {\r\n function BrowserCrypto(logger) {\r\n this.logger = logger;\r\n if (!(this.hasCryptoAPI())) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\r\n }\r\n this._keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString\r\n */\r\n BrowserCrypto.prototype.sha256Digest = function (dataString) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var data;\r\n return __generator(this, function (_a) {\r\n data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n return [2 /*return*/, this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer\r\n */\r\n BrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n var cryptoObj = window[\"msCrypto\"] || window.crypto;\r\n if (!cryptoObj.getRandomValues) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\r\n }\r\n cryptoObj.getRandomValues(dataBuffer);\r\n };\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.generateKeyPair = function (extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, (this.hasIECrypto() ?\r\n this.msCryptoGenerateKey(extractable, usages)\r\n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages))];\r\n });\r\n });\r\n };\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key\r\n * @param format\r\n */\r\n BrowserCrypto.prototype.exportJwk = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key)];\r\n });\r\n });\r\n };\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key\r\n * @param format\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.importJwk = function (key, extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyString, keyBuffer;\r\n return __generator(this, function (_a) {\r\n keyString = BrowserCrypto.getJwkString(key);\r\n keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n return [2 /*return*/, this.hasIECrypto() ?\r\n this.msCryptoImportKey(keyBuffer, extractable, usages)\r\n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages)];\r\n });\r\n });\r\n };\r\n /**\r\n * Signs given data with given key\r\n * @param key\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.sign = function (key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.hasIECrypto() ?\r\n this.msCryptoSign(key, data)\r\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n BrowserCrypto.prototype.hasCryptoAPI = function () {\r\n return this.hasIECrypto() || this.hasBrowserCrypto();\r\n };\r\n /**\r\n * Checks whether IE crypto (AKA msCrypto) is available.\r\n */\r\n BrowserCrypto.prototype.hasIECrypto = function () {\r\n return \"msCrypto\" in window;\r\n };\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n BrowserCrypto.prototype.hasBrowserCrypto = function () {\r\n return \"crypto\" in window;\r\n };\r\n /**\r\n * Helper function for SHA digest.\r\n * @param algorithm\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.getSubtleCryptoDigest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.digest(algorithm, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for SHA digest.\r\n * @param algorithm\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.getMSCryptoDigest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for generating a keypair\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.msCryptoGenerateKey = function (extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msGenerateKey = window[\"msCrypto\"].subtle.generateKey(_this._keygenAlgorithmOptions, extractable, usages);\r\n msGenerateKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msGenerateKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for exportKey\r\n * @param key\r\n * @param format\r\n */\r\n BrowserCrypto.prototype.msCryptoExportJwk = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", function (e) {\r\n var resultBuffer = e.target.result;\r\n var resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, \"\")\r\n .replace(/\\n/g, \"\")\r\n .replace(/\\t/g, \"\")\r\n .split(\" \").join(\"\")\r\n .replace(\"\\u0000\", \"\");\r\n try {\r\n resolve(JSON.parse(resultString));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n msExportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for importKey\r\n * @param key\r\n * @param format\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.msCryptoImportKey = function (keyBuffer, extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, _this._keygenAlgorithmOptions, extractable, usages);\r\n msImportKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msImportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for sign JWT\r\n * @param key\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.msCryptoSign = function (key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msSign = window[\"msCrypto\"].subtle.sign(_this._keygenAlgorithmOptions, key, data);\r\n msSign.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msSign.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk\r\n */\r\n BrowserCrypto.getJwkString = function (jwk) {\r\n return JSON.stringify(jwk, Object.keys(jwk).sort());\r\n };\r\n return BrowserCrypto;\r\n}());\n\nexport { BrowserCrypto };\n//# sourceMappingURL=BrowserCrypto.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DB_NAME, DB_VERSION, DB_TABLE_NAME } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nvar DatabaseStorage = /** @class */ (function () {\r\n function DatabaseStorage() {\r\n this.dbName = DB_NAME;\r\n this.version = DB_VERSION;\r\n this.tableName = DB_TABLE_NAME;\r\n this.dbOpen = false;\r\n }\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n DatabaseStorage.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var openDB = window.indexedDB.open(_this.dbName, _this.version);\r\n openDB.addEventListener(\"upgradeneeded\", function (e) {\r\n var event = e;\r\n event.target.result.createObjectStore(_this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.db = event.target.result;\r\n _this.dbOpen = true;\r\n resolve();\r\n });\r\n openDB.addEventListener(\"error\", function () { return reject(BrowserAuthError.createDatabaseUnavailableError()); });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Opens database if it's not already open\r\n */\r\n DatabaseStorage.prototype.validateDbIsOpen = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.dbOpen) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.open()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGet = objectStore.get(key);\r\n dbGet.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n resolve(event.target.result);\r\n });\r\n dbGet.addEventListener(\"error\", function (e) { return reject(e); });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key\r\n * @param payload\r\n */\r\n DatabaseStorage.prototype.setItem = function (key, payload) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbPut = objectStore.put(payload, key);\r\n dbPut.addEventListener(\"success\", function () { return resolve(); });\r\n dbPut.addEventListener(\"error\", function (e) { return reject(e); });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes item from IndexedDB under given key\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbDelete = objectStore.delete(key);\r\n dbDelete.addEventListener(\"success\", function () { return resolve(); });\r\n dbDelete.addEventListener(\"error\", function (e) { return reject(e); });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the storage object as an iterable array of strings.\r\n */\r\n DatabaseStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGetKeys = objectStore.getAllKeys();\r\n dbGetKeys.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n resolve(event.target.result);\r\n });\r\n dbGetKeys.addEventListener(\"error\", function (e) { return reject(e); });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Checks whether there is an object under the search key in the object store\r\n */\r\n DatabaseStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbContainsKey = objectStore.count(key);\r\n dbContainsKey.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n resolve(event.target.result === 1);\r\n });\r\n dbContainsKey.addEventListener(\"error\", function (e) { return reject(e); });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\r\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\r\n * with IndexedDB database versions.\r\n */\r\n DatabaseStorage.prototype.deleteDatabase = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\r\n deleteDbRequest.addEventListener(\"success\", function () { return resolve(true); });\r\n deleteDbRequest.addEventListener(\"error\", function () { return reject(false); });\r\n })];\r\n });\r\n });\r\n };\r\n return DatabaseStorage;\r\n}());\n\nexport { DatabaseStorage };\n//# sourceMappingURL=DatabaseStorage.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MemoryStorage = /** @class */ (function () {\r\n function MemoryStorage() {\r\n this.cache = new Map();\r\n }\r\n MemoryStorage.prototype.getItem = function (key) {\r\n return this.cache.get(key) || null;\r\n };\r\n MemoryStorage.prototype.setItem = function (key, value) {\r\n this.cache.set(key, value);\r\n };\r\n MemoryStorage.prototype.removeItem = function (key) {\r\n this.cache.delete(key);\r\n };\r\n MemoryStorage.prototype.getKeys = function () {\r\n var cacheKeys = [];\r\n this.cache.forEach(function (value, key) {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n };\r\n MemoryStorage.prototype.containsKey = function (key) {\r\n return this.cache.has(key);\r\n };\r\n MemoryStorage.prototype.clear = function () {\r\n this.cache.clear();\r\n };\r\n return MemoryStorage;\r\n}());\n\nexport { MemoryStorage };\n//# sourceMappingURL=MemoryStorage.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { DatabaseStorage } from './DatabaseStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\r\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\r\n */\r\nvar AsyncMemoryStorage = /** @class */ (function () {\r\n function AsyncMemoryStorage(logger) {\r\n this.inMemoryCache = new MemoryStorage();\r\n this.indexedDBCache = new DatabaseStorage();\r\n this.logger = logger;\r\n }\r\n AsyncMemoryStorage.prototype.handleDatabaseAccessError = function (error) {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\r\n this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\r\n }\r\n };\r\n /**\r\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\r\n * storage object if item isn't found in-memory.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var item, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n item = this.inMemoryCache.getItem(key);\r\n if (!!item) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getItem(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.handleDatabaseAccessError(e_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, item];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\r\n * storage object with the given key.\r\n * @param key\r\n * @param value\r\n */\r\n AsyncMemoryStorage.prototype.setItem = function (key, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.setItem(key, value);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.setItem(key, value)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_2 = _a.sent();\r\n this.handleDatabaseAccessError(e_2);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.removeItem(key);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.removeItem(key)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _a.sent();\r\n this.handleDatabaseAccessError(e_3);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the\r\n * asynchronous storage object.\r\n */\r\n AsyncMemoryStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cacheKeys, e_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cacheKeys = this.inMemoryCache.getKeys();\r\n if (!(cacheKeys.length === 0)) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getKeys()];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_4 = _a.sent();\r\n this.handleDatabaseAccessError(e_4);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, cacheKeys];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns true or false if the given key is present in the cache.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var containsKey, e_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n containsKey = this.inMemoryCache.containsKey(key);\r\n if (!!containsKey) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.containsKey(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_5 = _a.sent();\r\n this.handleDatabaseAccessError(e_5);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, containsKey];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Clears in-memory Map and tries to delete the IndexedDB database.\r\n */\r\n AsyncMemoryStorage.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.clear();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.deleteDatabase()];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_6 = _a.sent();\r\n this.handleDatabaseAccessError(e_6);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return AsyncMemoryStorage;\r\n}());\n\nexport { AsyncMemoryStorage };\n//# sourceMappingURL=AsyncMemoryStorage.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { GuidGenerator } from './GuidGenerator.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\nimport { Base64Decode } from '../encode/Base64Decode.js';\nimport { PkceGenerator } from './PkceGenerator.js';\nimport { BrowserCrypto } from './BrowserCrypto.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { AsyncMemoryStorage } from '../cache/AsyncMemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nvar CryptoOps = /** @class */ (function () {\r\n function CryptoOps(logger) {\r\n this.logger = logger;\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto(this.logger);\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = {\r\n asymmetricKeys: new AsyncMemoryStorage(this.logger),\r\n symmetricKeys: new AsyncMemoryStorage(this.logger)\r\n };\r\n }\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n CryptoOps.prototype.createNewGuid = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n /**\r\n * Encodes input string to base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Encode = function (input) {\r\n return this.b64Encode.encode(input);\r\n };\r\n /**\r\n * Decodes input string from base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Decode = function (input) {\r\n return this.b64Decode.decode(input);\r\n };\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n CryptoOps.prototype.generatePkceCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.pkceGenerator.generateCodes()];\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n CryptoOps.prototype.getPublicKeyThumbprint = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyPair, publicKeyJwk, pubKeyThumprintObj, publicJwkString, publicJwkBuffer, publicJwkHash, privateKeyJwk, unextractablePrivateKey;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES)];\r\n case 1:\r\n keyPair = _a.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _a.sent();\r\n pubKeyThumprintObj = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n publicJwkString = BrowserCrypto.getJwkString(pubKeyThumprintObj);\r\n return [4 /*yield*/, this.browserCrypto.sha256Digest(publicJwkString)];\r\n case 3:\r\n publicJwkBuffer = _a.sent();\r\n publicJwkHash = this.b64Encode.urlEncodeArr(new Uint8Array(publicJwkBuffer));\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.privateKey)];\r\n case 4:\r\n privateKeyJwk = _a.sent();\r\n return [4 /*yield*/, this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"])];\r\n case 5:\r\n unextractablePrivateKey = _a.sent();\r\n // Store Keypair data in keystore\r\n return [4 /*yield*/, this.cache.asymmetricKeys.setItem(publicJwkHash, {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n })];\r\n case 6:\r\n // Store Keypair data in keystore\r\n _a.sent();\r\n return [2 /*return*/, publicJwkHash];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid\r\n */\r\n CryptoOps.prototype.removeTokenBindingKey = function (kid) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyFound;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cache.asymmetricKeys.removeItem(kid)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, this.cache.asymmetricKeys.containsKey(kid)];\r\n case 2:\r\n keyFound = _a.sent();\r\n return [2 /*return*/, !keyFound];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n CryptoOps.prototype.clearKeystore = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var dataStoreNames, databaseStorage, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n dataStoreNames = Object.keys(this.cache);\r\n databaseStorage = this.cache[dataStoreNames[0]];\r\n if (!databaseStorage) return [3 /*break*/, 2];\r\n return [4 /*yield*/, databaseStorage.deleteDatabase()];\r\n case 1:\r\n _a = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n _a = false;\r\n _b.label = 3;\r\n case 3: return [2 /*return*/, _a];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload\r\n * @param kid\r\n */\r\n CryptoOps.prototype.signJwt = function (payload, kid) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedKeyPair, publicKeyJwk, publicKeyJwkString, header, encodedHeader, encodedPayload, tokenString, tokenBuffer, signatureBuffer, encodedSignature;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cache.asymmetricKeys.getItem(kid)];\r\n case 1:\r\n cachedKeyPair = _a.sent();\r\n if (!cachedKeyPair) {\r\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\r\n }\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(cachedKeyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _a.sent();\r\n publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\r\n header = {\r\n alg: publicKeyJwk.alg,\r\n type: KEY_FORMAT_JWK\r\n };\r\n encodedHeader = this.b64Encode.urlEncode(JSON.stringify(header));\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n tokenString = encodedHeader + \".\" + encodedPayload;\r\n tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n return [4 /*yield*/, this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer)];\r\n case 3:\r\n signatureBuffer = _a.sent();\r\n encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n return [2 /*return*/, tokenString + \".\" + encodedSignature];\r\n }\r\n });\r\n });\r\n };\r\n CryptoOps.POP_KEY_USAGES = [\"sign\", \"verify\"];\r\n CryptoOps.EXTRACTABLE = true;\r\n return CryptoOps;\r\n}());\n\nexport { CryptoOps };\n//# sourceMappingURL=CryptoOps.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { BrowserCacheLocation } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserStorage = /** @class */ (function () {\r\n function BrowserStorage(cacheLocation) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n BrowserStorage.prototype.validateWindowStorage = function (cacheLocation) {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n var storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n };\r\n BrowserStorage.prototype.getItem = function (key) {\r\n return this.windowStorage.getItem(key);\r\n };\r\n BrowserStorage.prototype.setItem = function (key, value) {\r\n this.windowStorage.setItem(key, value);\r\n };\r\n BrowserStorage.prototype.removeItem = function (key) {\r\n this.windowStorage.removeItem(key);\r\n };\r\n BrowserStorage.prototype.getKeys = function () {\r\n return Object.keys(this.windowStorage);\r\n };\r\n BrowserStorage.prototype.containsKey = function (key) {\r\n return this.windowStorage.hasOwnProperty(key);\r\n };\r\n return BrowserStorage;\r\n}());\n\nexport { BrowserStorage };\n//# sourceMappingURL=BrowserStorage.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __extends, __spread, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, AccountEntity, CacheManager, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ServerTelemetryEntity, AuthorityMetadataEntity, PersistentCacheKeys, ThrottlingEntity, Constants, StringUtils, ProtocolUtils, CcsCredentialType, IdToken } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserCacheLocation, InMemoryCacheKeys, TemporaryCacheKeys } from '../utils/BrowserConstants.js';\nimport { BrowserStorage } from './BrowserStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nvar BrowserCacheManager = /** @class */ (function (_super) {\r\n __extends(BrowserCacheManager, _super);\r\n function BrowserCacheManager(clientId, cacheConfig, cryptoImpl, logger) {\r\n var _this = _super.call(this, clientId, cryptoImpl) || this;\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n _this.COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n _this.cacheConfig = cacheConfig;\r\n _this.logger = logger;\r\n _this.internalStorage = new MemoryStorage();\r\n _this.browserStorage = _this.setupBrowserStorage(_this.cacheConfig.cacheLocation);\r\n _this.temporaryCacheStorage = _this.setupTemporaryCacheStorage(_this.cacheConfig.cacheLocation);\r\n // Migrate any cache entries from older versions of MSAL.\r\n _this.migrateCacheEntries();\r\n return _this;\r\n }\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupBrowserStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(cacheLocation);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n };\r\n /**\r\n *\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupTemporaryCacheStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(BrowserCacheLocation.SessionStorage);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n };\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntries = function () {\r\n var _this = this;\r\n var idTokenKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ID_TOKEN;\r\n var clientInfoKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.CLIENT_INFO;\r\n var errorKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR;\r\n var errorDescKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR_DESC;\r\n var idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n var clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n var errorValue = this.browserStorage.getItem(errorKey);\r\n var errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n var values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n var keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n keysToMigrate.forEach(function (cacheKey, index) { return _this.migrateCacheEntry(cacheKey, values[index]); });\r\n };\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntry = function (newKey, value) {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n };\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n BrowserCacheManager.prototype.validateAndParseJson = function (jsonValue) {\r\n try {\r\n var parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getItem = function (key) {\r\n return this.browserStorage.getItem(key);\r\n };\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setItem = function (key, value) {\r\n this.browserStorage.setItem(key, value);\r\n };\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n BrowserCacheManager.prototype.getAccount = function (accountKey) {\r\n var account = this.getItem(accountKey);\r\n if (!account) {\r\n return null;\r\n }\r\n var parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n return null;\r\n }\r\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\r\n };\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setAccount = function (account) {\r\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\r\n var key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n };\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n BrowserCacheManager.prototype.getIdTokenCredential = function (idTokenKey) {\r\n var value = this.getItem(idTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n };\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n BrowserCacheManager.prototype.setIdTokenCredential = function (idToken) {\r\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\r\n var idTokenKey = idToken.generateCredentialKey();\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n };\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getAccessTokenCredential = function (accessTokenKey) {\r\n var value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n };\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n BrowserCacheManager.prototype.setAccessTokenCredential = function (accessToken) {\r\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n var accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n };\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n BrowserCacheManager.prototype.getRefreshTokenCredential = function (refreshTokenKey) {\r\n var value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n };\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n BrowserCacheManager.prototype.setRefreshTokenCredential = function (refreshToken) {\r\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n var refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n };\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n BrowserCacheManager.prototype.getAppMetadata = function (appMetadataKey) {\r\n var value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n BrowserCacheManager.prototype.setAppMetadata = function (appMetadata) {\r\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\r\n var appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n };\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n BrowserCacheManager.prototype.getServerTelemetry = function (serverTelemetryKey) {\r\n var value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n BrowserCacheManager.prototype.setServerTelemetry = function (serverTelemetryKey, serverTelemetry) {\r\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadata = function (key) {\r\n var value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadataKeys = function () {\r\n var _this = this;\r\n var allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter(function (key) {\r\n return _this.isAuthorityMetadata(key);\r\n });\r\n };\r\n /**\r\n * Sets wrapper metadata in memory\r\n * @param wrapperSKU\r\n * @param wrapperVersion\r\n */\r\n BrowserCacheManager.prototype.setWrapperMetadata = function (wrapperSKU, wrapperVersion) {\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\r\n };\r\n /**\r\n * Returns wrapper metadata from in-memory storage\r\n */\r\n BrowserCacheManager.prototype.getWrapperMetadata = function () {\r\n var sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || \"\";\r\n var version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || \"\";\r\n return [sku, version];\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n BrowserCacheManager.prototype.setAuthorityMetadata = function (key, entity) {\r\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n };\r\n /**\r\n * Gets the active account\r\n */\r\n BrowserCacheManager.prototype.getActiveAccount = function () {\r\n var activeAccountIdKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n var activeAccountId = this.browserStorage.getItem(activeAccountIdKey);\r\n if (!activeAccountId) {\r\n return null;\r\n }\r\n return this.getAccountInfoByFilter({ localAccountId: activeAccountId })[0] || null;\r\n };\r\n /**\r\n * Sets the active account's localAccountId in cache\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.setActiveAccount = function (account) {\r\n var activeAccountIdKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n this.browserStorage.setItem(activeAccountIdKey, account.localAccountId);\r\n }\r\n else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.browserStorage.removeItem(activeAccountIdKey);\r\n }\r\n };\r\n /**\r\n * Gets a list of accounts that match all of the filters provided\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByFilter = function (accountFilter) {\r\n var allAccounts = this.getAllAccounts();\r\n return allAccounts.filter(function (accountObj) {\r\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\r\n return false;\r\n }\r\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n BrowserCacheManager.prototype.getThrottlingCache = function (throttlingCacheKey) {\r\n var value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n };\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n BrowserCacheManager.prototype.setThrottlingCache = function (throttlingCacheKey, throttlingCache) {\r\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n };\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getTemporaryCache = function (cacheKey, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n var itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n return itemCookie;\r\n }\r\n }\r\n var value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n // If temp cache item not found in session/memory, check local storage for items set by old versions\r\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\r\n var item = this.browserStorage.getItem(key);\r\n if (item) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\r\n return item;\r\n }\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\r\n return value;\r\n };\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setTemporaryCache = function (cacheKey, value, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n };\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeItem = function (key) {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n return true;\r\n };\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.containsKey = function (key) {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n };\r\n /**\r\n * Gets all keys in window.\r\n */\r\n BrowserCacheManager.prototype.getKeys = function () {\r\n return __spread(this.browserStorage.getKeys(), this.temporaryCacheStorage.getKeys());\r\n };\r\n /**\r\n * Clears all cache entries created by MSAL.\r\n */\r\n BrowserCacheManager.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: \r\n // Removes all accounts and their credentials\r\n return [4 /*yield*/, this.removeAllAccounts()];\r\n case 1:\r\n // Removes all accounts and their credentials\r\n _a.sent();\r\n this.removeAppMetadata();\r\n // Removes all remaining MSAL cache items\r\n this.getKeys().forEach(function (cacheKey) {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((_this.browserStorage.containsKey(cacheKey) || _this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(_this.clientId) !== -1))) {\r\n _this.removeItem(cacheKey);\r\n }\r\n });\r\n this.internalStorage.clear();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n BrowserCacheManager.prototype.setItemCookie = function (cookieName, cookieValue, expires) {\r\n var cookieStr = encodeURIComponent(cookieName) + \"=\" + encodeURIComponent(cookieValue) + \";path=/;\";\r\n if (expires) {\r\n var expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += \"expires=\" + expireTime + \";\";\r\n }\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n document.cookie = cookieStr;\r\n };\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.getItemCookie = function (cookieName) {\r\n var name = encodeURIComponent(cookieName) + \"=\";\r\n var cookieList = document.cookie.split(\";\");\r\n for (var i = 0; i < cookieList.length; i++) {\r\n var cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return \"\";\r\n };\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n BrowserCacheManager.prototype.clearMsalCookies = function () {\r\n var _this = this;\r\n var cookiePrefix = Constants.CACHE_PREFIX + \".\" + this.clientId;\r\n var cookieList = document.cookie.split(\";\");\r\n cookieList.forEach(function (cookie) {\r\n while (cookie.charAt(0) === \" \") {\r\n // eslint-disable-next-line no-param-reassign\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n var cookieKey = cookie.split(\"=\")[0];\r\n _this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n };\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.clearItemCookie = function (cookieName) {\r\n this.setItemCookie(cookieName, \"\", -1);\r\n };\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n BrowserCacheManager.prototype.getCookieExpirationTime = function (cookieLifeDays) {\r\n var today = new Date();\r\n var expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n };\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n BrowserCacheManager.prototype.getCache = function () {\r\n return this.browserStorage;\r\n };\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n BrowserCacheManager.prototype.setCache = function () {\r\n // sets nothing\r\n };\r\n /**\r\n * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n BrowserCacheManager.prototype.generateCacheKey = function (key) {\r\n var generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return Constants.CACHE_PREFIX + \".\" + this.clientId + \".\" + key;\r\n }\r\n return JSON.stringify(key);\r\n };\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateAuthorityKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.AUTHORITY + \".\" + stateId);\r\n };\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateNonceKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.NONCE_IDTOKEN + \".\" + stateId);\r\n };\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n BrowserCacheManager.prototype.generateStateKey = function (stateString) {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.REQUEST_STATE + \".\" + stateId);\r\n };\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n BrowserCacheManager.prototype.getCachedAuthority = function (cachedState) {\r\n var stateCacheKey = this.generateStateKey(cachedState);\r\n var state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n };\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.updateCacheEntries = function (state, nonce, authorityInstance, loginHint, account) {\r\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n var stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n // Cache the nonce\r\n var nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n // Cache authorityKey\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n if (account) {\r\n var ccsCredential = {\r\n credential: account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n else if (!StringUtils.isEmpty(loginHint)) {\r\n var ccsCredential = {\r\n credential: loginHint,\r\n type: CcsCredentialType.UPN\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n };\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.resetRequestCache = function (state) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(function (key) {\r\n if (key.indexOf(state) !== -1) {\r\n _this.removeItem(key);\r\n }\r\n });\r\n }\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\r\n this.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByState = function (stateString) {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n var stateKey = this.generateStateKey(stateString);\r\n var cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.infoPii(\"BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: \" + cachedState);\r\n this.resetRequestCache(cachedState || \"\");\r\n }\r\n this.clearMsalCookies();\r\n };\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByInteractionType = function (interactionType) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach(function (key) {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n // Retrieve state value, return if not a valid value\r\n var stateValue = _this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n var parsedState = BrowserProtocolUtils.extractBrowserRequestState(_this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n _this.logger.infoPii(\"BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: \" + stateValue);\r\n _this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n };\r\n BrowserCacheManager.prototype.cacheCodeRequest = function (authCodeRequest, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\r\n var encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n };\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n BrowserCacheManager.prototype.getCachedRequest = function (state, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n var encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n var parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest));\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n var cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n return parsedRequest;\r\n };\r\n BrowserCacheManager.prototype.isInteractionInProgress = function (matchClientId) {\r\n var clientId = this.getInteractionInProgress();\r\n if (matchClientId) {\r\n return clientId === this.clientId;\r\n }\r\n else {\r\n return !!clientId;\r\n }\r\n };\r\n BrowserCacheManager.prototype.getInteractionInProgress = function () {\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n return this.getTemporaryCache(key, false);\r\n };\r\n BrowserCacheManager.prototype.setInteractionInProgress = function (inProgress) {\r\n var clientId = this.getInteractionInProgress();\r\n // Ensure we don't overwrite interaction in progress for a different clientId\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n if (inProgress && !clientId) {\r\n // No interaction is in progress\r\n this.setTemporaryCache(key, this.clientId, false);\r\n }\r\n else if (!inProgress && clientId === this.clientId) {\r\n this.removeItem(key);\r\n }\r\n };\r\n /**\r\n * Returns username retrieved from ADAL or MSAL v1 idToken\r\n */\r\n BrowserCacheManager.prototype.getLegacyLoginHint = function () {\r\n // Only check for adal/msal token if no SSO params are being used\r\n var adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\r\n }\r\n // Check for cached MSAL v1 id token\r\n var msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\r\n if (msalIdTokenString) {\r\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\r\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\r\n }\r\n var cachedIdTokenString = msalIdTokenString || adalIdTokenString;\r\n if (cachedIdTokenString) {\r\n var cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\r\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\r\n return cachedIdToken.claims.preferred_username;\r\n }\r\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\r\n return cachedIdToken.claims.upn;\r\n }\r\n else {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\r\n }\r\n }\r\n return null;\r\n };\r\n return BrowserCacheManager;\r\n}(CacheManager));\r\nvar DEFAULT_BROWSER_CACHE_MANAGER = function (clientId, logger) {\r\n var cacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\n\nexport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER };\n//# sourceMappingURL=BrowserCacheManager.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { Authority, IdTokenEntity, AuthToken, AccountEntity, ScopeSet, AccessTokenEntity } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Token cache manager\r\n */\r\nvar TokenCache = /** @class */ (function () {\r\n function TokenCache(configuration, storage, logger, cryptoObj) {\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n this.config = configuration;\r\n this.storage = storage;\r\n this.logger = logger;\r\n this.cryptoObj = cryptoObj;\r\n }\r\n // Move getAllAccounts here and cache utility APIs\r\n /**\r\n * API to load tokens to msal-browser cache.\r\n * @param request\r\n * @param response\r\n * @param options\r\n */\r\n TokenCache.prototype.loadExternalTokens = function (request, response, options) {\r\n this.logger.info(\"TokenCache - loadExternalTokens called\");\r\n if (!response.id_token) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\r\n }\r\n if (request.account) {\r\n this.loadIdToken(response.id_token, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\r\n this.loadAccessToken(request, response, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\r\n }\r\n else if (request.authority) {\r\n var authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n var authority = new Authority(request.authority, this.config.system.networkClient, this.storage, authorityOptions);\r\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\r\n if (options.clientInfo) {\r\n this.logger.trace(\"TokenCache - homeAccountId from options\");\r\n this.loadIdToken(response.id_token, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\r\n this.loadAccessToken(request, response, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\r\n }\r\n else if (response.client_info) {\r\n this.logger.trace(\"TokenCache - homeAccountId from response\");\r\n this.loadIdToken(response.id_token, response.client_info, authority.hostnameAndPort, authority.tenant, options);\r\n this.loadAccessToken(request, response, response.client_info, authority.hostnameAndPort, authority.tenant, options);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load id tokens to msal-browser cache\r\n * @param idToken\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @param options\r\n */\r\n TokenCache.prototype.loadIdToken = function (idToken, homeAccountId, environment, tenantId, options) {\r\n var idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);\r\n var idAuthToken = new AuthToken(idToken, this.cryptoObj);\r\n var accountEntity = options.clientInfo ?\r\n AccountEntity.createAccount(options.clientInfo, homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment) :\r\n AccountEntity.createGenericAccount(homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading id token\");\r\n this.storage.setAccount(accountEntity);\r\n this.storage.setIdTokenCredential(idTokenEntity);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load access tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param options\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns\r\n */\r\n TokenCache.prototype.loadAccessToken = function (request, response, homeAccountId, environment, tenantId, options) {\r\n if (!response.access_token) {\r\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\r\n return;\r\n }\r\n if (!response.expires_in) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\r\n }\r\n if (!options.extendedExpiresOn) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\r\n }\r\n var scopes = new ScopeSet(request.scopes).printScopes();\r\n var expiresOn = response.expires_in;\r\n var extendedExpiresOn = options.extendedExpiresOn;\r\n var accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading access token\");\r\n this.storage.setAccessTokenCredential(accessTokenEntity);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n return TokenCache;\r\n}());\n\nexport { TokenCache };\n//# sourceMappingURL=TokenCache.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { CryptoOps } from '../crypto/CryptoOps.js';\nimport { StringUtils, Logger, DEFAULT_CRYPTO_IMPLEMENTATION, Constants, ServerError, InteractionRequiredAuthError } from '@azure/msal-common';\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from '../cache/BrowserCacheManager.js';\nimport { buildConfiguration } from '../config/Configuration.js';\nimport { InteractionType, TemporaryCacheKeys, ApiId, BrowserCacheLocation, BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { name, version } from '../packageMetadata.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { EventHandler } from '../event/EventHandler.js';\nimport { PopupClient } from '../interaction_client/PopupClient.js';\nimport { RedirectClient } from '../interaction_client/RedirectClient.js';\nimport { SilentIframeClient } from '../interaction_client/SilentIframeClient.js';\nimport { SilentRefreshClient } from '../interaction_client/SilentRefreshClient.js';\nimport { TokenCache } from '../cache/TokenCache.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ClientApplication = /** @class */ (function () {\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n function ClientApplication(configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n // Initialize the crypto class.\r\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger) : DEFAULT_CRYPTO_IMPLEMENTATION;\r\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\r\n // Initialize the browser storage class.\r\n this.browserStorage = this.isBrowserEnvironment ?\r\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\r\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n // Initialize the token cache\r\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\r\n }\r\n // #region Redirect Flow\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n ClientApplication.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var loggedInAccounts, redirectResponseKey, response, correlationId, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || \"\";\r\n redirectClient = new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, correlationId);\r\n response = redirectClient.handleRedirectPromise(hash)\r\n .then(function (result) {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n return result;\r\n })\r\n .catch(function (e) {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n }\r\n else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return [2 /*return*/, null];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\r\n * the page, so any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isLoggedIn, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n // Preflight request\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n this.logger.verbose(\"acquireTokenRedirect called\");\r\n isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n redirectClient = new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);\r\n return [2 /*return*/, redirectClient.acquireToken(request).catch(function (e) {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Popup Flow\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenPopup = function (request) {\r\n var _this = this;\r\n try {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n this.logger.verbose(\"acquireTokenPopup called\", request.correlationId);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n // If logged in, emit acquire token events\r\n var loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\r\n }\r\n var popupClient = new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);\r\n return popupClient.acquireToken(request).then(function (result) {\r\n // If logged in, emit acquire token events\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n return result;\r\n }).catch(function (e) {\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n });\r\n };\r\n // #endregion\r\n // #region Silent Flow\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.ssoSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentIframeClient, silentTokenResult, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"ssoSilent called\", request.correlationId);\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, request);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n silentIframeClient = new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, request.correlationId);\r\n return [4 /*yield*/, silentIframeClient.acquireToken(request)];\r\n case 2:\r\n silentTokenResult = _a.sent();\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, silentTokenResult);\r\n return [2 /*return*/, silentTokenResult];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e_1);\r\n throw e_1;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use this function to obtain a token before every call to the API / resource provider\r\n *\r\n * MSAL return's a cached token when available\r\n * Or it send's a request to the STS to obtain a new token using a refresh token.\r\n *\r\n * @param {@link SilentRequest}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenByRefreshToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRefreshClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, request);\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n silentRefreshClient = new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);\r\n return [2 /*return*/, silentRefreshClient.acquireToken(request).catch(function (e) {\r\n var isServerError = e instanceof ServerError;\r\n var isInteractionRequiredError = e instanceof InteractionRequiredAuthError;\r\n var isInvalidGrantError = (e.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n if (isServerError && isInvalidGrantError && !isInteractionRequiredError) {\r\n _this.logger.verbose(\"Refresh token expired or invalid, attempting acquire token by iframe\", request.correlationId);\r\n var silentIframeClient = new SilentIframeClient(_this.config, _this.browserStorage, _this.browserCrypto, _this.logger, _this.eventHandler, _this.navigationClient, ApiId.acquireTokenSilent_authCode, request.correlationId);\r\n return silentIframeClient.acquireToken(request);\r\n }\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Logout\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest\r\n * @deprecated\r\n */\r\n ClientApplication.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\");\r\n return [2 /*return*/, this.logoutRedirect(logoutRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutRedirect = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var redirectClient;\r\n return __generator(this, function (_a) {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n redirectClient = new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);\r\n return [2 /*return*/, redirectClient.logout(logoutRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutPopup = function (logoutRequest) {\r\n try {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n var popupClient = new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);\r\n return popupClient.logout(logoutRequest);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n // #endregion\r\n // #region Account APIs\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n ClientApplication.prototype.getAllAccounts = function () {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n };\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param userName\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByUsername = function (userName) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching username found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching username: \" + userName);\r\n return allAccounts.filter(function (accountObj) { return accountObj.username.toLowerCase() === userName.toLowerCase(); })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByHomeId = function (homeAccountId) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching homeAccountId: \" + homeAccountId);\r\n return allAccounts.filter(function (accountObj) { return accountObj.homeAccountId === homeAccountId; })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByLocalId = function (localAccountId) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching localAccountId: \" + localAccountId);\r\n return allAccounts.filter(function (accountObj) { return accountObj.localAccountId === localAccountId; })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\r\n * @param account\r\n */\r\n ClientApplication.prototype.setActiveAccount = function (account) {\r\n this.browserStorage.setActiveAccount(account);\r\n };\r\n /**\r\n * Gets the currently active account\r\n */\r\n ClientApplication.prototype.getActiveAccount = function () {\r\n return this.browserStorage.getActiveAccount();\r\n };\r\n // #endregion\r\n // #region Helpers\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n * * @param interactionType\r\n */\r\n ClientApplication.prototype.preflightBrowserEnvironmentCheck = function (interactionType) {\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n };\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n ClientApplication.prototype.addEventCallback = function (callback) {\r\n return this.eventHandler.addEventCallback(callback);\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n ClientApplication.prototype.removeEventCallback = function (callbackId) {\r\n this.eventHandler.removeEventCallback(callbackId);\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.enableAccountStorageEvents = function () {\r\n this.eventHandler.enableAccountStorageEvents();\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.disableAccountStorageEvents = function () {\r\n this.eventHandler.disableAccountStorageEvents();\r\n };\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n ClientApplication.prototype.getTokenCache = function () {\r\n return this.tokenCache;\r\n };\r\n /**\r\n * Returns the logger instance\r\n */\r\n ClientApplication.prototype.getLogger = function () {\r\n return this.logger;\r\n };\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n ClientApplication.prototype.setLogger = function (logger) {\r\n this.logger = logger;\r\n };\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n ClientApplication.prototype.initializeWrapperLibrary = function (sku, version) {\r\n // Validate the SKU passed in is one we expect\r\n this.browserStorage.setWrapperMetadata(sku, version);\r\n };\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n ClientApplication.prototype.setNavigationClient = function (navigationClient) {\r\n this.navigationClient = navigationClient;\r\n };\r\n /**\r\n * Returns the configuration object\r\n */\r\n ClientApplication.prototype.getConfiguration = function () {\r\n return this.config;\r\n };\r\n return ClientApplication;\r\n}());\n\nexport { ClientApplication };\n//# sourceMappingURL=ClientApplication.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { DEFAULT_REQUEST, InteractionType } from '../utils/BrowserConstants.js';\nimport { ClientApplication } from './ClientApplication.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { SilentCacheClient } from '../interaction_client/SilentCacheClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nvar PublicClientApplication = /** @class */ (function (_super) {\r\n __extends(PublicClientApplication, _super);\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n function PublicClientApplication(configuration) {\r\n var _this = _super.call(this, configuration) || this;\r\n _this.activeSilentTokenRequests = new Map();\r\n return _this;\r\n }\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n PublicClientApplication.prototype.loginRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n this.logger.verbose(\"loginRedirect called\");\r\n return [2 /*return*/, this.acquireTokenRedirect(request || DEFAULT_REQUEST)];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PublicClientApplication.prototype.loginPopup = function (request) {\r\n this.logger.verbose(\"loginPopup called\");\r\n return this.acquireTokenPopup(request || DEFAULT_REQUEST);\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var account, thumbprint, silentRequestKey, cachedResponse, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\", request.correlationId);\r\n account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n thumbprint = {\r\n clientId: this.config.auth.clientId,\r\n authority: request.authority || \"\",\r\n scopes: request.scopes,\r\n homeAccountIdentifier: account.homeAccountId,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshJwk: request.sshJwk,\r\n sshKid: request.sshKid\r\n };\r\n silentRequestKey = JSON.stringify(thumbprint);\r\n cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\r\n if (typeof cachedResponse === \"undefined\") {\r\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", request.correlationId);\r\n response = this.acquireTokenSilentAsync(request, account)\r\n .then(function (result) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n throw error;\r\n });\r\n this.activeSilentTokenRequests.set(silentRequestKey, response);\r\n return [2 /*return*/, response];\r\n }\r\n else {\r\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", request.correlationId);\r\n return [2 /*return*/, cachedResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\r\n * @param {@link (SilentRequest:type)}\r\n * @param {@link (AccountInfo:type)}\r\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse}\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilentAsync = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentCacheClient, silentRequest;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n silentCacheClient = new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, request.correlationId);\r\n silentRequest = silentCacheClient.initializeSilentRequest(request, account);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n return [2 /*return*/, silentCacheClient.acquireToken(silentRequest).catch(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var tokenRenewalResult, tokenRenewalError_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.acquireTokenByRefreshToken(silentRequest)];\r\n case 1:\r\n tokenRenewalResult = _a.sent();\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, tokenRenewalResult);\r\n return [2 /*return*/, tokenRenewalResult];\r\n case 2:\r\n tokenRenewalError_1 = _a.sent();\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError_1);\r\n throw tokenRenewalError_1;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n }); })];\r\n });\r\n });\r\n };\r\n return PublicClientApplication;\r\n}(ClientApplication));\n\nexport { PublicClientApplication };\n//# sourceMappingURL=PublicClientApplication.js.map\n","/*! @azure/msal-browser v2.19.0 2021-11-02 */\n'use strict';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\n\nexport { __assign, __awaiter, __extends, __generator, __read, __spread };\n//# sourceMappingURL=_tslib.js.map\n"],"sourceRoot":""}