@onairos/react-native 3.7.0 → 3.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/api/index.js +1 -1
- package/lib/commonjs/assets/icons/netflix.png +0 -0
- package/lib/commonjs/assets/images/netflix.png +0 -0
- package/lib/commonjs/components/BodyText.js +1 -1
- package/lib/commonjs/components/BrandMark.js +1 -1
- package/lib/commonjs/components/CodeInput.js +1 -1
- package/lib/commonjs/components/EmailInput.js +1 -1
- package/lib/commonjs/components/GoogleButton.js +1 -1
- package/lib/commonjs/components/HeadingGroup.js +1 -1
- package/lib/commonjs/components/LLMDataInputModal.js +1 -1
- package/lib/commonjs/components/ModalHeader.js +1 -1
- package/lib/commonjs/components/ModalSheet.js +1 -1
- package/lib/commonjs/components/Onairos.js +1 -1
- package/lib/commonjs/components/OnairosButton.js +1 -1
- package/lib/commonjs/components/OnairosSignInButton.js +1 -1
- package/lib/commonjs/components/Overlay.js +1 -1
- package/lib/commonjs/components/PersonaImage.js +1 -1
- package/lib/commonjs/components/PersonaLoadingScreen.js +1 -1
- package/lib/commonjs/components/PersonalizationConsentScreen.js +1 -1
- package/lib/commonjs/components/PinCreationScreen.js +1 -1
- package/lib/commonjs/components/PinInput.js +1 -1
- package/lib/commonjs/components/PlatformConnectorsStep.js +1 -1
- package/lib/commonjs/components/PlatformList.js +1 -1
- package/lib/commonjs/components/PlatformToggle.js +1 -1
- package/lib/commonjs/components/PrimaryButton.js +1 -1
- package/lib/commonjs/components/SignInMatchAnimation.js +1 -1
- package/lib/commonjs/components/SignInStep.js +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +1 -1
- package/lib/commonjs/components/VerificationStep.js +1 -1
- package/lib/commonjs/components/WelcomeScreen.js +1 -1
- package/lib/commonjs/components/icons/Basicproficon.js +1 -1
- package/lib/commonjs/components/icons/Basicprofile.js +1 -1
- package/lib/commonjs/components/icons/Checkbox.js +1 -1
- package/lib/commonjs/components/icons/Checkmark.js +1 -1
- package/lib/commonjs/components/icons/Contentanalysis.js +1 -1
- package/lib/commonjs/components/icons/Contenticon.js +1 -1
- package/lib/commonjs/components/icons/EnochE.js +1 -1
- package/lib/commonjs/components/icons/Personalityicon.js +1 -1
- package/lib/commonjs/components/icons/Personalityprofile.js +1 -1
- package/lib/commonjs/components/icons/Personalitytraits.js +1 -1
- package/lib/commonjs/components/icons/Userpreferences.js +1 -1
- package/lib/commonjs/components/icons/index.js +1 -1
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1 -1
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +1 -1
- package/lib/commonjs/components/onboarding/PinInput.js +1 -1
- package/lib/commonjs/components/onboarding/PlatformConnector.js +1 -1
- package/lib/commonjs/config/api.js +1 -1
- package/lib/commonjs/constants/index.js +1 -1
- package/lib/commonjs/context/AuthContext.js +1 -1
- package/lib/commonjs/hooks/useConnectedAccounts.js +1 -1
- package/lib/commonjs/hooks/useConnections.js +1 -1
- package/lib/commonjs/hooks/useCredentials.js +1 -1
- package/lib/commonjs/hooks/useUserConnections.js +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/services/apiClient.js +1 -1
- package/lib/commonjs/services/biometricPinService.js +1 -1
- package/lib/commonjs/services/chatGPTConversationExtractor.js +1 -1
- package/lib/commonjs/services/chatGPTConversationService.js +1 -1
- package/lib/commonjs/services/claudeConversationExtractor.js +1 -1
- package/lib/commonjs/services/claudeConversationService.js +1 -1
- package/lib/commonjs/services/connectedAccountsService.js +1 -1
- package/lib/commonjs/services/googleAuthService.js +1 -1
- package/lib/commonjs/services/hingeDataExtractor.js +1 -1
- package/lib/commonjs/services/hingeDataService.js +1 -1
- package/lib/commonjs/services/imageCompressionService.js +1 -1
- package/lib/commonjs/services/instagramDataExtractor.js +1 -1
- package/lib/commonjs/services/instagramDataService.js +1 -1
- package/lib/commonjs/services/jwtStorageService.js +1 -1
- package/lib/commonjs/services/linkedinDOMExtractor.js +1 -1
- package/lib/commonjs/services/linkedinProfileService.js +1 -1
- package/lib/commonjs/services/linkedinScrapingService.js +1 -1
- package/lib/commonjs/services/llmDataStorage.js +1 -1
- package/lib/commonjs/services/mobileTrainingService.js +1 -1
- package/lib/commonjs/services/netflixDataExtractor.js +1 -1
- package/lib/commonjs/services/netflixDataService.js +1 -1
- package/lib/commonjs/services/pinEncryptionService.js +1 -1
- package/lib/commonjs/services/pinStorageUtils.js +1 -1
- package/lib/commonjs/services/platformAuthService.js +1 -1
- package/lib/commonjs/services/sephoraDataExtractor.js +1 -1
- package/lib/commonjs/services/sephoraDataService.js +1 -1
- package/lib/commonjs/services/spotifyDataExtractor.js +1 -1
- package/lib/commonjs/services/spotifyDataService.js +1 -1
- package/lib/commonjs/services/storageService.js +1 -1
- package/lib/commonjs/services/telegramDataExtractor.js +1 -1
- package/lib/commonjs/services/telegramDataService.js +1 -1
- package/lib/commonjs/services/trainingApiHelpers.js +1 -1
- package/lib/commonjs/services/userConnectionsService.js +1 -1
- package/lib/commonjs/services/youtubeMigrationService.js +1 -1
- package/lib/commonjs/theme/index.js +1 -1
- package/lib/commonjs/types/index.js +1 -1
- package/lib/commonjs/types.js +1 -1
- package/lib/commonjs/utils/Portal.js +1 -1
- package/lib/commonjs/utils/api.js +1 -1
- package/lib/commonjs/utils/assetRegistry.js +1 -1
- package/lib/commonjs/utils/auth.js +1 -1
- package/lib/commonjs/utils/connectorTests.js +1 -1
- package/lib/commonjs/utils/crypto.js +1 -1
- package/lib/commonjs/utils/debugHelper.js +1 -1
- package/lib/commonjs/utils/encryption.js +1 -1
- package/lib/commonjs/utils/eventUtils.js +1 -1
- package/lib/commonjs/utils/haptics.js +1 -1
- package/lib/commonjs/utils/imagePreloader.js +1 -1
- package/lib/commonjs/utils/networkDiagnostics.js +1 -1
- package/lib/commonjs/utils/onairosApi.js +1 -1
- package/lib/commonjs/utils/programmaticFlow.js +1 -1
- package/lib/commonjs/utils/retryHelper.js +1 -1
- package/lib/commonjs/utils/secureStorage.js +1 -1
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +1 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +1 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +1 -1
- package/lib/commonjs/utils/webviewScripts/index.js +1 -1
- package/lib/commonjs/utils/webviewScripts/instagram.js +1 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +1 -1
- package/lib/commonjs/utils/webviewScripts/netflix.js +1 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +1 -1
- package/lib/commonjs/utils/webviewScripts/spotify.js +1 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +1 -1
- package/lib/module/api/index.js +1 -1
- package/lib/module/assets/icons/netflix.png +0 -0
- package/lib/module/assets/images/netflix.png +0 -0
- package/lib/module/components/BodyText.js +1 -1
- package/lib/module/components/BrandMark.js +1 -1
- package/lib/module/components/CodeInput.js +1 -1
- package/lib/module/components/EmailInput.js +1 -1
- package/lib/module/components/GoogleButton.js +1 -1
- package/lib/module/components/HeadingGroup.js +1 -1
- package/lib/module/components/LLMDataInputModal.js +1 -1
- package/lib/module/components/ModalHeader.js +1 -1
- package/lib/module/components/ModalSheet.js +1 -1
- package/lib/module/components/Onairos.js +1 -1
- package/lib/module/components/OnairosButton.js +1 -1
- package/lib/module/components/OnairosSignInButton.js +1 -1
- package/lib/module/components/Overlay.js +1 -1
- package/lib/module/components/PersonaImage.js +1 -1
- package/lib/module/components/PersonaLoadingScreen.js +1 -1
- package/lib/module/components/PersonalizationConsentScreen.js +1 -1
- package/lib/module/components/PinCreationScreen.js +1 -1
- package/lib/module/components/PinInput.js +1 -1
- package/lib/module/components/PlatformConnectorsStep.js +1 -1
- package/lib/module/components/PlatformList.js +1 -1
- package/lib/module/components/PlatformToggle.js +1 -1
- package/lib/module/components/PrimaryButton.js +1 -1
- package/lib/module/components/SignInMatchAnimation.js +1 -1
- package/lib/module/components/SignInStep.js +1 -1
- package/lib/module/components/UniversalOnboarding.js +1 -1
- package/lib/module/components/VerificationStep.js +1 -1
- package/lib/module/components/WelcomeScreen.js +1 -1
- package/lib/module/components/icons/Basicproficon.js +1 -1
- package/lib/module/components/icons/Basicprofile.js +1 -1
- package/lib/module/components/icons/Checkbox.js +1 -1
- package/lib/module/components/icons/Checkmark.js +1 -1
- package/lib/module/components/icons/Contentanalysis.js +1 -1
- package/lib/module/components/icons/Contenticon.js +1 -1
- package/lib/module/components/icons/EnochE.js +1 -1
- package/lib/module/components/icons/Personalityicon.js +1 -1
- package/lib/module/components/icons/Personalityprofile.js +1 -1
- package/lib/module/components/icons/Personalitytraits.js +1 -1
- package/lib/module/components/icons/Userpreferences.js +1 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +1 -1
- package/lib/module/components/onboarding/PinInput.js +1 -1
- package/lib/module/components/onboarding/PlatformConnector.js +1 -1
- package/lib/module/config/api.js +1 -1
- package/lib/module/constants/index.js +1 -1
- package/lib/module/context/AuthContext.js +1 -1
- package/lib/module/hooks/useConnectedAccounts.js +1 -1
- package/lib/module/hooks/useConnections.js +1 -1
- package/lib/module/hooks/useCredentials.js +1 -1
- package/lib/module/hooks/useUserConnections.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/services/apiClient.js +1 -1
- package/lib/module/services/biometricPinService.js +1 -1
- package/lib/module/services/chatGPTConversationExtractor.js +1 -1
- package/lib/module/services/chatGPTConversationService.js +1 -1
- package/lib/module/services/claudeConversationExtractor.js +1 -1
- package/lib/module/services/claudeConversationService.js +1 -1
- package/lib/module/services/connectedAccountsService.js +1 -1
- package/lib/module/services/googleAuthService.js +1 -1
- package/lib/module/services/hingeDataExtractor.js +1 -1
- package/lib/module/services/hingeDataService.js +1 -1
- package/lib/module/services/imageCompressionService.js +1 -1
- package/lib/module/services/instagramDataExtractor.js +1 -1
- package/lib/module/services/instagramDataService.js +1 -1
- package/lib/module/services/jwtStorageService.js +1 -1
- package/lib/module/services/linkedinDOMExtractor.js +1 -1
- package/lib/module/services/linkedinProfileService.js +1 -1
- package/lib/module/services/linkedinScrapingService.js +1 -1
- package/lib/module/services/llmDataStorage.js +1 -1
- package/lib/module/services/mobileTrainingService.js +1 -1
- package/lib/module/services/netflixDataExtractor.js +1 -1
- package/lib/module/services/netflixDataService.js +1 -1
- package/lib/module/services/pinEncryptionService.js +1 -1
- package/lib/module/services/pinStorageUtils.js +1 -1
- package/lib/module/services/platformAuthService.js +1 -1
- package/lib/module/services/sephoraDataExtractor.js +1 -1
- package/lib/module/services/sephoraDataService.js +1 -1
- package/lib/module/services/spotifyDataExtractor.js +1 -1
- package/lib/module/services/spotifyDataService.js +1 -1
- package/lib/module/services/storageService.js +1 -1
- package/lib/module/services/telegramDataExtractor.js +1 -1
- package/lib/module/services/telegramDataService.js +1 -1
- package/lib/module/services/trainingApiHelpers.js +1 -1
- package/lib/module/services/userConnectionsService.js +1 -1
- package/lib/module/services/youtubeMigrationService.js +1 -1
- package/lib/module/theme/index.js +1 -1
- package/lib/module/types.js +1 -1
- package/lib/module/utils/Portal.js +1 -1
- package/lib/module/utils/api.js +1 -1
- package/lib/module/utils/assetRegistry.js +1 -1
- package/lib/module/utils/auth.js +1 -1
- package/lib/module/utils/connectorTests.js +1 -1
- package/lib/module/utils/crypto.js +1 -1
- package/lib/module/utils/debugHelper.js +1 -1
- package/lib/module/utils/encryption.js +1 -1
- package/lib/module/utils/eventUtils.js +1 -1
- package/lib/module/utils/haptics.js +1 -1
- package/lib/module/utils/networkDiagnostics.js +1 -1
- package/lib/module/utils/onairosApi.js +1 -1
- package/lib/module/utils/programmaticFlow.js +1 -1
- package/lib/module/utils/retryHelper.js +1 -1
- package/lib/module/utils/secureStorage.js +1 -1
- package/lib/module/utils/webviewScripts/chatgpt.js +1 -1
- package/lib/module/utils/webviewScripts/claude.js +1 -1
- package/lib/module/utils/webviewScripts/hinge.js +1 -1
- package/lib/module/utils/webviewScripts/index.js +1 -1
- package/lib/module/utils/webviewScripts/instagram.js +1 -1
- package/lib/module/utils/webviewScripts/linkedin.js +1 -1
- package/lib/module/utils/webviewScripts/netflix.js +1 -1
- package/lib/module/utils/webviewScripts/sephora.js +1 -1
- package/lib/module/utils/webviewScripts/spotify.js +1 -1
- package/lib/module/utils/webviewScripts/telegram.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import NetInfo from'@react-native-community/netinfo';import{logDebug}from'./debugHelper';import{getJWT,makeUserRequest,makeDeveloperRequest,isUserAuthenticated,extractUsernameFromJWT}from'../services/apiKeyService';export class ApiError extends Error{constructor(_0x4634c8,_0x1a3f21,_0x23b197,_0x3c5755){const _0x18be7a={'CsBwI':_0x4b14(0x0),'SkHyh':_0x4b14(0x1)},_0x451e82=_0x18be7a[_0x4b14(0x2)][_0x4b14(0x3)]('|');let _0x30576e=0x0;while(!![]){switch(_0x451e82[_0x30576e++]){case'0':this[_0x4b14(0x4)]=_0x23b197;continue;case'1':super(_0x4634c8);continue;case'2':this[_0x4b14(0x5)]=_0x1a3f21;continue;case'3':this[_0x4b14(0x6)]=_0x18be7a[_0x4b14(0x7)];continue;case'4':this[_0x4b14(0x8)]=_0x3c5755;continue;}break;}}}const checkNetworkConnection=async()=>{const _0x46901a={'bFhzI':function(_0x58aab9,_0x509c96){return _0x58aab9===_0x509c96;}},_0x353539=await NetInfo[_0x4b14(0x9)]();return _0x46901a[_0x4b14(0xa)](_0x353539[_0x4b14(0xb)],!![]);},makeUserApiRequest=async(_0x1e235c,_0x2dbd57,_0x176433={})=>{const _0x2ab911={'OIvVv':function(_0xfa0410,_0x543829,_0x5c3ac0,_0x5167c4){return _0xfa0410(_0x543829,_0x5c3ac0,_0x5167c4);},'jjpNC':function(_0x4c1502,_0xc1677e,_0x3861ef){return _0x4c1502(_0xc1677e,_0x3861ef);},'YEvun':_0x4b14(0xc),'UZYWR':_0x4b14(0xd),'OJXYK':_0x4b14(0xe),'GPqYG':function(_0x1b3aae){return _0x1b3aae();},'VYPUL':function(_0x2d59dc,_0x25f788){return _0x2d59dc!==_0x25f788;},'yWAYv':_0x4b14(0xf),'GoOIc':_0x4b14(0x10),'pBhnB':'User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','Nfrnq':_0x4b14(0x11),'yHKgA':function(_0x17ad9a,_0x29768d,_0x50cfcf){return _0x17ad9a(_0x29768d,_0x50cfcf);},'gOZXS':_0x4b14(0x12),'tuOVU':'[REDACTED]','DVIPV':function(_0x3b9485,_0x2740b0,_0x249f76){return _0x3b9485(_0x2740b0,_0x249f76);},'KYpIo':function(_0x4cfa76,_0xf0f83a,_0x4fa263){return _0x4cfa76(_0xf0f83a,_0x4fa263);},'MFqyx':_0x4b14(0x13),'IRTkw':function(_0x146aa2,_0x271420){return _0x146aa2===_0x271420;},'ItAgL':function(_0x32673e,_0xd3873b){return _0x32673e===_0xd3873b;},'tdMmI':function(_0x47928f,_0x5ed819){return _0x47928f>=_0x5ed819;},'vmXbf':function(_0x88cd5,_0x40b183){return _0x88cd5===_0x40b183;},'otzgC':'API\x20request\x20failed','WCvEN':function(_0x4f1899,_0x4e9092){return _0x4f1899===_0x4e9092;},'EReuW':function(_0x2e9408,_0x3395d4){return _0x2e9408===_0x3395d4;},'KTsUr':function(_0x933d1e,_0x411f25){return _0x933d1e===_0x411f25;},'NBKBo':function(_0x55c393,_0x251934){return _0x55c393 instanceof _0x251934;},'cClgJ':function(_0x58635b,_0x74f144){return _0x58635b===_0x74f144;},'DAfJt':_0x4b14(0x14),'EUcyW':_0x4b14(0x15),'BvUfZ':'AbortError','CEuMU':function(_0x175ab1,_0x57324e){return _0x175ab1!==_0x57324e;},'PgYNd':_0x4b14(0x16),'WJxoF':'Unknown\x20error','NbTRj':_0x4b14(0x17),'ADBtV':'unknown_error'},{data:_0x4645ab,headers:headers={},debug:debug=![]}=_0x176433;try{const _0x33ac52=await checkNetworkConnection();if(!_0x33ac52)throw new ApiError(_0x2ab911['UZYWR'],_0x2ab911[_0x4b14(0x18)]);if(!_0x2ab911['GPqYG'](isUserAuthenticated)){if(_0x2ab911[_0x4b14(0x19)](_0x2ab911['yWAYv'],_0x2ab911[_0x4b14(0x1a)]))throw new ApiError(_0x2ab911[_0x4b14(0x1b)],_0x2ab911[_0x4b14(0x1c)]);else return _0x2ab911[_0x4b14(0x1d)](_0x2856e2,_0x4b14(0x1e)+_0x52c9eb+'/data','GET',{'debug':_0x334d8f[_0x4b14(0x1f)]});}debug&&_0x2ab911[_0x4b14(0x20)](logDebug,_0x2ab911[_0x4b14(0x21)],{'endpoint':_0x1e235c,'method':_0x2dbd57,'headers':{...headers,'Authorization':_0x2ab911[_0x4b14(0x22)]},'data':_0x4645ab||null});const _0x12ea29=await _0x2ab911[_0x4b14(0x23)](makeUserRequest,_0x1e235c,{'method':_0x2dbd57,'headers':headers,..._0x4645ab?{'body':JSON[_0x4b14(0x24)](_0x4645ab)}:{}}),_0x58333=await _0x12ea29[_0x4b14(0x25)]();debug&&_0x2ab911[_0x4b14(0x26)](logDebug,_0x2ab911[_0x4b14(0x27)],{'status':_0x12ea29['status'],'data':_0x58333});if(!_0x12ea29['ok']){var _0x1cc0ab,_0x42ae91,_0x526725;const _0x377c82=_0x2ab911[_0x4b14(0x28)](_0x12ea29['status'],0x191)||_0x2ab911[_0x4b14(0x29)](_0x12ea29[_0x4b14(0x2a)],0x193)?_0x2ab911[_0x4b14(0x1c)]:_0x2ab911[_0x4b14(0x28)](_0x12ea29[_0x4b14(0x2a)],0x190)?'validation_error':_0x2ab911[_0x4b14(0x2b)](_0x12ea29['status'],0x1f4)?_0x4b14(0x2c):_0x4b14(0x2d);throw new ApiError((_0x2ab911[_0x4b14(0x28)](_0x1cc0ab=_0x58333['error'],null)||_0x2ab911[_0x4b14(0x2e)](_0x1cc0ab,void 0x0)?void 0x0:_0x1cc0ab[_0x4b14(0x2f)])||_0x2ab911[_0x4b14(0x30)],_0x377c82,_0x2ab911[_0x4b14(0x2e)](_0x42ae91=_0x58333[_0x4b14(0x31)],null)||_0x2ab911[_0x4b14(0x32)](_0x42ae91,void 0x0)?void 0x0:_0x42ae91[_0x4b14(0x4)],_0x2ab911[_0x4b14(0x33)](_0x526725=_0x58333['error'],null)||_0x2ab911[_0x4b14(0x34)](_0x526725,void 0x0)?void 0x0:_0x526725[_0x4b14(0x8)]);}return _0x58333;}catch(_0x1c46da){if(_0x2ab911[_0x4b14(0x35)](_0x1c46da,ApiError)){if(_0x2ab911[_0x4b14(0x36)](_0x2ab911[_0x4b14(0x37)],_0x2ab911[_0x4b14(0x38)]))_0x2ab911[_0x4b14(0x39)](_0x239864,_0x2ab911[_0x4b14(0x3a)],{'status':_0x3d1e4e[_0x4b14(0x2a)],'data':_0x29851a});else throw _0x1c46da;}if(_0x2ab911[_0x4b14(0x29)](_0x1c46da[_0x4b14(0x6)],_0x2ab911[_0x4b14(0x3b)])){if(_0x2ab911[_0x4b14(0x3c)](_0x4b14(0x3d),'ahUzp'))throw new _0x2ff280(_0x2ab911[_0x4b14(0x3e)],_0x2ab911[_0x4b14(0x18)]);else throw new ApiError(_0x2ab911[_0x4b14(0x3f)],_0x4b14(0x40));}debug&&_0x2ab911['jjpNC'](logDebug,'User\x20API\x20Error',{'endpoint':_0x1e235c,'method':_0x2dbd57,'error':_0x1c46da[_0x4b14(0x2f)]||_0x2ab911[_0x4b14(0x41)]});throw new ApiError(_0x1c46da[_0x4b14(0x2f)]||_0x2ab911[_0x4b14(0x42)],_0x2ab911[_0x4b14(0x43)]);}},makeDeveloperApiRequest=async(_0x41bec6,_0x432ad6,_0x47a95e={})=>{const _0x2cc492={'Dskwv':function(_0x32f590,_0x1248dc,_0x432317){return _0x32f590(_0x1248dc,_0x432317);},'whaVn':function(_0x4d3f09,_0x2b99a2,_0x4c75a4){return _0x4d3f09(_0x2b99a2,_0x4c75a4);},'csbup':_0x4b14(0x12),'PXNXF':'[REDACTED]','BtyiS':function(_0x87598b,_0x59d448){return _0x87598b||_0x59d448;},'FvFbd':function(_0x4e9eb7){return _0x4e9eb7();},'JSuhA':_0x4b14(0xd),'nBqsU':_0x4b14(0xe),'IlaRz':function(_0x1f3a5e,_0x101fea,_0x5f0408){return _0x1f3a5e(_0x101fea,_0x5f0408);},'oeYcS':function(_0x297494,_0xc99b47,_0x232c1e){return _0x297494(_0xc99b47,_0x232c1e);},'vANEx':_0x4b14(0xc),'BrcGy':function(_0x5de54b,_0x21ee02){return _0x5de54b===_0x21ee02;},'orwuH':_0x4b14(0x44),'ItDao':function(_0x1edce4,_0x4ac23d){return _0x1edce4>=_0x4ac23d;},'Kswjy':_0x4b14(0x2c),'KfIBX':_0x4b14(0x2d),'jliDt':function(_0x1ff0e1,_0x1268c5){return _0x1ff0e1===_0x1268c5;},'SHEeq':_0x4b14(0x45),'MGWHe':function(_0x8cf794,_0x2cdb5a){return _0x8cf794===_0x2cdb5a;},'iBdhy':function(_0x13347f,_0x499e48){return _0x13347f===_0x499e48;},'Cixpc':_0x4b14(0x46),'RtsIG':_0x4b14(0x47),'qRyFL':function(_0x20a82b,_0x1b17a8){return _0x20a82b instanceof _0x1b17a8;},'ErSOo':_0x4b14(0x48),'DhXXR':function(_0x342e88,_0x52fc7b){return _0x342e88===_0x52fc7b;},'EWOnu':'qvgeq','IXyGn':_0x4b14(0x16),'dzqEz':'timeout_error','FGUde':_0x4b14(0x49),'tbYLq':'Unknown\x20error','SNihv':_0x4b14(0x17)},{data:_0x42fb52,headers:headers={},debug:debug=![]}=_0x47a95e;try{const _0x105497=await _0x2cc492['FvFbd'](checkNetworkConnection);if(!_0x105497)throw new ApiError(_0x2cc492[_0x4b14(0x4a)],_0x2cc492[_0x4b14(0x4b)]);debug&&_0x2cc492['IlaRz'](logDebug,_0x4b14(0x4c),{'endpoint':_0x41bec6,'method':_0x432ad6,'headers':{...headers,'Authorization':_0x2cc492['PXNXF']},'data':_0x42fb52||null});const _0x581e98=await _0x2cc492[_0x4b14(0x4d)](makeDeveloperRequest,_0x41bec6,{'method':_0x432ad6,'headers':headers,..._0x42fb52?{'body':JSON['stringify'](_0x42fb52)}:{}}),_0x16b2c5=await _0x581e98[_0x4b14(0x25)]();debug&&_0x2cc492[_0x4b14(0x4e)](logDebug,_0x2cc492[_0x4b14(0x4f)],{'status':_0x581e98[_0x4b14(0x2a)],'data':_0x16b2c5});if(!_0x581e98['ok']){var _0x39993b,_0x5f312c,_0x25b55d;const _0x11edd3=_0x581e98['status']===0x191||_0x581e98['status']===0x193?_0x4b14(0x11):_0x2cc492['BrcGy'](_0x581e98[_0x4b14(0x2a)],0x190)?_0x2cc492[_0x4b14(0x50)]:_0x2cc492['ItDao'](_0x581e98[_0x4b14(0x2a)],0x1f4)?_0x2cc492[_0x4b14(0x51)]:_0x2cc492[_0x4b14(0x52)];throw new ApiError((_0x2cc492['BrcGy'](_0x39993b=_0x16b2c5[_0x4b14(0x31)],null)||_0x2cc492['jliDt'](_0x39993b,void 0x0)?void 0x0:_0x39993b['message'])||_0x2cc492[_0x4b14(0x53)],_0x11edd3,_0x2cc492[_0x4b14(0x54)](_0x5f312c=_0x16b2c5['error'],null)||_0x2cc492['MGWHe'](_0x5f312c,void 0x0)?void 0x0:_0x5f312c[_0x4b14(0x4)],_0x2cc492[_0x4b14(0x55)](_0x25b55d=_0x16b2c5[_0x4b14(0x31)],null)||_0x2cc492[_0x4b14(0x56)](_0x25b55d,void 0x0)?void 0x0:_0x25b55d[_0x4b14(0x8)]);}return _0x16b2c5;}catch(_0x5dab9b){if(_0x2cc492[_0x4b14(0x55)](_0x2cc492[_0x4b14(0x57)],_0x2cc492[_0x4b14(0x58)]))throw _0x25283b;else{if(_0x2cc492[_0x4b14(0x59)](_0x5dab9b,ApiError)){if(_0x2cc492[_0x4b14(0x5a)]!==_0x4b14(0x5b))throw _0x5dab9b;else _0x2cc492[_0x4b14(0x4e)](_0xbc9e3,_0x4b14(0x13),{'status':_0x5acb6e[_0x4b14(0x2a)],'data':_0xb8a318});}if(_0x2cc492[_0x4b14(0x54)](_0x5dab9b[_0x4b14(0x6)],'AbortError')){if(_0x2cc492[_0x4b14(0x5c)]('qvgeq',_0x2cc492['EWOnu']))throw new ApiError(_0x2cc492[_0x4b14(0x5d)],_0x2cc492[_0x4b14(0x5e)]);else _0x2cc492[_0x4b14(0x5f)](_0x21b59b,_0x2cc492[_0x4b14(0x60)],{'endpoint':_0x11251e,'method':_0x83646b,'headers':{..._0x3895e9,'Authorization':_0x2cc492[_0x4b14(0x61)]},'data':_0x2cc492[_0x4b14(0x62)](_0x1f3777,null)});}debug&&logDebug(_0x2cc492[_0x4b14(0x63)],{'endpoint':_0x41bec6,'method':_0x432ad6,'error':_0x5dab9b[_0x4b14(0x2f)]||_0x2cc492[_0x4b14(0x64)]});throw new ApiError(_0x5dab9b['message']||_0x2cc492[_0x4b14(0x65)],_0x2cc492[_0x4b14(0x52)]);}}};function _0x4b14(_0x195e4a,_0x4b1416){_0x195e4a=_0x195e4a-0x0;const _0x4df9af=_0x195e();let _0x799b28=_0x4df9af[_0x195e4a];return _0x799b28;}export const validateCredentials=async(_0x3d75e0,_0x26e76a={'debug':![]})=>{const _0xb77e55={'DwlhK':function(_0x1b0f99,_0x2d6458){return _0x1b0f99===_0x2d6458;}};try{var _0x5137ce,_0x1b61a7;const _0x3ae98c=await makeUserApiRequest('auth/validate','POST',{'data':{'username':_0x3d75e0},'debug':_0x26e76a[_0x4b14(0x1f)]});return{'isValid':_0x3ae98c[_0x4b14(0x66)]&&_0xb77e55['DwlhK']((_0x5137ce=_0x3ae98c[_0x4b14(0x67)])===null||_0xb77e55[_0x4b14(0x68)](_0x5137ce,void 0x0)?void 0x0:_0x5137ce[_0x4b14(0x69)],!![]),'message':_0xb77e55[_0x4b14(0x68)](_0x1b61a7=_0x3ae98c[_0x4b14(0x31)],null)||_0x1b61a7===void 0x0?void 0x0:_0x1b61a7[_0x4b14(0x2f)]};}catch(_0x368a35){return{'isValid':![],'message':_0x368a35[_0x4b14(0x2f)]};}};export const createAccount=async(_0x1d0eec,_0xb25a1b={'debug':![]})=>{const _0x58ebbb={'zdspc':function(_0x3e0d06,_0x262ea4,_0x2e32c6,_0x4b97a1){return _0x3e0d06(_0x262ea4,_0x2e32c6,_0x4b97a1);}};return _0x58ebbb[_0x4b14(0x6a)](makeDeveloperApiRequest,_0x4b14(0x6b),'POST',{'data':{'username':_0x1d0eec['username'],'platforms':_0x1d0eec['platforms']},'debug':_0xb25a1b[_0x4b14(0x1f)]});};function _0x195e(){const _0x120689=['1|2|0|4|3','ApiError','CsBwI','split','code','type','name','SkHyh','details','fetch','bFhzI','isConnected','Developer\x20API\x20Response','No\x20network\x20connection\x20available','network_error','PoyZf','CSYeC','auth_error','User\x20API\x20Request','User\x20API\x20Response','voAel','CPJOm','Request\x20timed\x20out','An\x20unexpected\x20error\x20occurred','OJXYK','VYPUL','GoOIc','pBhnB','Nfrnq','OIvVv','platforms/','debug','yHKgA','gOZXS','tuOVU','DVIPV','stringify','json','KYpIo','MFqyx','IRTkw','ItAgL','status','tdMmI','server_error','unknown_error','vmXbf','message','otzgC','error','WCvEN','EReuW','KTsUr','NBKBo','cClgJ','DAfJt','EUcyW','jjpNC','YEvun','BvUfZ','CEuMU','ahUzp','UZYWR','PgYNd','timeout_error','WJxoF','NbTRj','ADBtV','validation_error','API\x20request\x20failed','niSob','AKLDW','gGnir','Developer\x20API\x20Error','JSuhA','nBqsU','Developer\x20API\x20Request','oeYcS','Dskwv','vANEx','orwuH','Kswjy','KfIBX','SHEeq','MGWHe','BrcGy','iBdhy','Cixpc','RtsIG','qRyFL','ErSOo','dbZgP','DhXXR','IXyGn','dzqEz','whaVn','csbup','PXNXF','BtyiS','FGUde','tbYLq','SNihv','success','data','DwlhK','isValid','zdspc','auth/register','auth/login','WCJog','username','dzkRY','auth/refresh','xRXVb','/data','user/profile','NWwak','fpuSn','Unknown\x20error','cXRoE','GSuPh','No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','nUkqO','QrGBl','BoilC','SbDIC','GETpn','AbortError','tUvbX','fRtCu','ApTtl','tQBoL','store-pin/mobile','wDNfh','hIXEK'];_0x195e=function(){return _0x120689;};return _0x195e();}export const authenticate=async(_0x50adcc,_0x5251f5={'debug':![]})=>{const _0x11d4e5={'WCJog':function(_0xc63452,_0x12fe4e,_0x25bc8d,_0x3d7d4d){return _0xc63452(_0x12fe4e,_0x25bc8d,_0x3d7d4d);},'AeJeL':_0x4b14(0x6c)};return _0x11d4e5[_0x4b14(0x6d)](makeUserApiRequest,_0x11d4e5['AeJeL'],'POST',{'data':{'username':_0x50adcc[_0x4b14(0x6e)],'pin':_0x50adcc['userPin']},'debug':_0x5251f5[_0x4b14(0x1f)]});};export const refreshToken=async(_0x27088d,_0x138ac7={'debug':![]})=>{const _0x47c2d8={'dzkRY':function(_0x2c1e66,_0xd5c22d,_0x12c095,_0x51e701){return _0x2c1e66(_0xd5c22d,_0x12c095,_0x51e701);}};return _0x47c2d8[_0x4b14(0x6f)](makeUserApiRequest,_0x4b14(0x70),'POST',{'data':{'refreshToken':_0x27088d},'debug':_0x138ac7['debug']});};export const getPlatformData=async(_0x3f8418,_0x4d19e6={'debug':![]})=>{const _0x28dafe={'xRXVb':function(_0x364142,_0x53ce9e,_0x4ea53b,_0x1aabc7){return _0x364142(_0x53ce9e,_0x4ea53b,_0x1aabc7);}};return _0x28dafe[_0x4b14(0x71)](makeUserApiRequest,_0x4b14(0x1e)+_0x3f8418+_0x4b14(0x72),'GET',{'debug':_0x4d19e6['debug']});};export const getUserProfile=async(_0x219573={'debug':![]})=>{const _0x581bdb={'NWwak':_0x4b14(0x73)};return makeUserApiRequest(_0x581bdb[_0x4b14(0x74)],'GET',{'debug':_0x219573['debug']});};export const updatePlatformConnections=async(_0x48086e,_0x1989e4={'debug':![]})=>{const _0x4eeed6={'fpuSn':'user/platforms'};return makeUserApiRequest(_0x4eeed6[_0x4b14(0x75)],'PUT',{'data':{'platforms':_0x48086e},'debug':_0x1989e4[_0x4b14(0x1f)]});};export const storePIN=async(_0x240de5,_0x313fe2={})=>{const _0x252f31={'GETpn':function(_0x2eacee,_0xe312b){return _0x2eacee instanceof _0xe312b;},'FMbRw':function(_0x4035a1,_0x4ca262){return _0x4035a1===_0x4ca262;},'tUvbX':_0x4b14(0x40),'fRtCu':function(_0x298b70,_0x357f51,_0x50fb14){return _0x298b70(_0x357f51,_0x50fb14);},'nUANK':'User\x20API\x20Error','ApTtl':_0x4b14(0x76),'tQBoL':_0x4b14(0x2d),'nUkqO':function(_0x105727){return _0x105727();},'QrGBl':function(_0x4416c6,_0x453482){return _0x4416c6!==_0x453482;},'IoXvt':_0x4b14(0x77),'BoilC':_0x4b14(0x78),'SbDIC':_0x4b14(0x79),'cjSdO':function(_0x573bb8,_0x2098b,_0x3de170,_0x56d31c){return _0x573bb8(_0x2098b,_0x3de170,_0x56d31c);}},{debug:debug=![],username:_0x332b9b}=_0x313fe2,_0x37b301=_0x332b9b||_0x252f31[_0x4b14(0x7a)](extractUsernameFromJWT);if(!_0x37b301){if(_0x252f31[_0x4b14(0x7b)](_0x252f31['IoXvt'],_0x252f31[_0x4b14(0x7c)]))throw new ApiError(_0x252f31[_0x4b14(0x7d)],_0x4b14(0x11));else{if(_0x252f31[_0x4b14(0x7e)](_0x229809,_0x611c3a))throw _0x3938f3;if(_0x252f31['FMbRw'](_0x2fe435[_0x4b14(0x6)],_0x4b14(0x7f)))throw new _0x30af72(_0x4b14(0x16),_0x252f31[_0x4b14(0x80)]);_0x346f50&&_0x252f31[_0x4b14(0x81)](_0x40d9f4,_0x252f31['nUANK'],{'endpoint':_0x1ee460,'method':_0x6537ae,'error':_0x2e4d07[_0x4b14(0x2f)]||_0x252f31[_0x4b14(0x82)]});throw new _0xada78e(_0x3c8535[_0x4b14(0x2f)]||_0x4b14(0x17),_0x252f31[_0x4b14(0x83)]);}}return _0x252f31['cjSdO'](makeUserApiRequest,_0x4b14(0x84),'POST',{'data':{'username':_0x37b301,'pin':_0x240de5},'debug':debug});};export const getCurrentUserToken=async()=>{const _0x50d438={'wDNfh':function(_0x23008e){return _0x23008e();}};return await _0x50d438[_0x4b14(0x85)](getJWT);};export const isCurrentUserAuthenticated=()=>{const _0x1460b0={'hIXEK':function(_0x51d644){return _0x51d644();}};return _0x1460b0[_0x4b14(0x86)](isUserAuthenticated);};
|
|
1
|
+
import NetInfo from'@react-native-community/netinfo';import{logDebug}from'./debugHelper';import{getJWT,makeUserRequest,makeDeveloperRequest,isUserAuthenticated,extractUsernameFromJWT}from'../services/apiKeyService';export class ApiError extends Error{constructor(_0x286b0a,_0x2e64d2,_0x5882fc,_0x27150b){const _0x29ca46={'QYsPr':_0x32b0(0x0)};super(_0x286b0a),this[_0x32b0(0x1)]=_0x2e64d2,this['code']=_0x5882fc,this[_0x32b0(0x2)]=_0x27150b,this['name']=_0x29ca46['QYsPr'];}}const checkNetworkConnection=async()=>{const _0x49e11f={'Pqnwa':function(_0x113baa,_0x1c8364){return _0x113baa===_0x1c8364;}},_0xbaa042=await NetInfo[_0x32b0(0x3)]();return _0x49e11f[_0x32b0(0x4)](_0xbaa042['isConnected'],!![]);},makeUserApiRequest=async(_0x4a8fb8,_0x3f19c3,_0x3efe5b={})=>{const _0x4a8684={'sSnOm':function(_0x15c7d5,_0x28cb45){return _0x15c7d5===_0x28cb45;},'PKAix':function(_0x5439e8,_0x41375e){return _0x5439e8===_0x41375e;},'UrUVb':_0x32b0(0x5),'JPOzc':function(_0x4f4a1e,_0x1bac46){return _0x4f4a1e>=_0x1bac46;},'uUQkn':_0x32b0(0x6),'ywOCz':_0x32b0(0x7),'bjRgH':function(_0x3bd84d,_0x5d18e9){return _0x3bd84d===_0x5d18e9;},'umUVB':_0x32b0(0x8),'sSata':function(_0x1ae6ec,_0x4e534b){return _0x1ae6ec===_0x4e534b;},'pjnYa':function(_0x3a2f15,_0x57e473){return _0x3a2f15===_0x57e473;},'SutLV':function(_0x35c272,_0x2cbb1f){return _0x35c272===_0x2cbb1f;},'wnkDw':function(_0x390e18,_0x371787,_0x253e48){return _0x390e18(_0x371787,_0x253e48);},'xAKuc':'User\x20API\x20Response','pKlpM':function(_0x53156b){return _0x53156b();},'OImpV':_0x32b0(0x9),'NMsNA':_0x32b0(0xa),'hEaNt':_0x32b0(0xb),'ZcnbX':_0x32b0(0xc),'fqdtZ':'[REDACTED]','ZYuVt':_0x32b0(0xd),'TxVli':function(_0x3ba4c2,_0xebc126){return _0x3ba4c2===_0xebc126;},'zZFzI':function(_0x2b687e,_0x187960){return _0x2b687e===_0x187960;},'vyKKw':function(_0x548dc,_0x2d55a0){return _0x548dc instanceof _0x2d55a0;},'GApPu':function(_0x17b0f8,_0x484438){return _0x17b0f8!==_0x484438;},'vWIQj':'xSmcq','HZlNo':_0x32b0(0xe),'qxaZJ':function(_0x192338,_0x184b18){return _0x192338===_0x184b18;},'PjpRt':_0x32b0(0xf),'hKfKb':_0x32b0(0x10),'CzzpD':_0x32b0(0x11)},{data:_0x30159d,headers:headers={},debug:debug=![]}=_0x3efe5b;try{const _0x2048f0=await _0x4a8684[_0x32b0(0x12)](checkNetworkConnection);if(!_0x2048f0)throw new ApiError(_0x4a8684['OImpV'],_0x4a8684[_0x32b0(0x13)]);if(!_0x4a8684['pKlpM'](isUserAuthenticated))throw new ApiError(_0x4a8684[_0x32b0(0x14)],_0x4a8684['ZcnbX']);debug&&_0x4a8684[_0x32b0(0x15)](logDebug,_0x32b0(0x16),{'endpoint':_0x4a8fb8,'method':_0x3f19c3,'headers':{...headers,'Authorization':_0x4a8684[_0x32b0(0x17)]},'data':_0x30159d||null});const _0x52a7c8=await makeUserRequest(_0x4a8fb8,{'method':_0x3f19c3,'headers':headers,..._0x30159d?{'body':JSON['stringify'](_0x30159d)}:{}}),_0x56f3ca=await _0x52a7c8[_0x32b0(0x18)]();debug&&logDebug(_0x4a8684['xAKuc'],{'status':_0x52a7c8[_0x32b0(0x19)],'data':_0x56f3ca});if(!_0x52a7c8['ok']){if(_0x4a8684[_0x32b0(0x1a)](_0x4a8684[_0x32b0(0x1b)],_0x4a8684[_0x32b0(0x1b)])){var _0x38d9fe,_0x119e16,_0x4073b6;const _0x5c61c1=_0x4a8684['sSata'](_0x52a7c8[_0x32b0(0x19)],0x191)||_0x4a8684[_0x32b0(0x1c)](_0x52a7c8['status'],0x193)?_0x32b0(0xc):_0x52a7c8[_0x32b0(0x19)]===0x190?_0x4a8684[_0x32b0(0x1d)]:_0x52a7c8['status']>=0x1f4?_0x32b0(0x6):_0x4a8684['ywOCz'];throw new ApiError((_0x4a8684['pjnYa'](_0x38d9fe=_0x56f3ca['error'],null)||_0x4a8684['PKAix'](_0x38d9fe,void 0x0)?void 0x0:_0x38d9fe['message'])||_0x32b0(0x8),_0x5c61c1,_0x4a8684['TxVli'](_0x119e16=_0x56f3ca[_0x32b0(0x1e)],null)||_0x119e16===void 0x0?void 0x0:_0x119e16[_0x32b0(0x1f)],(_0x4073b6=_0x56f3ca['error'])===null||_0x4a8684['zZFzI'](_0x4073b6,void 0x0)?void 0x0:_0x4073b6[_0x32b0(0x2)]);}else return _0x26b2c0();}return _0x56f3ca;}catch(_0x55de5f){if(_0x4a8684[_0x32b0(0x20)](_0x55de5f,ApiError)){if(_0x4a8684[_0x32b0(0x21)](_0x4a8684[_0x32b0(0x22)],_0x4a8684['HZlNo']))throw _0x55de5f;else{var _0x3543ae,_0xf7dcc9,_0x553f4d;const _0x41108d=_0x4a8684[_0x32b0(0x1a)](_0x5e118c['status'],0x191)||_0x4a8684[_0x32b0(0x1a)](_0x5d8c17['status'],0x193)?_0x32b0(0xc):_0x4a8684[_0x32b0(0x23)](_0x522044[_0x32b0(0x19)],0x190)?_0x4a8684[_0x32b0(0x1d)]:_0x4a8684[_0x32b0(0x24)](_0x29416e['status'],0x1f4)?_0x4a8684[_0x32b0(0x25)]:_0x4a8684['ywOCz'];throw new _0x56275f(((_0x3543ae=_0x59a046[_0x32b0(0x1e)])===null||_0x4a8684['bjRgH'](_0x3543ae,void 0x0)?void 0x0:_0x3543ae[_0x32b0(0x26)])||_0x4a8684['umUVB'],_0x41108d,_0x4a8684[_0x32b0(0x27)](_0xf7dcc9=_0x42f2a8['error'],null)||_0x4a8684[_0x32b0(0x1c)](_0xf7dcc9,void 0x0)?void 0x0:_0xf7dcc9[_0x32b0(0x1f)],_0x4a8684[_0x32b0(0x28)](_0x553f4d=_0x2d61e9[_0x32b0(0x1e)],null)||_0x4a8684[_0x32b0(0x29)](_0x553f4d,void 0x0)?void 0x0:_0x553f4d['details']);}}if(_0x4a8684[_0x32b0(0x2a)](_0x55de5f[_0x32b0(0x2b)],_0x32b0(0x2c)))throw new ApiError(_0x32b0(0x2d),_0x32b0(0x2e));debug&&(_0x4a8684[_0x32b0(0x21)](_0x32b0(0xf),_0x4a8684[_0x32b0(0x2f)])?_0x4a8684[_0x32b0(0x15)](_0x4f64e0,_0x4a8684[_0x32b0(0x30)],{'status':_0x538937['status'],'data':_0x5f53fc}):logDebug(_0x4a8684[_0x32b0(0x31)],{'endpoint':_0x4a8fb8,'method':_0x3f19c3,'error':_0x55de5f[_0x32b0(0x26)]||_0x32b0(0x32)}));throw new ApiError(_0x55de5f[_0x32b0(0x26)]||_0x4a8684[_0x32b0(0x33)],_0x4a8684[_0x32b0(0x34)]);}},makeDeveloperApiRequest=async(_0xd24597,_0x1140a9,_0xbf76e7={})=>{const _0x342f10={'GjpSo':function(_0x681c72,_0x33dcd4,_0x451b26,_0x2c6a7f){return _0x681c72(_0x33dcd4,_0x451b26,_0x2c6a7f);},'ilHmi':_0x32b0(0x35),'bGkqG':_0x32b0(0x36),'vFNxX':function(_0x3814f0,_0x295b9f,_0x1f5d93,_0x2c29ea){return _0x3814f0(_0x295b9f,_0x1f5d93,_0x2c29ea);},'BlwLC':function(_0x34bd5a){return _0x34bd5a();},'VfkBq':function(_0x22f04a,_0x29c0bc){return _0x22f04a===_0x29c0bc;},'XjCtd':_0x32b0(0x37),'MbLUm':_0x32b0(0x9),'abbuQ':function(_0x3842e7,_0x9e518f){return _0x3842e7!==_0x9e518f;},'dJPmR':_0x32b0(0x38),'nIXfc':_0x32b0(0x39),'Bzplr':'Developer\x20API\x20Request','WTjht':function(_0x332c44,_0x3a2e05){return _0x332c44||_0x3a2e05;},'CFpVr':function(_0x20c4e9,_0x486d47,_0x287eb1){return _0x20c4e9(_0x486d47,_0x287eb1);},'hBNep':function(_0x1e5c3c,_0x53920c,_0x14f391){return _0x1e5c3c(_0x53920c,_0x14f391);},'tVGOU':'auth_error','gzwLS':_0x32b0(0x6),'qVgpm':_0x32b0(0x7),'NdgRR':function(_0x49d628,_0x3cc483){return _0x49d628===_0x3cc483;},'BGheF':_0x32b0(0x8),'KfgeA':function(_0x364fc3,_0x3759e5){return _0x364fc3===_0x3759e5;},'ixmnk':function(_0x184422,_0x1307e7){return _0x184422===_0x1307e7;},'frCSd':function(_0x37f93a,_0x182bc6){return _0x37f93a instanceof _0x182bc6;},'HIScY':'AbortError','OaZEZ':'CXNEI','RVumX':'timeout_error','lXevZ':function(_0x58219b,_0x13b6c8,_0x46be97){return _0x58219b(_0x13b6c8,_0x46be97);},'HhLrq':_0x32b0(0x32),'zoGXs':_0x32b0(0x11)},{data:_0x339958,headers:headers={},debug:debug=![]}=_0xbf76e7;try{const _0x4aead0=await _0x342f10[_0x32b0(0x3a)](checkNetworkConnection);if(!_0x4aead0){if(_0x342f10[_0x32b0(0x3b)]('fXweT',_0x342f10['XjCtd']))throw new ApiError(_0x342f10[_0x32b0(0x3c)],_0x32b0(0xa));else return _0x342f10['GjpSo'](_0x3d61d6,_0x342f10[_0x32b0(0x3d)],'POST',{'data':{'username':_0xf6b68c[_0x32b0(0x3e)],'platforms':_0x3041f7[_0x32b0(0x3f)]},'debug':_0x15ef46['debug']});}if(debug){if(_0x342f10['abbuQ'](_0x342f10[_0x32b0(0x40)],_0x342f10[_0x32b0(0x41)]))logDebug(_0x342f10[_0x32b0(0x42)],{'endpoint':_0xd24597,'method':_0x1140a9,'headers':{...headers,'Authorization':_0x32b0(0x43)},'data':_0x342f10[_0x32b0(0x44)](_0x339958,null)});else return _0x342f10[_0x32b0(0x45)](_0x32ad91,_0x342f10[_0x32b0(0x46)],'PUT',{'data':{'platforms':_0x575631},'debug':_0x54e059[_0x32b0(0x47)]});}const _0x38af6a=await _0x342f10[_0x32b0(0x48)](makeDeveloperRequest,_0xd24597,{'method':_0x1140a9,'headers':headers,..._0x339958?{'body':JSON[_0x32b0(0x49)](_0x339958)}:{}}),_0x250828=await _0x38af6a[_0x32b0(0x18)]();debug&&_0x342f10[_0x32b0(0x4a)](logDebug,'Developer\x20API\x20Response',{'status':_0x38af6a[_0x32b0(0x19)],'data':_0x250828});if(!_0x38af6a['ok']){var _0x4cd289,_0x5da006,_0xd6ff38;const _0x25b3ee=_0x342f10[_0x32b0(0x3b)](_0x38af6a[_0x32b0(0x19)],0x191)||_0x38af6a[_0x32b0(0x19)]===0x193?_0x342f10['tVGOU']:_0x342f10[_0x32b0(0x3b)](_0x38af6a[_0x32b0(0x19)],0x190)?'validation_error':_0x38af6a[_0x32b0(0x19)]>=0x1f4?_0x342f10[_0x32b0(0x4b)]:_0x342f10['qVgpm'];throw new ApiError((_0x342f10[_0x32b0(0x4c)](_0x4cd289=_0x250828['error'],null)||_0x4cd289===void 0x0?void 0x0:_0x4cd289[_0x32b0(0x26)])||_0x342f10['BGheF'],_0x25b3ee,_0x342f10[_0x32b0(0x4d)](_0x5da006=_0x250828[_0x32b0(0x1e)],null)||_0x342f10[_0x32b0(0x4d)](_0x5da006,void 0x0)?void 0x0:_0x5da006[_0x32b0(0x1f)],_0x342f10[_0x32b0(0x4c)](_0xd6ff38=_0x250828[_0x32b0(0x1e)],null)||_0x342f10[_0x32b0(0x4e)](_0xd6ff38,void 0x0)?void 0x0:_0xd6ff38[_0x32b0(0x2)]);}return _0x250828;}catch(_0x21a60a){if(_0x342f10[_0x32b0(0x4f)](_0x21a60a,ApiError))throw _0x21a60a;if(_0x21a60a['name']===_0x342f10[_0x32b0(0x50)]){if(_0x342f10[_0x32b0(0x51)]!==_0x32b0(0x52))return _0x342f10['vFNxX'](_0x562133,_0x32b0(0x53),'POST',{'data':{'refreshToken':_0x51637f},'debug':_0xba0f50[_0x32b0(0x47)]});else throw new ApiError('Request\x20timed\x20out',_0x342f10[_0x32b0(0x54)]);}debug&&_0x342f10[_0x32b0(0x55)](logDebug,_0x32b0(0x56),{'endpoint':_0xd24597,'method':_0x1140a9,'error':_0x21a60a[_0x32b0(0x26)]||_0x342f10[_0x32b0(0x57)]});throw new ApiError(_0x21a60a[_0x32b0(0x26)]||_0x342f10[_0x32b0(0x58)],'unknown_error');}};function _0x1e54(){const _0x44f3f5=['ApiError','type','details','fetch','Pqnwa','validation_error','server_error','unknown_error','API\x20request\x20failed','No\x20network\x20connection\x20available','network_error','User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','auth_error','UBLgo','tDMEc','xdpNq','User\x20API\x20Error','An\x20unexpected\x20error\x20occurred','pKlpM','NMsNA','hEaNt','wnkDw','User\x20API\x20Request','fqdtZ','json','status','sSnOm','ZYuVt','pjnYa','UrUVb','error','code','vyKKw','GApPu','vWIQj','PKAix','JPOzc','uUQkn','message','sSata','SutLV','bjRgH','qxaZJ','name','AbortError','Request\x20timed\x20out','timeout_error','PjpRt','xAKuc','hKfKb','Unknown\x20error','CzzpD','ywOCz','auth/register','user/platforms','fXweT','PztdV','ooVAt','BlwLC','VfkBq','MbLUm','ilHmi','username','platforms','dJPmR','nIXfc','Bzplr','[REDACTED]','WTjht','GjpSo','bGkqG','debug','CFpVr','stringify','hBNep','gzwLS','NdgRR','KfgeA','ixmnk','frCSd','HIScY','OaZEZ','CXNEI','auth/refresh','RVumX','lXevZ','Developer\x20API\x20Error','HhLrq','zoGXs','Developer\x20API\x20Request','auth/validate','qXtPR','BfHnQ','cOWSv','IFCCv','CGNPb','LOuix','success','mZaCW','FcRsU','data','isValid','cTvjy','iiRGo','UKZlr','MUKwW','auth/login','userPin','FQFrq','platforms/','/data','user/profile','TfWem','YlXvm','jRtBU','CTnpo','No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','aXKvm','pmvwT','IWqIF','Wassx','FAzTf'];_0x1e54=function(){return _0x44f3f5;};return _0x1e54();}export const validateCredentials=async(_0x53113f,_0x3462cb={'debug':![]})=>{const _0x378ee4={'BfHnQ':function(_0x5346cf,_0x14b29f,_0x628331){return _0x5346cf(_0x14b29f,_0x628331);},'cOWSv':_0x32b0(0x59),'FlWtj':_0x32b0(0x43),'IFCCv':function(_0x2b2bf8,_0x5abec1){return _0x2b2bf8||_0x5abec1;},'qXtPR':'ahmvy','CGNPb':function(_0x21c686,_0x2d17d0,_0x151bdb,_0x3e568c){return _0x21c686(_0x2d17d0,_0x151bdb,_0x3e568c);},'LOuix':_0x32b0(0x5a),'mZaCW':function(_0xe94cb7,_0x486b53){return _0xe94cb7===_0x486b53;},'FcRsU':function(_0x227825,_0x3cda09){return _0x227825===_0x3cda09;},'cTvjy':function(_0x59f6d1,_0x225e5d){return _0x59f6d1===_0x225e5d;}};try{if(_0x378ee4[_0x32b0(0x5b)]!=='ahmvy')_0x378ee4[_0x32b0(0x5c)](_0x3f1e41,_0x378ee4[_0x32b0(0x5d)],{'endpoint':_0x1ac0d0,'method':_0x1b4f27,'headers':{..._0x4c0cc3,'Authorization':_0x378ee4['FlWtj']},'data':_0x378ee4[_0x32b0(0x5e)](_0x18aab8,null)});else{var _0x50b3d7,_0x24742d;const _0x5b05e2=await _0x378ee4[_0x32b0(0x5f)](makeUserApiRequest,_0x378ee4[_0x32b0(0x60)],'POST',{'data':{'username':_0x53113f},'debug':_0x3462cb[_0x32b0(0x47)]});return{'isValid':_0x5b05e2[_0x32b0(0x61)]&&_0x378ee4[_0x32b0(0x62)](_0x378ee4[_0x32b0(0x63)](_0x50b3d7=_0x5b05e2[_0x32b0(0x64)],null)||_0x50b3d7===void 0x0?void 0x0:_0x50b3d7[_0x32b0(0x65)],!![]),'message':_0x378ee4[_0x32b0(0x62)](_0x24742d=_0x5b05e2['error'],null)||_0x378ee4[_0x32b0(0x66)](_0x24742d,void 0x0)?void 0x0:_0x24742d[_0x32b0(0x26)]};}}catch(_0x182349){return{'isValid':![],'message':_0x182349[_0x32b0(0x26)]};}};export const createAccount=async(_0xfa0cba,_0x3bf2bf={'debug':![]})=>{const _0x1cf9bb={'iiRGo':function(_0x457e94,_0x1aa452,_0x3c1aff,_0x25cb4c){return _0x457e94(_0x1aa452,_0x3c1aff,_0x25cb4c);},'UKZlr':_0x32b0(0x35)};return _0x1cf9bb[_0x32b0(0x67)](makeDeveloperApiRequest,_0x1cf9bb[_0x32b0(0x68)],'POST',{'data':{'username':_0xfa0cba[_0x32b0(0x3e)],'platforms':_0xfa0cba[_0x32b0(0x3f)]},'debug':_0x3bf2bf[_0x32b0(0x47)]});};export const authenticate=async(_0x49cb2e,_0x3b1468={'debug':![]})=>{const _0x79b9b0={'MUKwW':function(_0x396fbf,_0x2d1ef7,_0x52c78c,_0x2c85e3){return _0x396fbf(_0x2d1ef7,_0x52c78c,_0x2c85e3);}};return _0x79b9b0[_0x32b0(0x69)](makeUserApiRequest,_0x32b0(0x6a),'POST',{'data':{'username':_0x49cb2e[_0x32b0(0x3e)],'pin':_0x49cb2e[_0x32b0(0x6b)]},'debug':_0x3b1468[_0x32b0(0x47)]});};export const refreshToken=async(_0x4411b3,_0x58f9ce={'debug':![]})=>{const _0x108137={'FQFrq':function(_0x509bdc,_0x4efd29,_0x409b96,_0x3822da){return _0x509bdc(_0x4efd29,_0x409b96,_0x3822da);}};return _0x108137[_0x32b0(0x6c)](makeUserApiRequest,_0x32b0(0x53),'POST',{'data':{'refreshToken':_0x4411b3},'debug':_0x58f9ce['debug']});};export const getPlatformData=async(_0x1cd6b4,_0x2b4b3c={'debug':![]})=>{const _0x2609bc={'ohbqa':function(_0x44e56b,_0x3c91e8,_0x700f51,_0x3d917a){return _0x44e56b(_0x3c91e8,_0x700f51,_0x3d917a);}};return _0x2609bc['ohbqa'](makeUserApiRequest,_0x32b0(0x6d)+_0x1cd6b4+_0x32b0(0x6e),'GET',{'debug':_0x2b4b3c[_0x32b0(0x47)]});};export const getUserProfile=async(_0xe7bb83={'debug':![]})=>{const _0xfc90b6={'TfWem':function(_0x2cd213,_0x9ad625,_0x14f5f9,_0x1b771a){return _0x2cd213(_0x9ad625,_0x14f5f9,_0x1b771a);},'YlXvm':_0x32b0(0x6f)};return _0xfc90b6[_0x32b0(0x70)](makeUserApiRequest,_0xfc90b6[_0x32b0(0x71)],'GET',{'debug':_0xe7bb83['debug']});};function _0x32b0(_0x1e5439,_0x32b078){_0x1e5439=_0x1e5439-0x0;const _0x102a91=_0x1e54();let _0x3b9fc2=_0x102a91[_0x1e5439];return _0x3b9fc2;}export const updatePlatformConnections=async(_0x5bf81e,_0x139a49={'debug':![]})=>{const _0x3ac283={'jRtBU':function(_0x246226,_0x27d0fa,_0xd4f3d1,_0x38baa6){return _0x246226(_0x27d0fa,_0xd4f3d1,_0x38baa6);},'CTnpo':'user/platforms'};return _0x3ac283[_0x32b0(0x72)](makeUserApiRequest,_0x3ac283[_0x32b0(0x73)],'PUT',{'data':{'platforms':_0x5bf81e},'debug':_0x139a49[_0x32b0(0x47)]});};export const storePIN=async(_0x24b8d0,_0x42bff4={})=>{const _0x599d={'aXKvm':function(_0xacb52e){return _0xacb52e();},'pmvwT':_0x32b0(0x74),'hOOfT':_0x32b0(0xc),'IWqIF':function(_0x1ff41f,_0x7ea400,_0x36a2a,_0x1e5664){return _0x1ff41f(_0x7ea400,_0x36a2a,_0x1e5664);},'Wassx':'store-pin/mobile'},{debug:debug=![],username:_0xd37ea6}=_0x42bff4,_0x223794=_0xd37ea6||_0x599d[_0x32b0(0x75)](extractUsernameFromJWT);if(!_0x223794)throw new ApiError(_0x599d[_0x32b0(0x76)],_0x599d['hOOfT']);return _0x599d[_0x32b0(0x77)](makeUserApiRequest,_0x599d[_0x32b0(0x78)],'POST',{'data':{'username':_0x223794,'pin':_0x24b8d0},'debug':debug});};export const getCurrentUserToken=async()=>{const _0x19fffe={'FAzTf':function(_0x56b06e){return _0x56b06e();}};return await _0x19fffe[_0x32b0(0x79)](getJWT);};export const isCurrentUserAuthenticated=()=>{const _0x3f559a={'vwuVc':function(_0x392c37){return _0x392c37();}};return _0x3f559a['vwuVc'](isUserAuthenticated);};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{initializePlatformAuthService}from'../services/platformAuthService';export const executeOnairosFlow=async
|
|
1
|
+
import{initializePlatformAuthService}from'../services/platformAuthService';export const executeOnairosFlow=async _0x3e220d=>{const _0x1f4a51={'LSHWZ':_0x3c05(0x0),'uNnUD':function(_0x434534,_0x3502c2){return _0x434534===_0x3502c2;},'jHGIK':_0x3c05(0x1),'xASYI':function(_0x4c6822){return _0x4c6822();},'kksSJ':'✅\x20Onairos\x20flow\x20completed\x20successfully','xesgk':_0x3c05(0x2),'xpbdV':function(_0x5d610e,_0x4bf970){return _0x5d610e!==_0x4bf970;},'sznao':_0x3c05(0x3),'yoSeH':function(_0x1ab48d,_0x1940af){return _0x1ab48d!==_0x1940af;},'kpUIh':_0x3c05(0x4),'yFcnB':function(_0x3edb79,_0x4d9633){return _0x3edb79||_0x4d9633;},'urmmS':_0x3c05(0x5),'TEUSf':_0x3c05(0x6),'iFnvX':'📱\x20Onairos\x20modal\x20should\x20be\x20displayed','oHIrs':_0x3c05(0x7),'CPIxE':_0x3c05(0x8),'mIbTk':'🚀\x20Starting\x20Onairos\x20flow\x20programmatically...','hWpom':function(_0x132b9a){return _0x132b9a();},'nxpyH':'../components/UniversalOnboarding'};try{if(_0x1f4a51[_0x3c05(0x9)](_0x1f4a51[_0x3c05(0xa)],_0x3c05(0x8))){console[_0x3c05(0xb)](_0x1f4a51[_0x3c05(0xc)]),await _0x1f4a51['hWpom'](initializePlatformAuthService);const {UniversalOnboarding:_0x56f3ce}=await import(_0x1f4a51[_0x3c05(0xd)]),React=await import('react');return new Promise((_0x5e7e31,_0x3e78ad)=>{const _0x1039e8={'jbOWG':_0x1f4a51[_0x3c05(0xe)],'DwhAu':function(_0x5dc050,_0x396aec){return _0x1f4a51['uNnUD'](_0x5dc050,_0x396aec);},'Skfwh':_0x1f4a51[_0x3c05(0xf)],'XnUaO':function(_0x3a33cf){return _0x1f4a51[_0x3c05(0x10)](_0x3a33cf);},'izJYq':_0x1f4a51[_0x3c05(0x11)],'dppks':_0x1f4a51[_0x3c05(0x12)],'KVrWT':function(_0x3d0947,_0xf3284b){return _0x1f4a51[_0x3c05(0x13)](_0x3d0947,_0xf3284b);},'dLJnk':_0x3c05(0x14),'yLypU':_0x1f4a51[_0x3c05(0x15)],'YolAk':function(_0x5a2085,_0x430697){return _0x1f4a51[_0x3c05(0x16)](_0x5a2085,_0x430697);},'xXzvC':'TbCis','eKGOb':_0x1f4a51[_0x3c05(0x17)],'VitCx':function(_0x50e55b,_0x234e98){return _0x1f4a51['yFcnB'](_0x50e55b,_0x234e98);},'hlCvW':_0x1f4a51[_0x3c05(0x18)]};if(_0x1f4a51[_0x3c05(0x13)](_0x1f4a51[_0x3c05(0x19)],'fSVOE'))_0x3f2445[_0x3c05(0x1a)](_0x1ffa06,_0x1acff3,_0x29c716);else{let _0xc31522=null;const _0xe2c76c=(_0x39bea2,_0x5e5bda,_0x5329b9)=>{_0x1039e8[_0x3c05(0x1b)]===_0x1039e8[_0x3c05(0x1b)]?(console[_0x3c05(0xb)](_0x3c05(0x1c)),_0xc31522&&_0xc31522['close']&&_0xc31522[_0x3c05(0x1d)](),_0x3e220d[_0x3c05(0x1a)]&&(_0x1039e8[_0x3c05(0x1e)](_0x1039e8[_0x3c05(0x1f)],_0x1039e8[_0x3c05(0x1f)])?_0x3e220d[_0x3c05(0x1a)](_0x39bea2,_0x5e5bda,_0x5329b9):_0x15d406['close']()),_0x1039e8[_0x3c05(0x20)](_0x5e7e31)):_0x31d929[_0x3c05(0x21)](_0x552a0a);},_0x3227f7=_0xd5c70c=>{const _0x119b5f={'VFYdB':_0x1039e8[_0x3c05(0x22)],'heQMm':function(_0x303db5){return _0x303db5();}};console[_0x3c05(0xb)](_0x1039e8['dppks'],_0xd5c70c),_0xc31522&&_0xc31522['close']&&(_0x1039e8[_0x3c05(0x23)](_0x1039e8['dLJnk'],_0x1039e8['yLypU'])?_0xc31522['close']():(_0x4b2535['log'](_0x119b5f['VFYdB']),_0x289063&&_0x267de6[_0x3c05(0x1d)]&&_0x3f226c[_0x3c05(0x1d)](),_0x3f0777['onResolved']&&_0x2c7ac4[_0x3c05(0x1a)](_0x3df5cc,_0x5e5d2c,_0x1a80cb),_0x119b5f[_0x3c05(0x24)](_0x1e12e4))),_0x3e220d[_0x3c05(0x21)]&&(_0x1039e8[_0x3c05(0x25)](_0x1039e8[_0x3c05(0x26)],_0x1039e8[_0x3c05(0x27)])?_0x3e220d[_0x3c05(0x21)](_0xd5c70c):_0x3ee5df[_0x3c05(0x1d)]()),_0x3e78ad(new Error(_0x1039e8['VitCx'](_0xd5c70c,_0x1039e8[_0x3c05(0x28)])));},_0x426dcc=React[_0x3c05(0x29)](_0x56f3ce,{'visible':!![],'onClose':()=>_0x3227f7(_0x3c05(0x2a)),'AppName':_0x3e220d[_0x3c05(0x2b)],'requestData':_0x3e220d[_0x3c05(0x2c)],'returnLink':_0x3e220d['returnLink'],'onComplete':_0xe2c76c,'preferredPlatform':_0x3e220d[_0x3c05(0x2d)],'debug':_0x3e220d[_0x3c05(0x2e)],'testMode':_0x3e220d[_0x3c05(0x2f)]});_0xc31522=_0x426dcc,console['log'](_0x1f4a51['iFnvX']);}});}else _0xa0925c['onRejection'](_0x1f4a51[_0x3c05(0x30)]);}catch(_0x394580){console[_0x3c05(0x31)](_0x3c05(0x32),_0x394580);throw _0x394580;}};function _0x1351(){const _0x3c512a=['kHAMF','nAJFN','❌\x20Onairos\x20flow\x20rejected:','xIXhg','ruMmv','Onairos\x20flow\x20was\x20rejected','fSVOE','Pre-check\x20failed','OCLPd','uNnUD','CPIxE','log','mIbTk','nxpyH','LSHWZ','jHGIK','xASYI','kksSJ','xesgk','xpbdV','khIqs','sznao','yoSeH','kpUIh','urmmS','TEUSf','onResolved','jbOWG','✅\x20Onairos\x20flow\x20completed\x20successfully','close','DwhAu','Skfwh','XnUaO','onRejection','izJYq','KVrWT','heQMm','YolAk','xXzvC','eKGOb','hlCvW','createElement','User\x20closed\x20the\x20modal','AppName','requestData','preferredPlatform','debug','testMode','oHIrs','error','❌\x20Failed\x20to\x20execute\x20Onairos\x20flow:','PBpPE','❌\x20Pre-check\x20failed,\x20not\x20starting\x20Onairos\x20flow','preCheck','oCZBZ','TGjZr','NgHxf','tVTxr','XpUnO','aotff','ESxui','rSYqR'];_0x1351=function(){return _0x3c512a;};return _0x1351();}function _0x3c05(_0x135141,_0x3c0539){_0x135141=_0x135141-0x0;const _0x22f406=_0x1351();let _0x8c3633=_0x22f406[_0x135141];return _0x8c3633;}export const startOnairosFlow=async _0x162a96=>{const _0x59a3e6={'tVTxr':_0x3c05(0x2),'XpUnO':function(_0x4ca874,_0x519c89){return _0x4ca874(_0x519c89);},'aotff':function(_0x273abb,_0xa413ac){return _0x273abb||_0xa413ac;},'ESxui':_0x3c05(0x5),'oCZBZ':_0x3c05(0x33),'TGjZr':_0x3c05(0x34),'NgHxf':'Pre-check\x20failed','rSYqR':function(_0x2395b2,_0x236a40){return _0x2395b2(_0x236a40);}};if(_0x162a96[_0x3c05(0x35)]){if(_0x3c05(0x33)===_0x59a3e6[_0x3c05(0x36)]){const _0x2eeb45=await _0x162a96[_0x3c05(0x35)]();if(!_0x2eeb45){console[_0x3c05(0xb)](_0x59a3e6[_0x3c05(0x37)]);_0x162a96[_0x3c05(0x21)]&&_0x162a96[_0x3c05(0x21)](_0x59a3e6[_0x3c05(0x38)]);return;}}else _0xac5a4['log'](_0x59a3e6[_0x3c05(0x39)],_0x7f00a2),_0x289735&&_0x3160c6[_0x3c05(0x1d)]&&_0x100db0[_0x3c05(0x1d)](),_0x262b0f['onRejection']&&_0x5066a6[_0x3c05(0x21)](_0x3d73be),_0x59a3e6[_0x3c05(0x3a)](_0x30f994,new _0x4e02a1(_0x59a3e6[_0x3c05(0x3b)](_0x63201e,_0x59a3e6[_0x3c05(0x3c)])));}return _0x59a3e6[_0x3c05(0x3d)](executeOnairosFlow,_0x162a96);};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _0x23cd(_0x54fe83,_0x23cd3e){_0x54fe83=_0x54fe83-0x0;const _0x286375=_0x54fe();let _0x59e079=_0x286375[_0x54fe83];return _0x59e079;}export const DEFAULT_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0x50e2b4,_0x484195)=>{const _0x4a0d30={'zExwa':function(_0x3ee89d,_0xb392ec){return _0x3ee89d!==_0xb392ec;},'HPUIL':function(_0x5e6879,_0x1599ff){return _0x5e6879===_0x1599ff;},'GuIAX':_0x23cd(0x0),'dgEpB':'Network\x20request\x20failed','MBtsf':_0x23cd(0x1),'gPiBn':_0x23cd(0x2),'deuhr':_0x23cd(0x3),'Pfmlj':_0x23cd(0x4)};if(_0x50e2b4[_0x23cd(0x5)]>=0x190&&_0x50e2b4[_0x23cd(0x5)]<0x1f4&&_0x50e2b4[_0x23cd(0x5)]!==0x198&&_0x4a0d30[_0x23cd(0x6)](_0x50e2b4['status'],0x1ad))return![];if(_0x4a0d30[_0x23cd(0x7)](_0x50e2b4[_0x23cd(0x8)],_0x4a0d30['GuIAX'])||_0x50e2b4[_0x23cd(0x9)][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0xb)])||_0x50e2b4[_0x23cd(0x9)][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0xc)])||_0x50e2b4[_0x23cd(0x9)][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0xd)])||_0x50e2b4['message'][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0xe)])||_0x50e2b4['status']>=0x1f4)return!![];if(_0x50e2b4['message'][_0x23cd(0xa)](_0x23cd(0xf))||_0x50e2b4[_0x23cd(0x9)][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0x10)]))return!![];return![];}};export async function withRetry(_0x15944d,_0x248bf1={}){const _0x44237d={'BFYad':function(_0x2a03c1,_0x44ebc6){return _0x2a03c1>=_0x44ebc6;},'wItuK':function(_0x4f3029,_0x4eaf9d){return _0x4f3029<_0x4eaf9d;},'OnXoq':function(_0x26a928,_0x29588a){return _0x26a928!==_0x29588a;},'stmMD':function(_0x43c4a0,_0x3266ad){return _0x43c4a0===_0x3266ad;},'uhHCT':_0x23cd(0x11),'bxuZV':_0x23cd(0x2),'ABIMY':'timeout','xJgoc':_0x23cd(0xf),'VGLki':_0x23cd(0x4),'BFrbf':function(_0x437e6f,_0x4c0d77){return _0x437e6f+_0x4c0d77;},'VvPeE':function(_0x536516,_0x48a29c){return _0x536516<=_0x48a29c;},'bxhdJ':function(_0x49c82c,_0x2c67ea){return _0x49c82c<=_0x2c67ea;},'SROHD':function(_0x11e2cd,_0x4b1f42){return _0x11e2cd+_0x4b1f42;},'nUwpu':_0x23cd(0x12),'CnrFo':_0x23cd(0x13),'ugjrs':function(_0x12fbcf,_0x141209){return _0x12fbcf+_0x141209;},'zqeIh':function(_0xe4fbce){return _0xe4fbce();},'tCDnK':function(_0x3ab9f5,_0x552562){return _0x3ab9f5-_0x552562;},'hEWeT':function(_0x302531,_0x48f60a){return _0x302531>_0x48f60a;},'UDsSC':_0x23cd(0x14),'HMNwO':function(_0x3ae1ad,_0x5092b1){return _0x3ae1ad*_0x5092b1;},'EWeHL':function(_0x43117f,_0x1e492b){return _0x43117f-_0x1e492b;},'rpudO':function(_0x24710d,_0x2f2caf){return _0x24710d*_0x2f2caf;},'rUyTu':function(_0xdf1f96,_0x3af322){return _0xdf1f96*_0x3af322;},'jGTZv':function(_0x3a7d72,_0x4dfe2c){return _0x3a7d72+_0x4dfe2c;},'zcHod':_0x23cd(0x15),'Vwwtx':'Unknown\x20error','zgVEk':function(_0x5de0e7,_0xb13ec4){return _0x5de0e7-_0xb13ec4;}},_0x14e912={...DEFAULT_RETRY_OPTIONS,..._0x248bf1},_0x3533ac=Date[_0x23cd(0x16)]();let _0x4b9883=null;for(let _0x4085f8=0x1;_0x44237d[_0x23cd(0x17)](_0x4085f8,_0x44237d['SROHD'](_0x14e912[_0x23cd(0x18)],0x1));_0x4085f8++){if(_0x44237d[_0x23cd(0x19)](_0x44237d[_0x23cd(0x1a)],'fbKXU')){if(_0x44237d[_0x23cd(0x1b)](_0x136d24[_0x23cd(0x5)],0x190)&&_0x44237d[_0x23cd(0x1c)](_0x3e15b9[_0x23cd(0x5)],0x1f4)&&_0x505a66[_0x23cd(0x5)]!==0x198&&_0x44237d[_0x23cd(0x1d)](_0x2a0b43[_0x23cd(0x5)],0x1ad))return![];if(_0x44237d[_0x23cd(0x19)](_0x595665[_0x23cd(0x8)],_0x23cd(0x0))||_0x353d5f[_0x23cd(0x9)]['includes'](_0x44237d['uhHCT'])||_0x5ae6cb[_0x23cd(0x9)][_0x23cd(0xa)](_0x23cd(0x1))||_0x40d01d[_0x23cd(0x9)][_0x23cd(0xa)](_0x44237d['bxuZV'])||_0x7c21fd['message'][_0x23cd(0xa)](_0x44237d[_0x23cd(0x1e)])||_0x4ae833[_0x23cd(0x5)]>=0x1f4)return!![];if(_0x2a9970[_0x23cd(0x9)][_0x23cd(0xa)](_0x44237d[_0x23cd(0x1f)])||_0x22de6a[_0x23cd(0x9)]['includes'](_0x44237d['VGLki']))return!![];return![];}else try{_0x14e912['enableLogging']&&_0x4085f8>0x1&&(_0x44237d['CnrFo']!==_0x44237d[_0x23cd(0x20)]?_0x50905b[_0x23cd(0x21)](_0x23cd(0x22)+_0xa0303d+'/'+_0x44237d[_0x23cd(0x23)](_0x4c68a2[_0x23cd(0x18)],0x1)):console[_0x23cd(0x21)](_0x23cd(0x22)+_0x4085f8+'/'+_0x44237d[_0x23cd(0x24)](_0x14e912[_0x23cd(0x18)],0x1)));const _0x1dc3d3=await _0x44237d[_0x23cd(0x25)](_0x15944d);return{'success':!![],'data':_0x1dc3d3,'attempts':_0x4085f8,'totalDuration':_0x44237d[_0x23cd(0x26)](Date['now'](),_0x3533ac)};}catch(_0x294e18){_0x4b9883=_0x294e18;const _0x28dcaf=_0x14e912['shouldRetry']?_0x14e912[_0x23cd(0x27)](_0x294e18,_0x4085f8):!![];if(_0x44237d[_0x23cd(0x28)](_0x4085f8,_0x14e912[_0x23cd(0x18)])||!_0x28dcaf){_0x14e912[_0x23cd(0x29)]&&console[_0x23cd(0x2a)](_0x23cd(0x2b)+_0x294e18[_0x23cd(0x9)]);break;}let _0x3c52a0=_0x14e912[_0x23cd(0x2c)];if(_0x14e912[_0x23cd(0x2d)]){if(_0x44237d[_0x23cd(0x1d)](_0x44237d[_0x23cd(0x2e)],_0x44237d['UDsSC']))return!![];else _0x3c52a0=Math[_0x23cd(0x2f)](_0x44237d[_0x23cd(0x30)](_0x14e912[_0x23cd(0x2c)],Math[_0x23cd(0x31)](0x2,_0x44237d['EWeHL'](_0x4085f8,0x1))),_0x14e912[_0x23cd(0x32)]);}const _0x5b2223=_0x44237d[_0x23cd(0x33)](_0x44237d[_0x23cd(0x34)](Math[_0x23cd(0x35)](),0.1),_0x3c52a0);_0x3c52a0=Math['floor'](_0x44237d['jGTZv'](_0x3c52a0,_0x5b2223));if(_0x14e912[_0x23cd(0x36)]){if(_0x44237d['zcHod']!==_0x44237d[_0x23cd(0x37)])return _0x44237d[_0x23cd(0x38)](_0x48bcac,0x2);else _0x14e912['onRetry'](_0x294e18,_0x4085f8,_0x3c52a0);}_0x14e912['enableLogging']&&console['log'](_0x23cd(0x39)+_0x3c52a0+_0x23cd(0x3a)+_0x4085f8+'/'+(_0x14e912[_0x23cd(0x18)]+0x1)+')'),await new Promise(_0x265c73=>setTimeout(()=>_0x265c73(),_0x3c52a0));}}return{'success':![],'error':_0x4b9883||new Error(_0x44237d['Vwwtx']),'attempts':_0x14e912['maxRetries']+0x1,'totalDuration':_0x44237d['zgVEk'](Date[_0x23cd(0x16)](),_0x3533ac)};}export const API_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x5c5baa,_0x2b611a)=>{const _0x4679c7={'MDdCP':function(_0x48564d,_0xc1ae41){return _0x48564d===_0xc1ae41;},'niYWR':function(_0x40e00d,_0x59cbd8){return _0x40e00d!==_0x59cbd8;},'QIwqC':_0x23cd(0x3b),'mnpOC':_0x23cd(0x3c),'oRfBH':_0x23cd(0x3d),'LrLDi':function(_0x37e041,_0x1507bd){return _0x37e041===_0x1507bd;},'CAbsU':function(_0x2b3f3f,_0x2f0e72){return _0x2b3f3f<=_0x2f0e72;},'oKvDi':_0x23cd(0x0),'JMNjv':_0x23cd(0x11),'tJoFe':_0x23cd(0x1),'VLGCh':_0x23cd(0x2),'bpkbN':_0x23cd(0xf),'IYShH':_0x23cd(0x4),'orFEI':_0x23cd(0x3e)};if(_0x4679c7[_0x23cd(0x3f)](_0x5c5baa[_0x23cd(0x5)],0x191)||_0x4679c7[_0x23cd(0x3f)](_0x5c5baa[_0x23cd(0x5)],0x193))return _0x4679c7[_0x23cd(0x40)](_0x4679c7[_0x23cd(0x41)],_0x4679c7['mnpOC'])?![]:![];if(_0x4679c7['MDdCP'](_0x5c5baa[_0x23cd(0x5)],0x190)||_0x4679c7[_0x23cd(0x3f)](_0x5c5baa[_0x23cd(0x5)],0x194)&&!_0x5c5baa['message'][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x42)]))return![];if(_0x4679c7[_0x23cd(0x43)](_0x5c5baa[_0x23cd(0x5)],0x1ad))return _0x4679c7['CAbsU'](_0x2b611a,0x2);if(_0x5c5baa[_0x23cd(0x5)]>=0x1f4)return!![];if(_0x4679c7['LrLDi'](_0x5c5baa[_0x23cd(0x8)],_0x4679c7[_0x23cd(0x44)])||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x23cd(0x3))||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x45)])||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7['tJoFe'])||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x46)]))return!![];if(_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x47)])||_0x5c5baa[_0x23cd(0x9)]['includes'](_0x4679c7[_0x23cd(0x48)])||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x49)]))return!![];return![];},'onRetry':(_0x5c9d73,_0x1b2dd3,_0x445620)=>{console['warn']('⚠️\x20API\x20call\x20failed\x20(attempt\x20'+_0x1b2dd3+'),\x20retrying\x20in\x20'+_0x445620+_0x23cd(0x4a)+_0x5c9d73[_0x23cd(0x9)]);}};function _0x54fe(){const _0x828a3a=['AbortError','fetch','ENOTFOUND','timeout','Unexpected\x20character','status','zExwa','HPUIL','name','message','includes','dgEpB','MBtsf','gPiBn','deuhr','JSON\x20Parse\x20error','Pfmlj','Network\x20request\x20failed','AahfC','rsrdg','zlkln','rpJQo','now','bxhdJ','maxRetries','stmMD','nUwpu','BFYad','wItuK','OnXoq','ABIMY','xJgoc','CnrFo','log','🔄\x20Retry\x20attempt\x20','BFrbf','ugjrs','zqeIh','tCDnK','shouldRetry','hEWeT','enableLogging','error','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','baseDelay','exponentialBackoff','UDsSC','min','HMNwO','pow','maxDelay','rpudO','rUyTu','random','onRetry','zcHod','VvPeE','⏳\x20Waiting\x20','ms\x20before\x20retry\x20(attempt\x20','EIbwi','XgZnd','validation\x20endpoint','HTML\x20page\x20instead\x20of\x20JSON','MDdCP','niYWR','QIwqC','oRfBH','LrLDi','oKvDi','JMNjv','VLGCh','bpkbN','IYShH','orFEI','ms:\x20','DNS','AeDjD','LIEXe','tDMZj','wJSGd','KygvQ','aFGpz','data','OnairosReactNative/HealthCheck','XZgrf','FATXq','HcMWm','abort','jWogz','YuyOy','ADaoc','LoxZN','qzLKd','QRHqp','ntqKl'];_0x54fe=function(){return _0x828a3a;};return _0x54fe();}export const NETWORK_RETRY_OPTIONS={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x2bdade,_0x479804)=>{const _0x58ea4a={'bJAlX':_0x23cd(0x4b),'AeDjD':function(_0x49f7c9,_0x2c1901){return _0x49f7c9===_0x2c1901;},'LIEXe':'AbortError'};return _0x2bdade[_0x23cd(0x9)][_0x23cd(0xa)](_0x23cd(0x11))||_0x2bdade[_0x23cd(0x9)][_0x23cd(0xa)](_0x23cd(0x2))||_0x2bdade['message'][_0x23cd(0xa)](_0x58ea4a['bJAlX'])||_0x58ea4a[_0x23cd(0x4c)](_0x2bdade[_0x23cd(0x8)],_0x58ea4a[_0x23cd(0x4d)]);}};export async function fetchWithRetry(_0x42d813,_0x2c2180={},_0x2b5509=API_RETRY_OPTIONS){const _0x4fc698={'OgXgt':function(_0x3210c1,_0x3fb0ac,_0x2bb9b5){return _0x3210c1(_0x3fb0ac,_0x2bb9b5);},'wJSGd':function(_0x2c2ca9,_0x22ef7b){return _0x2c2ca9!==_0x22ef7b;},'KygvQ':'wImyi','aFGpz':_0x23cd(0x4e)},_0x41a008=await _0x4fc698['OgXgt'](withRetry,()=>fetch(_0x42d813,_0x2c2180),_0x2b5509);if(!_0x41a008['success']){if(_0x4fc698[_0x23cd(0x4f)](_0x4fc698[_0x23cd(0x50)],_0x4fc698[_0x23cd(0x51)]))throw _0x41a008[_0x23cd(0x2a)];else throw _0x5b0f9c['error'];}return _0x41a008[_0x23cd(0x52)];}export async function healthCheck(_0xc1de03,_0x255ca0=0x1388){const _0x354858={'HcMWm':function(_0x284339,_0x3ce2bd,_0x1a4ed1){return _0x284339(_0x3ce2bd,_0x1a4ed1);},'jWogz':function(_0x243910,_0x953d52,_0xdf4e35){return _0x243910(_0x953d52,_0xdf4e35);},'YuyOy':_0x23cd(0x53),'ADaoc':function(_0x1580ec,_0x202f14){return _0x1580ec-_0x202f14;},'LoxZN':function(_0x11b24e,_0x349ef4){return _0x11b24e===_0x349ef4;},'qzLKd':_0x23cd(0x54),'QRHqp':_0x23cd(0x55),'ntqKl':function(_0x577f17,_0xbfe89e){return _0x577f17-_0xbfe89e;}},_0x39c0c6=Date[_0x23cd(0x16)]();try{const _0x4b4624=new AbortController(),_0x5ceefb=_0x354858[_0x23cd(0x56)](setTimeout,()=>_0x4b4624[_0x23cd(0x57)](),_0x255ca0),_0x18ac34=await _0x354858[_0x23cd(0x58)](fetch,_0xc1de03,{'method':'GET','signal':_0x4b4624['signal'],'headers':{'User-Agent':_0x354858[_0x23cd(0x59)]}});return clearTimeout(_0x5ceefb),{'reachable':!![],'status':_0x18ac34['status'],'duration':_0x354858[_0x23cd(0x5a)](Date[_0x23cd(0x16)](),_0x39c0c6)};}catch(_0x3374d4){if(_0x354858[_0x23cd(0x5b)](_0x354858[_0x23cd(0x5c)],_0x354858[_0x23cd(0x5d)]))_0x4467e5[_0x23cd(0x36)](_0x36a58c,_0x3c5e08,_0x4a7127);else return{'reachable':![],'error':_0x3374d4[_0x23cd(0x9)],'duration':_0x354858[_0x23cd(0x5e)](Date[_0x23cd(0x16)](),_0x39c0c6)};}}
|
|
1
|
+
export const DEFAULT_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0x519b13,_0x2eafc9)=>{const _0x1319b1={'SMWVe':function(_0xfba001,_0x41ca56){return _0xfba001<_0x41ca56;},'vFMmU':function(_0x1bf396,_0x27c55c){return _0x1bf396!==_0x27c55c;},'hbPpu':function(_0x26a5f6,_0x2a9a10){return _0x26a5f6===_0x2a9a10;},'DeWUY':_0x3701(0x0),'hgYOx':_0x3701(0x1),'JyTHK':_0x3701(0x2),'ZekyC':_0x3701(0x3),'ffeza':function(_0x3d965f,_0x1a0e21){return _0x3d965f>=_0x1a0e21;},'QqLbq':_0x3701(0x4),'OMoxg':_0x3701(0x5)};if(_0x519b13[_0x3701(0x6)]>=0x190&&_0x1319b1[_0x3701(0x7)](_0x519b13[_0x3701(0x6)],0x1f4)&&_0x1319b1[_0x3701(0x8)](_0x519b13[_0x3701(0x6)],0x198)&&_0x519b13[_0x3701(0x6)]!==0x1ad)return![];if(_0x1319b1['hbPpu'](_0x519b13['name'],_0x1319b1[_0x3701(0x9)])||_0x519b13[_0x3701(0xa)][_0x3701(0xb)]('Network\x20request\x20failed')||_0x519b13[_0x3701(0xa)][_0x3701(0xb)](_0x1319b1[_0x3701(0xc)])||_0x519b13[_0x3701(0xa)]['includes'](_0x1319b1[_0x3701(0xd)])||_0x519b13[_0x3701(0xa)][_0x3701(0xb)](_0x1319b1[_0x3701(0xe)])||_0x1319b1[_0x3701(0xf)](_0x519b13[_0x3701(0x6)],0x1f4))return!![];if(_0x519b13['message'][_0x3701(0xb)](_0x1319b1[_0x3701(0x10)])||_0x519b13['message'][_0x3701(0xb)](_0x1319b1['OMoxg']))return!![];return![];}};export async function withRetry(_0x1bf532,_0x5a0bb1={}){const _0x2b3097={'ZkBry':function(_0x122cb9,_0x2d4a18){return _0x122cb9<_0x2d4a18;},'ApUGd':function(_0x56cf91,_0x119b8a){return _0x56cf91!==_0x119b8a;},'LPxNq':function(_0x134840,_0x3f93e6){return _0x134840!==_0x3f93e6;},'SIySn':function(_0x2b8779,_0x37061e){return _0x2b8779===_0x37061e;},'XzDRz':_0x3701(0x0),'mbAYg':'Network\x20request\x20failed','niZyW':_0x3701(0x1),'SnLei':_0x3701(0x2),'WzCNi':function(_0x46a185,_0x33669a){return _0x46a185>=_0x33669a;},'XJIow':_0x3701(0x4),'YLuaE':_0x3701(0x5),'XgDnp':function(_0x2f294c,_0x13ff01){return _0x2f294c+_0x13ff01;},'aPgjO':_0x3701(0x11),'OwsxG':function(_0x109795,_0x7158b1){return _0x109795>_0x7158b1;},'UrjfK':function(_0x3d5e67,_0x31d2a9){return _0x3d5e67+_0x31d2a9;},'SFUSC':function(_0x587f6f){return _0x587f6f();},'QKHXJ':function(_0x1033ce,_0x4fc59d){return _0x1033ce-_0x4fc59d;},'fIrDJ':function(_0x36a5aa,_0x44b248){return _0x36a5aa!==_0x44b248;},'OPtmR':_0x3701(0x12),'MWfVk':_0x3701(0x13),'Dczhr':'zJjIf','AXQnK':function(_0x10ebf5,_0x5efa34){return _0x10ebf5*_0x5efa34;},'IvUSq':function(_0x14f128,_0x43f0dc){return _0x14f128-_0x43f0dc;},'ngBiH':function(_0x2f5c46,_0x26c58a){return _0x2f5c46+_0x26c58a;},'LezQt':function(_0x186340,_0x5c5534){return _0x186340+_0x5c5534;},'ccdKM':_0x3701(0x14),'OZoAr':function(_0x105b97,_0x1d0812){return _0x105b97+_0x1d0812;}},_0x494ee7={...DEFAULT_RETRY_OPTIONS,..._0x5a0bb1},_0x149f16=Date['now']();let _0x2e4a14=null;for(let _0x2ffe79=0x1;_0x2ffe79<=_0x2b3097[_0x3701(0x15)](_0x494ee7[_0x3701(0x16)],0x1);_0x2ffe79++){try{if(_0x2b3097[_0x3701(0x17)](_0x3701(0x18),_0x2b3097[_0x3701(0x19)]))return!![];else{_0x494ee7[_0x3701(0x1a)]&&_0x2b3097['OwsxG'](_0x2ffe79,0x1)&&console[_0x3701(0x1b)](_0x3701(0x1c)+_0x2ffe79+'/'+_0x2b3097['UrjfK'](_0x494ee7['maxRetries'],0x1));const _0x175cd1=await _0x2b3097[_0x3701(0x1d)](_0x1bf532);return{'success':!![],'data':_0x175cd1,'attempts':_0x2ffe79,'totalDuration':_0x2b3097[_0x3701(0x1e)](Date['now'](),_0x149f16)};}}catch(_0x4e8bbd){if(_0x2b3097[_0x3701(0x1f)](_0x2b3097[_0x3701(0x20)],_0x3701(0x12)))return!![];else{_0x2e4a14=_0x4e8bbd;const _0x2227b7=_0x494ee7[_0x3701(0x21)]?_0x494ee7[_0x3701(0x21)](_0x4e8bbd,_0x2ffe79):!![];if(_0x2b3097[_0x3701(0x22)](_0x2ffe79,_0x494ee7['maxRetries'])||!_0x2227b7){if(_0x494ee7[_0x3701(0x1a)]){if(_0x2b3097[_0x3701(0x17)](_0x2b3097[_0x3701(0x23)],_0x2b3097[_0x3701(0x24)])){if(_0x2b1235['status']>=0x190&&_0x2b3097[_0x3701(0x25)](_0x17f5f3['status'],0x1f4)&&_0x2b3097[_0x3701(0x26)](_0x27bb59[_0x3701(0x6)],0x198)&&_0x2b3097[_0x3701(0x27)](_0x3a6fb8['status'],0x1ad))return![];if(_0x2b3097[_0x3701(0x17)](_0x3e3b21[_0x3701(0x28)],_0x2b3097[_0x3701(0x29)])||_0x101104['message']['includes'](_0x2b3097['mbAYg'])||_0x22e011[_0x3701(0xa)]['includes'](_0x2b3097['niZyW'])||_0x432feb[_0x3701(0xa)][_0x3701(0xb)](_0x2b3097[_0x3701(0x2a)])||_0x34c76a[_0x3701(0xa)][_0x3701(0xb)]('timeout')||_0x2b3097[_0x3701(0x2b)](_0x3c7fd9[_0x3701(0x6)],0x1f4))return!![];if(_0x14fd78[_0x3701(0xa)][_0x3701(0xb)](_0x2b3097['XJIow'])||_0x33016a[_0x3701(0xa)]['includes'](_0x2b3097[_0x3701(0x2c)]))return!![];return![];}else console[_0x3701(0x2d)](_0x3701(0x2e)+_0x4e8bbd[_0x3701(0xa)]);}break;}let _0x10f8a4=_0x494ee7[_0x3701(0x2f)];_0x494ee7['exponentialBackoff']&&(_0x10f8a4=Math[_0x3701(0x30)](_0x2b3097[_0x3701(0x31)](_0x494ee7['baseDelay'],Math['pow'](0x2,_0x2b3097[_0x3701(0x32)](_0x2ffe79,0x1))),_0x494ee7[_0x3701(0x33)]));const _0x4189c4=_0x2b3097[_0x3701(0x31)](Math[_0x3701(0x34)]()*0.1,_0x10f8a4);_0x10f8a4=Math['floor'](_0x2b3097[_0x3701(0x35)](_0x10f8a4,_0x4189c4)),_0x494ee7[_0x3701(0x36)]&&_0x494ee7[_0x3701(0x36)](_0x4e8bbd,_0x2ffe79,_0x10f8a4),_0x494ee7[_0x3701(0x1a)]&&console[_0x3701(0x1b)](_0x3701(0x37)+_0x10f8a4+_0x3701(0x38)+_0x2ffe79+'/'+_0x2b3097[_0x3701(0x39)](_0x494ee7['maxRetries'],0x1)+')'),await new Promise(_0x288d19=>setTimeout(()=>_0x288d19(),_0x10f8a4));}}}return{'success':![],'error':_0x2e4a14||new Error(_0x2b3097[_0x3701(0x3a)]),'attempts':_0x2b3097['OZoAr'](_0x494ee7['maxRetries'],0x1),'totalDuration':_0x2b3097['QKHXJ'](Date[_0x3701(0x3b)](),_0x149f16)};}function _0x5b57(){const _0xae596=['AbortError','fetch','ENOTFOUND','timeout','JSON\x20Parse\x20error','Unexpected\x20character','status','SMWVe','vFMmU','DeWUY','message','includes','hgYOx','JyTHK','ZekyC','ffeza','QqLbq','qzKlU','DyrNB','wdIpR','Unknown\x20error','XgDnp','maxRetries','SIySn','IuCWO','aPgjO','enableLogging','log','🔄\x20Retry\x20attempt\x20','SFUSC','QKHXJ','fIrDJ','OPtmR','shouldRetry','OwsxG','MWfVk','Dczhr','ZkBry','ApUGd','LPxNq','name','XzDRz','SnLei','WzCNi','YLuaE','error','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','baseDelay','min','AXQnK','IvUSq','maxDelay','random','ngBiH','onRetry','⏳\x20Waiting\x20','ms\x20before\x20retry\x20(attempt\x20','LezQt','ccdKM','now','validation\x20endpoint','qAlDi','yvHeu','Network\x20request\x20failed','CXpyF','YDQyL','srElV','ktRFz','KFdMg','NwkIj','pow','CvmAC','CBZBe','pGpda','warn','⚠️\x20API\x20call\x20failed\x20(attempt\x20','),\x20retrying\x20in\x20','DNS','QrVyV','gYDVE','FRJWp','aEeRF','NNaeZ','success','lqTlU','OdHQG','TFqlg','ATaFP','data','yvfrl','SpTEe','RWaJP','nLjZm','IjDlz','Dsbwa','BrKDX','abort','signal','cUAhm','dWDyJ','RPyHT'];_0x5b57=function(){return _0xae596;};return _0x5b57();}export const API_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x2eb8fc,_0x1428a0)=>{const _0x2ceae5={'NwkIj':function(_0x3e91c1,_0x573aa5){return _0x3e91c1*_0x573aa5;},'KGIXA':function(_0x20b06d,_0x2905a3){return _0x20b06d-_0x2905a3;},'pUSjC':function(_0x40da55,_0x31bc8c){return _0x40da55+_0x31bc8c;},'CXpyF':function(_0x3bf44c,_0x208ce1){return _0x3bf44c===_0x208ce1;},'YDQyL':_0x3701(0x3c),'srElV':function(_0x39d4c3,_0x46566e){return _0x39d4c3!==_0x46566e;},'ktRFz':'CewMV','KFdMg':_0x3701(0x3d),'jRHrh':function(_0x436329,_0x109c2f){return _0x436329<=_0x109c2f;},'NiPhL':function(_0x194161,_0x491eaa){return _0x194161===_0x491eaa;},'ZYKmK':_0x3701(0x3e),'ycHWW':_0x3701(0x0),'CvmAC':_0x3701(0x3),'zFefS':_0x3701(0x3f),'cmMcO':_0x3701(0x1),'CBZBe':'VzDTU','ODVei':_0x3701(0x4),'pGpda':_0x3701(0x5)};if(_0x2eb8fc['status']===0x191||_0x2ceae5[_0x3701(0x40)](_0x2eb8fc['status'],0x193))return![];if(_0x2ceae5[_0x3701(0x40)](_0x2eb8fc[_0x3701(0x6)],0x190)||_0x2eb8fc[_0x3701(0x6)]===0x194&&!_0x2eb8fc[_0x3701(0xa)][_0x3701(0xb)](_0x2ceae5[_0x3701(0x41)])){if(_0x2ceae5[_0x3701(0x42)](_0x2ceae5['ktRFz'],_0x2ceae5[_0x3701(0x43)]))_0x471d82['error']('❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20'+_0x2295f0[_0x3701(0xa)]);else return![];}if(_0x2eb8fc['status']===0x1ad)return _0x2ceae5[_0x3701(0x40)](_0x2ceae5[_0x3701(0x44)],_0x2ceae5[_0x3701(0x44)])?_0x2ceae5['jRHrh'](_0x1428a0,0x2):!![];if(_0x2eb8fc['status']>=0x1f4){if(_0x2ceae5['NiPhL'](_0x2ceae5['ZYKmK'],_0x3701(0x3e)))return!![];else _0xe69e84=_0xd63b5e[_0x3701(0x30)](_0x2ceae5[_0x3701(0x45)](_0x2f036b[_0x3701(0x2f)],_0x3d28ce[_0x3701(0x46)](0x2,_0x2ceae5['KGIXA'](_0x1200f3,0x1))),_0x4f5041[_0x3701(0x33)]);}if(_0x2eb8fc['name']===_0x2ceae5['ycHWW']||_0x2eb8fc['message'][_0x3701(0xb)](_0x2ceae5[_0x3701(0x47)])||_0x2eb8fc['message']['includes'](_0x2ceae5['zFefS'])||_0x2eb8fc[_0x3701(0xa)][_0x3701(0xb)](_0x2ceae5['cmMcO'])||_0x2eb8fc[_0x3701(0xa)][_0x3701(0xb)](_0x3701(0x2))){if(_0x2ceae5[_0x3701(0x48)]===_0x2ceae5['CBZBe'])return!![];else _0x2d71f0[_0x3701(0x1b)]('⏳\x20Waiting\x20'+_0x3a4c76+_0x3701(0x38)+_0x2c9a95+'/'+_0x2ceae5['pUSjC'](_0x3fc798[_0x3701(0x16)],0x1)+')');}if(_0x2eb8fc[_0x3701(0xa)][_0x3701(0xb)](_0x2ceae5['ODVei'])||_0x2eb8fc['message'][_0x3701(0xb)](_0x2ceae5[_0x3701(0x49)])||_0x2eb8fc[_0x3701(0xa)][_0x3701(0xb)]('HTML\x20page\x20instead\x20of\x20JSON'))return!![];return![];},'onRetry':(_0xa56fdb,_0x2ddb97,_0x326dd4)=>{console[_0x3701(0x4a)](_0x3701(0x4b)+_0x2ddb97+_0x3701(0x4c)+_0x326dd4+'ms:\x20'+_0xa56fdb[_0x3701(0xa)]);}};function _0x3701(_0x5b5714,_0x370153){_0x5b5714=_0x5b5714-0x0;const _0x4b9908=_0x5b57();let _0x42108f=_0x4b9908[_0x5b5714];return _0x42108f;}export const NETWORK_RETRY_OPTIONS={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x12d5ea,_0x5af534)=>{const _0x3c0f9b={'hhAAf':_0x3701(0x3f),'QrVyV':_0x3701(0x2),'HCSyF':_0x3701(0x4d),'gDezM':function(_0x33e250,_0x1d4680){return _0x33e250===_0x1d4680;},'gYDVE':'AbortError'};return _0x12d5ea[_0x3701(0xa)][_0x3701(0xb)](_0x3c0f9b['hhAAf'])||_0x12d5ea[_0x3701(0xa)][_0x3701(0xb)](_0x3c0f9b[_0x3701(0x4e)])||_0x12d5ea[_0x3701(0xa)][_0x3701(0xb)](_0x3c0f9b['HCSyF'])||_0x3c0f9b['gDezM'](_0x12d5ea[_0x3701(0x28)],_0x3c0f9b[_0x3701(0x4f)]);}};export async function fetchWithRetry(_0x34d700,_0x5a6cf9={},_0x1245c0=API_RETRY_OPTIONS){const _0x2df7b2={'ATaFP':function(_0x7c72aa,_0x80be65){return _0x7c72aa+_0x80be65;},'NNaeZ':function(_0x2eccb1,_0x287116,_0x16f3df){return _0x2eccb1(_0x287116,_0x16f3df);},'lqTlU':function(_0x4e7142,_0x5f37b4){return _0x4e7142===_0x5f37b4;},'OdHQG':_0x3701(0x50),'TFqlg':_0x3701(0x51)},_0x5b2b4b=await _0x2df7b2[_0x3701(0x52)](withRetry,()=>fetch(_0x34d700,_0x5a6cf9),_0x1245c0);if(!_0x5b2b4b[_0x3701(0x53)]){if(_0x2df7b2[_0x3701(0x54)](_0x2df7b2[_0x3701(0x55)],_0x2df7b2[_0x3701(0x56)]))_0x7c6c40[_0x3701(0x1b)]('🔄\x20Retry\x20attempt\x20'+_0x390a61+'/'+_0x2df7b2[_0x3701(0x57)](_0x48f7da[_0x3701(0x16)],0x1));else throw _0x5b2b4b[_0x3701(0x2d)];}return _0x5b2b4b[_0x3701(0x58)];}export async function healthCheck(_0x33a708,_0x2687b8=0x1388){const _0xd5220f={'RWaJP':_0x3701(0x3f),'nLjZm':'ENOTFOUND','IjDlz':function(_0x3f06c8,_0x38e859){return _0x3f06c8===_0x38e859;},'Dsbwa':_0x3701(0x0),'yvfrl':function(_0x1ed7f1,_0x2c1945){return _0x1ed7f1!==_0x2c1945;},'SpTEe':'VmPtC','BrKDX':function(_0x14a7ae,_0x5d8418,_0x4b00cc){return _0x14a7ae(_0x5d8418,_0x4b00cc);},'cUAhm':'OnairosReactNative/HealthCheck','dWDyJ':function(_0x3fdf6c,_0x4a1133){return _0x3fdf6c(_0x4a1133);},'RPyHT':function(_0x47af7f,_0x258400){return _0x47af7f-_0x258400;}},_0x119531=Date[_0x3701(0x3b)]();try{if(_0xd5220f[_0x3701(0x59)](_0xd5220f['SpTEe'],_0xd5220f[_0x3701(0x5a)]))return _0xd4c4a5['message'][_0x3701(0xb)](_0xd5220f[_0x3701(0x5b)])||_0x23521e[_0x3701(0xa)][_0x3701(0xb)](_0xd5220f[_0x3701(0x5c)])||_0x5a3bda[_0x3701(0xa)]['includes'](_0x3701(0x4d))||_0xd5220f[_0x3701(0x5d)](_0x312f97[_0x3701(0x28)],_0xd5220f[_0x3701(0x5e)]);else{const _0x86d7ea=new AbortController(),_0x32787f=_0xd5220f[_0x3701(0x5f)](setTimeout,()=>_0x86d7ea[_0x3701(0x60)](),_0x2687b8),_0x11a29f=await _0xd5220f[_0x3701(0x5f)](fetch,_0x33a708,{'method':'GET','signal':_0x86d7ea[_0x3701(0x61)],'headers':{'User-Agent':_0xd5220f[_0x3701(0x62)]}});return _0xd5220f[_0x3701(0x63)](clearTimeout,_0x32787f),{'reachable':!![],'status':_0x11a29f[_0x3701(0x6)],'duration':_0xd5220f[_0x3701(0x64)](Date[_0x3701(0x3b)](),_0x119531)};}}catch(_0x5a6477){return{'reachable':![],'error':_0x5a6477[_0x3701(0xa)],'duration':_0xd5220f[_0x3701(0x64)](Date['now'](),_0x119531)};}}
|
|
@@ -4,4 +4,4 @@ var __ONAIROS_REQ_REGISTRY__ = [
|
|
|
4
4
|
require('react-native-keychain')
|
|
5
5
|
];
|
|
6
6
|
function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
|
|
7
|
-
import{Platform}from'react-native';import{STORAGE_KEYS}from'../constants';import AsyncStorage from'@react-native-async-storage/async-storage';function _0x9688(){const _0x4078a7=['onairos_jwt_token','warn','mock','pXrpJ','getGenericPassword','function','FLUnt','DoXXw','ooMbs','service','default','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','nJfbY','Error\x20verifying\x20credentials:','WVIZY','pwIYn','vXYoM','AQcmC','pYovY','nOxkP','ViueX','error','qeEdI','setGenericPassword','SEjxO','yNQUd','Username\x20is\x20required\x20for\x20storing\x20credentials','sLibn','kvtIg','XJUPl','qtSyS','VUXDO','resetGenericPassword','qBVdD','cyTLO','mYorQ','EaWzD','ZexBo','gnYtl','UnMKd','hQDWI','nDZLU','Error\x20storing\x20credentials:','tAAjF','uSOVr','createdAt','credentials','web','enmio','eIFNT','fGwcj','accessControl','ACCESS_CONTROL','BIOMETRY_ANY_OR_DEVICE_PASSCODE','ACCESSIBLE','WHEN_UNLOCKED','WduZh','XCrtC','stringify','WRUYW','tXLYt','Inwdw','YDZwD','DNeAl','gFCit','Error\x20getting\x20credentials:','IGBqF','bXdAz','yiOVK','parse','ykHGu','lqoqn','nusLG','kRQEt','Error\x20deleting\x20credentials:','PlGRQ','ispLc','tKePb','yXQCG','lhmtp','toString','substring','dev_','RAXVQ','LmBYa','Error\x20checking\x20credentials:','NcVQU','❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','JIkFE','VSjgl','BVaCc','getItem','MMvRm','cZrls','❌\x20Failed\x20to\x20check\x20JWT\x20token:','WoCWo','vtRqN','vRxTO','qWGun','kKkds','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','yjpbP','IzxTS','YAFSn','removeItem','log','🗑️\x20JWT\x20token\x20cleared','BdIsT','length','uPyQF','UfOny','indexOf','IDfEQ','charAt','ATNfT','tOYEp','fromCharCode','TEzOj','gZkZn','YpXDs','LBxZF','OXinB','fEuQL','eVjTn','SHlUw','LVKDw','pqiQT','MhZUx','ktczc','OEBJW','HniYl','iWCqM','JMYAO','AYian','ivitL','ybLAQ','GHiUW','vrhTO','SBNaH','fYenk','Ylonl','❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','split','CkGiT','HXBLr','ZoIWB','TGyeR','JzlnH','❌\x20Failed\x20to\x20check\x20JWT\x20expiration:','exp','now','iLGQc','ByqMI'];_0x9688=function(){return _0x4078a7;};return _0x9688();}const JWT_TOKEN_KEY=_0x6356(0x0),mockStorage={};let Keychain=null;try{Keychain=__ONAIROS_REQ_FUNC__(0x0);}catch(_0x4a3915){console[_0x6356(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x6356(0x2)},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x6356(0x2)},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}function _0x6356(_0x9688c,_0x635677){_0x9688c=_0x9688c-0x0;const _0x447dd1=_0x9688();let _0x39350a=_0x447dd1[_0x9688c];return _0x39350a;}const isKeychainAvailable=()=>{const _0x568419={'pXrpJ':function(_0x3edbf0,_0x111dc7){return _0x3edbf0===_0x111dc7;}};try{return Keychain&&_0x568419[_0x6356(0x3)](typeof Keychain[_0x6356(0x4)],_0x6356(0x5));}catch(_0x493ada){return![];}},safeGetGenericPassword=async _0x256462=>{const _0x5b02d7={'FLUnt':function(_0x37f6b0){return _0x37f6b0();},'DoXXw':function(_0x4e14b2,_0x88feec){return _0x4e14b2===_0x88feec;},'ooMbs':function(_0x5858d9,_0x511371){return _0x5858d9===_0x511371;},'nJfbY':'default'};try{if(_0x5b02d7[_0x6356(0x6)](isKeychainAvailable))return await Keychain[_0x6356(0x4)](_0x256462);else{const _0x4ad3e6=(_0x5b02d7[_0x6356(0x7)](_0x256462,null)||_0x5b02d7[_0x6356(0x8)](_0x256462,void 0x0)?void 0x0:_0x256462[_0x6356(0x9)])||_0x6356(0xa);return mockStorage[_0x4ad3e6]||null;}}catch(_0x37e55e){console[_0x6356(0x1)](_0x6356(0xb),_0x37e55e);const _0x4195b7=(_0x256462===null||_0x5b02d7[_0x6356(0x8)](_0x256462,void 0x0)?void 0x0:_0x256462[_0x6356(0x9)])||_0x5b02d7[_0x6356(0xc)];return mockStorage[_0x4195b7]||null;}},safeSetGenericPassword=async(_0x18ce7e,_0xa9bd2a,_0x5974d9)=>{const _0x2bbc60={'qeEdI':'❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','rVcbK':_0x6356(0xd),'vXYoM':function(_0x69fb15,_0x44226f){return _0x69fb15===_0x44226f;},'AQcmC':_0x6356(0xe),'pYovY':function(_0x4603db){return _0x4603db();},'nOxkP':_0x6356(0xf),'SEjxO':_0x6356(0xa),'yNQUd':_0x6356(0xb)};try{if(_0x2bbc60[_0x6356(0x10)](_0x2bbc60['AQcmC'],_0x2bbc60[_0x6356(0x11)])){if(_0x2bbc60[_0x6356(0x12)](isKeychainAvailable))return _0x2bbc60[_0x6356(0x10)](_0x2bbc60[_0x6356(0x13)],_0x6356(0x14))?(_0x4cce8f[_0x6356(0x15)](_0x2bbc60[_0x6356(0x16)],_0x11bed1),null):await Keychain[_0x6356(0x17)](_0x18ce7e,_0xa9bd2a,_0x5974d9);else{const _0x5d46b4=(_0x5974d9===null||_0x2bbc60[_0x6356(0x10)](_0x5974d9,void 0x0)?void 0x0:_0x5974d9[_0x6356(0x9)])||_0x2bbc60[_0x6356(0x18)];return mockStorage[_0x5d46b4]={'username':_0x18ce7e,'password':_0xa9bd2a},!![];}}else try{if(!_0x4143d8())return!![];return!![];}catch(_0x18f500){return _0x4c61bd[_0x6356(0x15)](_0x2bbc60['rVcbK'],_0x18f500),![];}}catch(_0x499625){console[_0x6356(0x1)](_0x2bbc60[_0x6356(0x19)],_0x499625);const _0x16760f=(_0x2bbc60['vXYoM'](_0x5974d9,null)||_0x5974d9===void 0x0?void 0x0:_0x5974d9[_0x6356(0x9)])||_0x6356(0xa);return mockStorage[_0x16760f]={'username':_0x18ce7e,'password':_0xa9bd2a},!![];}},safeResetGenericPassword=async _0x2a917f=>{const _0x485527={'mYorQ':_0x6356(0x1a),'XJUPl':function(_0x1219cf){return _0x1219cf();},'qtSyS':function(_0x57098a,_0x2ea49c){return _0x57098a===_0x2ea49c;},'VUXDO':_0x6356(0x1b),'cyTLO':_0x6356(0x1c),'EaWzD':function(_0x3c5a0b,_0x31ef22){return _0x3c5a0b===_0x31ef22;},'ZexBo':_0x6356(0xa),'gnYtl':_0x6356(0xb)};try{if(_0x485527[_0x6356(0x1d)](isKeychainAvailable))return _0x485527[_0x6356(0x1e)](_0x485527[_0x6356(0x1f)],_0x6356(0x1b))?await Keychain[_0x6356(0x20)](_0x2a917f):!![];else{if(_0x485527[_0x6356(0x1e)](_0x6356(0x21),_0x485527[_0x6356(0x22)]))throw new _0x9df7f2(_0x485527[_0x6356(0x23)]);else{const _0x7afdca=(_0x485527[_0x6356(0x24)](_0x2a917f,null)||_0x485527[_0x6356(0x24)](_0x2a917f,void 0x0)?void 0x0:_0x2a917f[_0x6356(0x9)])||_0x485527[_0x6356(0x25)];return delete mockStorage[_0x7afdca],!![];}}}catch(_0x4ccd39){console[_0x6356(0x1)](_0x485527[_0x6356(0x26)],_0x4ccd39);const _0x7637e2=(_0x485527[_0x6356(0x1e)](_0x2a917f,null)||_0x2a917f===void 0x0?void 0x0:_0x2a917f['service'])||_0x485527[_0x6356(0x25)];return delete mockStorage[_0x7637e2],!![];}};export const storeCredentials=async _0x3b0823=>{const _0x3d4cab={'uSOVr':function(_0x141dee,_0x28c7a4){return _0x141dee===_0x28c7a4;},'WduZh':_0x6356(0xa),'kAUBi':function(_0x5cd940,_0x3bd9e4){return _0x5cd940(_0x3bd9e4);},'tAAjF':function(_0x3931f9){return _0x3931f9();},'enmio':function(_0x2f1f07,_0x5a393b){return _0x2f1f07!==_0x5a393b;},'eIFNT':_0x6356(0x27),'fGwcj':_0x6356(0x28),'XCrtC':function(_0x31dd5c,_0x495199,_0x231dc6,_0x41ac2e){return _0x31dd5c(_0x495199,_0x231dc6,_0x41ac2e);},'WRUYW':function(_0x83b407,_0x50e5d0){return _0x83b407!==_0x50e5d0;},'tXLYt':'rdzAM','Inwdw':_0x6356(0x29),'YDZwD':_0x6356(0x2a)};try{const _0x52b890=await _0x3d4cab[_0x6356(0x2b)](getCredentials),_0xbc58e5={..._0x52b890,..._0x3b0823,'createdAt':(_0x52b890===null||_0x3d4cab[_0x6356(0x2c)](_0x52b890,void 0x0)?void 0x0:_0x52b890[_0x6356(0x2d)])||Date['now']()},_0x7e63bc=_0xbc58e5['username'];if(!_0x7e63bc)throw new Error(_0x6356(0x1a));const _0x124f62={'service':STORAGE_KEYS[_0x6356(0x2e)]};if(Platform['OS']!==_0x6356(0x2f)&&isKeychainAvailable()){if(_0x3d4cab[_0x6356(0x30)](_0x3d4cab[_0x6356(0x31)],_0x3d4cab[_0x6356(0x32)]))_0x124f62[_0x6356(0x33)]=Keychain[_0x6356(0x34)][_0x6356(0x35)],_0x124f62['accessible']=Keychain[_0x6356(0x36)][_0x6356(0x37)];else{const _0x5b1ae3=(_0x3d4cab[_0x6356(0x2c)](_0x41ae94,null)||_0x3d4cab[_0x6356(0x2c)](_0x4fec87,void 0x0)?void 0x0:_0x50131d[_0x6356(0x9)])||_0x3d4cab[_0x6356(0x38)];return _0x41c318[_0x5b1ae3]||null;}}return await _0x3d4cab[_0x6356(0x39)](safeSetGenericPassword,_0x7e63bc,JSON[_0x6356(0x3a)](_0xbc58e5),_0x124f62),!![];}catch(_0x340ab8){if(_0x3d4cab[_0x6356(0x3b)](_0x3d4cab[_0x6356(0x3c)],_0x3d4cab[_0x6356(0x3d)]))return console[_0x6356(0x15)](_0x3d4cab[_0x6356(0x3e)],_0x340ab8),![];else Keychain=_0x3d4cab['kAUBi'](_0x4266c9,0x0);}};export const getCredentials=async()=>{const _0x5b8b01={'DJWnB':_0x6356(0xd),'jZKvE':function(_0x1716e1,_0x5782c5){return _0x1716e1(_0x5782c5);},'IGBqF':function(_0x2c8e3e,_0x23b744){return _0x2c8e3e===_0x23b744;},'bXdAz':_0x6356(0x3f),'yiOVK':_0x6356(0x40),'JOaCY':_0x6356(0x41)};try{const _0xdc6d63=await _0x5b8b01['jZKvE'](safeGetGenericPassword,{'service':STORAGE_KEYS[_0x6356(0x2e)]});if(_0xdc6d63)return _0x5b8b01[_0x6356(0x42)](_0x5b8b01[_0x6356(0x43)],_0x5b8b01[_0x6356(0x44)])?(_0x5f19f0[_0x6356(0x15)](_0x5b8b01['DJWnB'],_0x2f316d),![]):JSON[_0x6356(0x45)](_0xdc6d63['password']);return null;}catch(_0x2797e1){return console[_0x6356(0x15)](_0x5b8b01['JOaCY'],_0x2797e1),null;}};export const hasCredentials=async()=>{const _0x2c93ff={'lqoqn':function(_0xbc616,_0x1456c4){return _0xbc616!==_0x1456c4;},'nusLG':_0x6356(0x46)};try{const _0x3ef45f=await safeGetGenericPassword({'service':STORAGE_KEYS[_0x6356(0x2e)]});return!!_0x3ef45f;}catch(_0x4edb19){if(_0x2c93ff[_0x6356(0x47)](_0x2c93ff[_0x6356(0x48)],_0x2c93ff[_0x6356(0x48)]))_0x240cb2[_0x6356(0x33)]=Keychain[_0x6356(0x34)]['BIOMETRY_ANY_OR_DEVICE_PASSCODE'],_0x448057['accessible']=Keychain[_0x6356(0x36)][_0x6356(0x37)];else return console[_0x6356(0x15)]('Error\x20checking\x20credentials:',_0x4edb19),![];}};export const deleteCredentials=async()=>{const _0x402b8f={'yXQCG':_0x6356(0x2),'PhPva':function(_0x393b9f,_0x249e36){return _0x393b9f(_0x249e36);},'PlGRQ':function(_0x26df57,_0x521c01){return _0x26df57!==_0x521c01;},'ispLc':_0x6356(0x49),'tKePb':_0x6356(0x4a)};try{return await _0x402b8f['PhPva'](safeResetGenericPassword,{'service':STORAGE_KEYS['credentials']}),!![];}catch(_0x4e4d86){if(_0x402b8f[_0x6356(0x4b)]('fYtkW',_0x402b8f[_0x6356(0x4c)]))return console[_0x6356(0x15)](_0x402b8f[_0x6356(0x4d)],_0x4e4d86),![];else _0x2ad927[_0x6356(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x402b8f[_0x6356(0x4e)]},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x402b8f['yXQCG']},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}};export const updateCredentials=async _0x173aef=>{const _0x3e3f36={'lhmtp':function(_0x588cf0,_0x126078){return _0x588cf0(_0x126078);}};return _0x3e3f36[_0x6356(0x4f)](storeCredentials,_0x173aef);};export const generateDeviceUsername=()=>{const _0x5837b4=Math['random']()[_0x6356(0x50)](0x24)[_0x6356(0x51)](0x2,0xa);return _0x6356(0x52)+_0x5837b4;};export const verifyCredentials=async _0x3c1bb8=>{const _0x1eb670={'RAXVQ':function(_0x5a7256){return _0x5a7256();},'LmBYa':'Error\x20verifying\x20credentials:'};try{if(!_0x1eb670[_0x6356(0x53)](isKeychainAvailable))return!![];return!![];}catch(_0x49b5b0){return console[_0x6356(0x15)](_0x1eb670[_0x6356(0x54)],_0x49b5b0),![];}};export const getJWT=async()=>{const _0x2aefc8={'EOSMe':_0x6356(0x55),'JIkFE':function(_0x88f155,_0x595399){return _0x88f155===_0x595399;},'VSjgl':'NyMDm','BVaCc':_0x6356(0x56),'MMvRm':_0x6356(0x57)};try{if(_0x2aefc8[_0x6356(0x58)](_0x2aefc8[_0x6356(0x59)],_0x2aefc8[_0x6356(0x5a)]))return _0x3388f0[_0x6356(0x15)](_0x2aefc8['EOSMe'],_0x1c3a12),![];else{const _0x7f51e0=await AsyncStorage[_0x6356(0x5b)](JWT_TOKEN_KEY);return _0x7f51e0;}}catch(_0x171db4){return console['error'](_0x2aefc8[_0x6356(0x5c)],_0x171db4),null;}};export const hasJWT=async()=>{const _0xeb13b7={'qWGun':_0x6356(0xb),'WoCWo':function(_0x5740c7,_0x507abb){return _0x5740c7===_0x507abb;},'LOrSV':_0x6356(0xa),'vtRqN':_0x6356(0x5d),'vRxTO':'sUsWH','kKkds':_0x6356(0x5e)};try{const _0x14a336=await AsyncStorage[_0x6356(0x5b)](JWT_TOKEN_KEY);return!!_0x14a336;}catch(_0x226a9b){if(_0xeb13b7[_0x6356(0x5f)](_0xeb13b7[_0x6356(0x60)],_0xeb13b7[_0x6356(0x61)])){_0x4d658d[_0x6356(0x1)](_0xeb13b7[_0x6356(0x62)],_0x3f389b);const _0x263e81=(_0xeb13b7['WoCWo'](_0x1ceb4f,null)||_0xeb13b7[_0x6356(0x5f)](_0x245c0f,void 0x0)?void 0x0:_0x5a0f5a[_0x6356(0x9)])||_0xeb13b7['LOrSV'];return delete _0x338148[_0x263e81],!![];}else return console[_0x6356(0x15)](_0xeb13b7[_0x6356(0x63)],_0x226a9b),![];}};export const clearJWT=async()=>{const _0x2461ca={'BdIsT':function(_0x136774,_0x4867f3){return _0x136774%_0x4867f3;},'uPyQF':_0x6356(0x64),'UfOny':function(_0x8f1a0,_0x5343a1){return _0x8f1a0<_0x5343a1;},'IDfEQ':function(_0x31f3a2,_0x27c06e){return _0x31f3a2+_0x27c06e;},'ATNfT':function(_0x139da1,_0x25fac7){return _0x139da1|_0x25fac7;},'tOYEp':function(_0x572dba,_0x412a25){return _0x572dba<<_0x412a25;},'FvrEm':function(_0x317bda,_0x3a2550){return _0x317bda<<_0x3a2550;},'TEzOj':function(_0xbb8b7e,_0x40168a){return _0xbb8b7e>>_0x40168a;},'yjpbP':function(_0x471fea,_0x27eb0e){return _0x471fea!==_0x27eb0e;},'gZkZn':function(_0x2621e1,_0x26fa3f){return _0x2621e1&_0x26fa3f;},'LBxZF':_0x6356(0xb),'VbqtL':_0x6356(0xa),'IzxTS':'wZMxs','YpXDs':'mccQH','OXinB':_0x6356(0x65)};try{if(_0x2461ca[_0x6356(0x66)](_0x2461ca[_0x6356(0x67)],_0x6356(0x68)))return await AsyncStorage[_0x6356(0x69)](JWT_TOKEN_KEY),console[_0x6356(0x6a)](_0x6356(0x6b)),!![];else{while(_0x2461ca[_0x6356(0x6c)](_0x37869a[_0x6356(0x6d)],0x4)){_0x561354+='=';}const _0x4b3cd7=_0x2461ca[_0x6356(0x6e)];let _0x4e77a8='';for(let _0x561fe3=0x0;_0x2461ca[_0x6356(0x6f)](_0x561fe3,_0x1bf8cb[_0x6356(0x6d)]);_0x561fe3+=0x4){const _0x1bf808=_0x4b3cd7['indexOf'](_0x4f8938['charAt'](_0x561fe3)),_0x3ec8cf=_0x4b3cd7[_0x6356(0x70)](_0x41f7b6['charAt'](_0x2461ca['IDfEQ'](_0x561fe3,0x1))),_0x3d720c=_0x4b3cd7[_0x6356(0x70)](_0x11bcf7['charAt'](_0x2461ca[_0x6356(0x71)](_0x561fe3,0x2))),_0x5ceaae=_0x4b3cd7[_0x6356(0x70)](_0x10e9d1[_0x6356(0x72)](_0x561fe3+0x3)),_0x5213e5=_0x2461ca[_0x6356(0x73)](_0x2461ca[_0x6356(0x73)](_0x1bf808<<0x12|_0x2461ca[_0x6356(0x74)](_0x3ec8cf,0xc),_0x2461ca['FvrEm'](_0x3d720c,0x6)),_0x5ceaae);_0x4e77a8+=_0x31ac13[_0x6356(0x75)](_0x2461ca[_0x6356(0x76)](_0x5213e5,0x10)&0xff);if(_0x2461ca['yjpbP'](_0x3d720c,0x40))_0x4e77a8+=_0x1ce12d[_0x6356(0x75)](_0x2461ca[_0x6356(0x77)](_0x5213e5>>0x8,0xff));if(_0x5ceaae!==0x40)_0x4e77a8+=_0x4381ee[_0x6356(0x75)](_0x2461ca['gZkZn'](_0x5213e5,0xff));}return _0x4e77a8;}}catch(_0x2153bf){if(_0x2461ca[_0x6356(0x66)](_0x2461ca['YpXDs'],_0x2461ca[_0x6356(0x78)])){_0x1e4b28[_0x6356(0x1)](_0x2461ca[_0x6356(0x79)],_0x195000);const _0x51b931=(_0x2bf000===null||_0x54ab51===void 0x0?void 0x0:_0x3cfe45[_0x6356(0x9)])||_0x2461ca['VbqtL'];return _0x24f137[_0x51b931]||null;}else return console[_0x6356(0x15)](_0x2461ca[_0x6356(0x7a)],_0x2153bf),![];}};const base64Decode=_0x436b19=>{const _0x331b16={'LVKDw':function(_0x385e51,_0x37982e){return _0x385e51+_0x37982e;},'ybLAQ':function(_0x2cfd27,_0x449617){return _0x2cfd27|_0x449617;},'pqiQT':function(_0x1241d6,_0x52bcdb){return _0x1241d6<<_0x52bcdb;},'MhZUx':function(_0x447128,_0x20ab29){return _0x447128<<_0x20ab29;},'fYenk':function(_0x1c6421,_0x119b5c){return _0x1c6421&_0x119b5c;},'ktczc':function(_0x452964,_0x5ba926){return _0x452964>>_0x5ba926;},'OEBJW':function(_0x20f9f7,_0x351b19){return _0x20f9f7!==_0x351b19;},'HniYl':function(_0x26ba2c,_0x5b6e8){return _0x26ba2c&_0x5b6e8;},'fEuQL':function(_0x581b29,_0x4f755d){return _0x581b29%_0x4f755d;},'SHlUw':'ARzAC','iWCqM':_0x6356(0x64),'JMYAO':function(_0x5104bc,_0x3d5c46){return _0x5104bc<_0x3d5c46;},'AYian':function(_0x5980ec,_0x1173ed){return _0x5980ec+_0x1173ed;},'ivitL':function(_0x19b5d4,_0x2c1e49){return _0x19b5d4+_0x2c1e49;},'XBjGc':function(_0x135c7f,_0x3259af){return _0x135c7f<<_0x3259af;},'GHiUW':function(_0x1c7caf,_0x19d136){return _0x1c7caf<<_0x19d136;},'WkKoT':function(_0x114708,_0x5a770c){return _0x114708<<_0x5a770c;},'vrhTO':function(_0x3fa88d,_0x58c5dd){return _0x3fa88d&_0x58c5dd;},'SBNaH':function(_0x439656,_0x8e54f7){return _0x439656>>_0x8e54f7;}};while(_0x331b16[_0x6356(0x7b)](_0x436b19[_0x6356(0x6d)],0x4)){if(_0x6356(0x7c)===_0x331b16[_0x6356(0x7d)]){const _0x204854=_0x540518[_0x6356(0x70)](_0x84144d[_0x6356(0x72)](_0x2912d2)),_0x26aa38=_0x4ffce8[_0x6356(0x70)](_0x488786['charAt'](_0x1ec959+0x1)),_0xb6cf68=_0x24949d[_0x6356(0x70)](_0xb2f4af[_0x6356(0x72)](_0x11ea78+0x2)),_0x57151b=_0x27a885['indexOf'](_0x5e67d6[_0x6356(0x72)](_0x331b16[_0x6356(0x7e)](_0x25bb83,0x3))),_0x1fd5dd=_0x331b16['ybLAQ'](_0x331b16['ybLAQ'](_0x331b16[_0x6356(0x7f)](_0x204854,0x12),_0x331b16[_0x6356(0x80)](_0x26aa38,0xc)),_0xb6cf68<<0x6)|_0x57151b;_0x19dac3+=_0x389091['fromCharCode'](_0x331b16['fYenk'](_0x331b16[_0x6356(0x81)](_0x1fd5dd,0x10),0xff));if(_0x331b16[_0x6356(0x82)](_0xb6cf68,0x40))_0x12b98a+=_0x2d81e3['fromCharCode'](_0x331b16[_0x6356(0x83)](_0x331b16[_0x6356(0x81)](_0x1fd5dd,0x8),0xff));if(_0x331b16[_0x6356(0x82)](_0x57151b,0x40))_0x32435c+=_0x4217da[_0x6356(0x75)](_0x1fd5dd&0xff);}else _0x436b19+='=';}const _0x141eaa=_0x331b16[_0x6356(0x84)];let _0x47fb31='';for(let _0x21c977=0x0;_0x331b16[_0x6356(0x85)](_0x21c977,_0x436b19['length']);_0x21c977+=0x4){const _0x2bb634=_0x141eaa[_0x6356(0x70)](_0x436b19[_0x6356(0x72)](_0x21c977)),_0x325527=_0x141eaa['indexOf'](_0x436b19[_0x6356(0x72)](_0x331b16[_0x6356(0x86)](_0x21c977,0x1))),_0x1c5cb1=_0x141eaa[_0x6356(0x70)](_0x436b19[_0x6356(0x72)](_0x331b16[_0x6356(0x87)](_0x21c977,0x2))),_0x9d38f4=_0x141eaa[_0x6356(0x70)](_0x436b19['charAt'](_0x331b16['ivitL'](_0x21c977,0x3))),_0x514152=_0x331b16[_0x6356(0x88)](_0x331b16[_0x6356(0x88)](_0x331b16['XBjGc'](_0x2bb634,0x12)|_0x331b16[_0x6356(0x89)](_0x325527,0xc),_0x331b16['WkKoT'](_0x1c5cb1,0x6)),_0x9d38f4);_0x47fb31+=String[_0x6356(0x75)](_0x331b16[_0x6356(0x83)](_0x331b16[_0x6356(0x81)](_0x514152,0x10),0xff));if(_0x331b16['OEBJW'](_0x1c5cb1,0x40))_0x47fb31+=String[_0x6356(0x75)](_0x331b16[_0x6356(0x8a)](_0x331b16[_0x6356(0x8b)](_0x514152,0x8),0xff));if(_0x9d38f4!==0x40)_0x47fb31+=String[_0x6356(0x75)](_0x331b16[_0x6356(0x8c)](_0x514152,0xff));}return _0x47fb31;};export const getJWTPayload=async()=>{const _0x32236d={'CkGiT':function(_0x519b06,_0x1d8767){return _0x519b06!==_0x1d8767;},'HXBLr':function(_0x2d5afb,_0x535043){return _0x2d5afb(_0x535043);},'ZoIWB':_0x6356(0x8d),'TGyeR':_0x6356(0x8e)};try{const _0x23056f=await getJWT();if(!_0x23056f)return null;const _0x5e8f54=_0x23056f[_0x6356(0x8f)]('.');if(_0x32236d[_0x6356(0x90)](_0x5e8f54[_0x6356(0x6d)],0x3))return null;const _0x50476a=_0x32236d[_0x6356(0x91)](base64Decode,_0x5e8f54[0x1]),_0x149d18=JSON[_0x6356(0x45)](_0x50476a);return _0x149d18;}catch(_0x2e4a7e){return _0x32236d[_0x6356(0x90)](_0x32236d[_0x6356(0x92)],_0x6356(0x8d))?(_0x152b0a[_0x6356(0x15)]('❌\x20Failed\x20to\x20decode\x20JWT\x20payload:',_0x4a8052),null):(console[_0x6356(0x15)](_0x32236d[_0x6356(0x93)],_0x2e4a7e),null);}};export const isJWTExpired=async()=>{const _0x15a19d={'iLGQc':function(_0x4d605c,_0x390348){return _0x4d605c!==_0x390348;},'ByqMI':_0x6356(0x94),'xQEWs':_0x6356(0x95)};try{const _0x675bbd=await getJWTPayload();if(!_0x675bbd||!_0x675bbd[_0x6356(0x96)])return!![];const _0xe4b85d=Math['floor'](Date[_0x6356(0x97)]()/0x3e8);return _0x675bbd[_0x6356(0x96)]<_0xe4b85d;}catch(_0x180d93){if(_0x15a19d[_0x6356(0x98)](_0x15a19d[_0x6356(0x99)],_0x15a19d['ByqMI']))_0x1c6b65+='=';else return console['error'](_0x15a19d['xQEWs'],_0x180d93),!![];}};
|
|
7
|
+
import{Platform}from'react-native';import{STORAGE_KEYS}from'../constants';import AsyncStorage from'@react-native-async-storage/async-storage';const JWT_TOKEN_KEY=_0x4cdf(0x0),mockStorage={};let Keychain=null;try{Keychain=__ONAIROS_REQ_FUNC__(0x0);}catch(_0x2aab97){console[_0x4cdf(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x4cdf(0x2)},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x4cdf(0x2)},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}const isKeychainAvailable=()=>{const _0x5e3514={'nXFmf':'Error\x20verifying\x20credentials:','kdYVm':function(_0x5639c2,_0x3519f0){return _0x5639c2===_0x3519f0;},'XVtYB':_0x4cdf(0x3),'xXxWh':_0x4cdf(0x4)};try{return Keychain&&_0x5e3514[_0x4cdf(0x5)](typeof Keychain[_0x4cdf(0x6)],_0x5e3514[_0x4cdf(0x7)]);}catch(_0x5804ff){return _0x5e3514[_0x4cdf(0x5)](_0x5e3514[_0x4cdf(0x8)],'cRgZh')?![]:(_0x21dde5['error'](_0x5e3514['nXFmf'],_0x1e7f14),![]);}},safeGetGenericPassword=async _0x2da864=>{const _0x48c309={'LXHTp':function(_0xc21a97,_0x3225ea){return _0xc21a97===_0x3225ea;},'miIcs':_0x4cdf(0x9),'vzLGo':function(_0x494ff4,_0x22f06a){return _0x494ff4===_0x22f06a;},'bCVBP':_0x4cdf(0xa),'yNJbN':_0x4cdf(0xb),'YVEPE':function(_0x2826ef,_0x5d611b){return _0x2826ef===_0x5d611b;},'vAmSp':function(_0x3e90a9,_0x9012d8){return _0x3e90a9===_0x9012d8;}};try{if(_0x48c309[_0x4cdf(0xc)](_0x48c309[_0x4cdf(0xd)],_0x48c309[_0x4cdf(0xd)])){if(isKeychainAvailable())return await Keychain[_0x4cdf(0x6)](_0x2da864);else{const _0x448e5f=(_0x48c309[_0x4cdf(0xc)](_0x2da864,null)||_0x48c309[_0x4cdf(0xe)](_0x2da864,void 0x0)?void 0x0:_0x2da864[_0x4cdf(0xf)])||_0x48c309[_0x4cdf(0x10)];return mockStorage[_0x448e5f]||null;}}else return!![];}catch(_0x5a2d1c){console['warn'](_0x48c309[_0x4cdf(0x11)],_0x5a2d1c);const _0x337bf9=(_0x48c309[_0x4cdf(0x12)](_0x2da864,null)||_0x48c309[_0x4cdf(0x13)](_0x2da864,void 0x0)?void 0x0:_0x2da864[_0x4cdf(0xf)])||_0x48c309[_0x4cdf(0x10)];return mockStorage[_0x337bf9]||null;}},safeSetGenericPassword=async(_0x5916b9,_0x1c0712,_0x9e45c9)=>{const _0x1cf73b={'UsQgs':_0x4cdf(0xb),'QpCOK':function(_0x3d66c5,_0x4f2f09){return _0x3d66c5===_0x4f2f09;},'DHhQq':function(_0x94d97b,_0x132357){return _0x94d97b===_0x132357;},'AJAjp':_0x4cdf(0x14),'MOMqC':_0x4cdf(0x15),'QlVVd':function(_0x2f38a5,_0x2884bd){return _0x2f38a5!==_0x2884bd;},'ZAvzW':_0x4cdf(0x16),'LHdOK':function(_0x2ceff7){return _0x2ceff7();},'JOjdx':_0x4cdf(0x17),'BenzJ':_0x4cdf(0xa),'ObBEQ':_0x4cdf(0x18)};try{if(_0x1cf73b[_0x4cdf(0x19)](_0x1cf73b[_0x4cdf(0x1a)],_0x4cdf(0x16))){_0x466873['warn'](_0x1cf73b[_0x4cdf(0x1b)],_0x352049);const _0x465030=(_0x1cf73b['QpCOK'](_0x300619,null)||_0x1cf73b[_0x4cdf(0x1c)](_0x35389b,void 0x0)?void 0x0:_0x389385[_0x4cdf(0xf)])||'default';return delete _0x59f0c3[_0x465030],!![];}else{if(_0x1cf73b['LHdOK'](isKeychainAvailable))return _0x1cf73b[_0x4cdf(0x1c)]('RmFcd',_0x1cf73b['JOjdx'])?await Keychain[_0x4cdf(0x1d)](_0x5916b9,_0x1c0712,_0x9e45c9):(_0x1a6b72[_0x4cdf(0x1e)](_0x1cf73b[_0x4cdf(0x1f)],_0x14cb3d),![]);else{const _0x3de5c3=(_0x1cf73b[_0x4cdf(0x1c)](_0x9e45c9,null)||_0x1cf73b[_0x4cdf(0x1c)](_0x9e45c9,void 0x0)?void 0x0:_0x9e45c9[_0x4cdf(0xf)])||_0x1cf73b[_0x4cdf(0x20)];return mockStorage[_0x3de5c3]={'username':_0x5916b9,'password':_0x1c0712},!![];}}}catch(_0x3abd5e){if(_0x1cf73b[_0x4cdf(0x1c)](_0x1cf73b[_0x4cdf(0x21)],_0x4cdf(0x18))){console[_0x4cdf(0x1)](_0x4cdf(0xb),_0x3abd5e);const _0xfb03ce=(_0x9e45c9===null||_0x9e45c9===void 0x0?void 0x0:_0x9e45c9[_0x4cdf(0xf)])||_0x1cf73b[_0x4cdf(0x20)];return mockStorage[_0xfb03ce]={'username':_0x5916b9,'password':_0x1c0712},!![];}else return _0x39dddb[_0x4cdf(0x1e)](_0x1cf73b[_0x4cdf(0x22)],_0x1df6b9),![];}},safeResetGenericPassword=async _0x4e7112=>{const _0x26d2a9={'SIuMP':_0x4cdf(0x2),'jbvgd':function(_0x5a8f8d){return _0x5a8f8d();},'FRzba':function(_0x32f4cd,_0x4ac926){return _0x32f4cd!==_0x4ac926;},'rMDGs':_0x4cdf(0x23),'YzxRb':_0x4cdf(0x24),'OYtep':function(_0x1b4e31,_0x3ef28a){return _0x1b4e31===_0x3ef28a;},'hauaG':_0x4cdf(0xa),'WvBFe':_0x4cdf(0xb)};try{if(_0x26d2a9[_0x4cdf(0x25)](isKeychainAvailable)){if(_0x26d2a9['FRzba'](_0x4cdf(0x26),_0x26d2a9[_0x4cdf(0x27)]))return await Keychain[_0x4cdf(0x28)](_0x4e7112);else _0x2ba33e[_0x4cdf(0x29)]=Keychain[_0x4cdf(0x2a)][_0x4cdf(0x2b)],_0x471294[_0x4cdf(0x2c)]=Keychain['ACCESSIBLE'][_0x4cdf(0x2d)];}else{if('aGgBh'===_0x26d2a9[_0x4cdf(0x2e)])_0x54f046[_0x4cdf(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x26d2a9[_0x4cdf(0x2f)]},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x26d2a9[_0x4cdf(0x2f)]},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};else{const _0xb7f82d=(_0x26d2a9[_0x4cdf(0x30)](_0x4e7112,null)||_0x4e7112===void 0x0?void 0x0:_0x4e7112['service'])||_0x26d2a9[_0x4cdf(0x31)];return delete mockStorage[_0xb7f82d],!![];}}}catch(_0xed6715){console[_0x4cdf(0x1)](_0x26d2a9['WvBFe'],_0xed6715);const _0x4dbeb5=(_0x4e7112===null||_0x4e7112===void 0x0?void 0x0:_0x4e7112['service'])||_0x26d2a9[_0x4cdf(0x31)];return delete mockStorage[_0x4dbeb5],!![];}};export const storeCredentials=async _0x2e98fd=>{const _0x306b70={'mNCPw':function(_0x46db45,_0x3cbec1){return _0x46db45===_0x3cbec1;},'dpoAK':_0x4cdf(0x3),'HZchf':function(_0x1f0cdf,_0x465064){return _0x1f0cdf!==_0x465064;},'HVAtX':_0x4cdf(0x32),'iqQEs':function(_0x189a20){return _0x189a20();},'vwVwr':_0x4cdf(0x33),'cCxCM':function(_0x3f879c,_0x2a823e,_0x31c00f,_0xb879f){return _0x3f879c(_0x2a823e,_0x31c00f,_0xb879f);},'EzVgH':_0x4cdf(0x14)};try{if(_0x306b70[_0x4cdf(0x34)](_0x4cdf(0x35),_0x306b70[_0x4cdf(0x36)])){const _0x56ed9e=await _0x306b70['iqQEs'](getCredentials),_0x46bae4={..._0x56ed9e,..._0x2e98fd,'createdAt':(_0x56ed9e===null||_0x306b70[_0x4cdf(0x37)](_0x56ed9e,void 0x0)?void 0x0:_0x56ed9e[_0x4cdf(0x38)])||Date[_0x4cdf(0x39)]()},_0x2ba739=_0x46bae4[_0x4cdf(0x3a)];if(!_0x2ba739)throw new Error(_0x4cdf(0x3b));const _0x54a813={'service':STORAGE_KEYS[_0x4cdf(0x3c)]};return _0x306b70['HZchf'](Platform['OS'],_0x306b70[_0x4cdf(0x3d)])&&_0x306b70[_0x4cdf(0x3e)](isKeychainAvailable)&&(_0x54a813[_0x4cdf(0x29)]=Keychain[_0x4cdf(0x2a)][_0x4cdf(0x2b)],_0x54a813[_0x4cdf(0x2c)]=Keychain[_0x4cdf(0x3f)]['WHEN_UNLOCKED']),await _0x306b70[_0x4cdf(0x40)](safeSetGenericPassword,_0x2ba739,JSON[_0x4cdf(0x41)](_0x46bae4),_0x54a813),!![];}else return Keychain&&_0x306b70['mNCPw'](typeof Keychain['getGenericPassword'],_0x306b70[_0x4cdf(0x42)]);}catch(_0x569b1d){return console[_0x4cdf(0x1e)](_0x306b70[_0x4cdf(0x43)],_0x569b1d),![];}};export const getCredentials=async()=>{const _0x3d68cc={'KGXdY':function(_0x1b3a9b,_0x35bb06){return _0x1b3a9b(_0x35bb06);}};try{const _0x5cdedb=await _0x3d68cc[_0x4cdf(0x44)](safeGetGenericPassword,{'service':STORAGE_KEYS[_0x4cdf(0x3c)]});if(_0x5cdedb)return JSON['parse'](_0x5cdedb[_0x4cdf(0x45)]);return null;}catch(_0x360b72){return console[_0x4cdf(0x1e)](_0x4cdf(0x46),_0x360b72),null;}};function _0x2e94(){const _0x3524bb=['onairos_jwt_token','warn','mock','function','cRgZh','kdYVm','getGenericPassword','XVtYB','xXxWh','NGsCH','default','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','LXHTp','miIcs','vzLGo','service','bCVBP','yNJbN','YVEPE','vAmSp','Error\x20storing\x20credentials:','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','BJUUf','RmFcd','IqTmL','QlVVd','ZAvzW','UsQgs','DHhQq','setGenericPassword','error','AJAjp','BenzJ','ObBEQ','MOMqC','BXgKL','yNTRL','jbvgd','YKrSL','rMDGs','resetGenericPassword','accessControl','ACCESS_CONTROL','BIOMETRY_ANY_OR_DEVICE_PASSCODE','accessible','WHEN_UNLOCKED','YzxRb','SIuMP','OYtep','hauaG','fkpfG','web','HZchf','kaOtM','HVAtX','mNCPw','createdAt','now','username','Username\x20is\x20required\x20for\x20storing\x20credentials','credentials','vwVwr','iqQEs','ACCESSIBLE','cCxCM','stringify','dpoAK','EzVgH','KGXdY','password','Error\x20getting\x20credentials:','faNAy','Error\x20checking\x20credentials:','zrBzn','ztVmK','cWeWI','uQwxE','ImQLj','toString','substring','dev_','Error\x20verifying\x20credentials:','VBdaT','ySgTF','irtOF','lcfDz','DyQxE','TYcWd','UvFys','TTGmP','vUuYS','HogNJ','WASgR','YeyoK','wNtvP','QGtgJ','qQfBI','PPOxx','getItem','seNPE','ckOhr','CtYXS','lfJak','❌\x20Failed\x20to\x20check\x20JWT\x20token:','🗑️\x20JWT\x20token\x20cleared','HdzkO','GMyew','nYHxg','indexOf','charAt','Fitww','SrnXF','WgWuR','jmfkJ','jPSvA','fromCharCode','DznFb','ZbmSy','sbmwB','HtuDF','removeItem','BNFLY','EGnIC','sGoJJ','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','voTIb','HKBAk','oYlmu','EQYop','dqsYx','WKoxa','vwbrW','TAhsA','iYTNK','hlaht','IogAO','ciYlj','YnblU','oYRvu','gyjpN','pArCJ','LRujv','iYWaN','FVqDw','ECOMo','TioqB','❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','JIizE','parse','QTfSF','bFRZr','length','OVIqQ','LUBii','FWjZD','bDIEG','xaQjQ','JuTwP','dcVMb','lSCOT','❌\x20Failed\x20to\x20check\x20JWT\x20expiration:','dAdyl','bjZTi','exp','floor','MEHzt'];_0x2e94=function(){return _0x3524bb;};return _0x2e94();}export const hasCredentials=async()=>{const _0x94371f={'cWeWI':function(_0x2927b5,_0x38a7b){return _0x2927b5===_0x38a7b;},'zrBzn':function(_0x21ef6a,_0x5d693c){return _0x21ef6a!==_0x5d693c;},'ztVmK':_0x4cdf(0x47),'YhXGC':_0x4cdf(0x48)};try{if(_0x94371f[_0x4cdf(0x49)](_0x94371f['ztVmK'],_0x94371f[_0x4cdf(0x4a)]))try{return Keychain&&_0x94371f[_0x4cdf(0x4b)](typeof Keychain[_0x4cdf(0x6)],_0x4cdf(0x3));}catch(_0x106b75){return![];}else{const _0x2d5f6e=await safeGetGenericPassword({'service':STORAGE_KEYS[_0x4cdf(0x3c)]});return!!_0x2d5f6e;}}catch(_0x27527d){return console['error'](_0x94371f['YhXGC'],_0x27527d),![];}};export const deleteCredentials=async()=>{const _0x493d3d={'uQwxE':function(_0x1c0688,_0x26c47e){return _0x1c0688(_0x26c47e);},'ImQLj':'Error\x20deleting\x20credentials:'};try{return await _0x493d3d[_0x4cdf(0x4c)](safeResetGenericPassword,{'service':STORAGE_KEYS[_0x4cdf(0x3c)]}),!![];}catch(_0x3a087c){return console['error'](_0x493d3d[_0x4cdf(0x4d)],_0x3a087c),![];}};export const updateCredentials=async _0x1ffb11=>{const _0x27cf1e={'ALdCA':function(_0x429a0d,_0x541045){return _0x429a0d(_0x541045);}};return _0x27cf1e['ALdCA'](storeCredentials,_0x1ffb11);};export const generateDeviceUsername=()=>{const _0x38ffd7=Math['random']()[_0x4cdf(0x4e)](0x24)[_0x4cdf(0x4f)](0x2,0xa);return _0x4cdf(0x50)+_0x38ffd7;};export const verifyCredentials=async _0x23cbcb=>{const _0x8ecc62={'TTGmP':function(_0x36819c){return _0x36819c();},'vUuYS':_0x4cdf(0x51),'WASgR':function(_0xa66ec1,_0x2000fd){return _0xa66ec1(_0x2000fd);},'DyQxE':function(_0x5bcd2c,_0x36021e){return _0x5bcd2c===_0x36021e;},'TYcWd':_0x4cdf(0x52),'UvFys':function(_0x5bbc8a,_0x3fd042){return _0x5bbc8a!==_0x3fd042;},'BzJpu':_0x4cdf(0x53),'HogNJ':_0x4cdf(0x54),'RUaTh':_0x4cdf(0x55)};try{if(_0x8ecc62[_0x4cdf(0x56)](_0x8ecc62['TYcWd'],_0x8ecc62[_0x4cdf(0x57)])){if(!isKeychainAvailable()){if(_0x8ecc62[_0x4cdf(0x58)]('ibxZC',_0x8ecc62['BzJpu']))return!![];else throw new _0x43dc1c(_0x4cdf(0x3b));}return!![];}else try{if(!_0x8ecc62[_0x4cdf(0x59)](_0x2ab960))return!![];return!![];}catch(_0x58f287){return _0x185548[_0x4cdf(0x1e)](_0x8ecc62[_0x4cdf(0x5a)],_0x58f287),![];}}catch(_0x3ae257){if(_0x8ecc62[_0x4cdf(0x5b)]===_0x8ecc62['RUaTh'])Keychain=_0x8ecc62[_0x4cdf(0x5c)](_0x790015,0x0);else return console[_0x4cdf(0x1e)](_0x8ecc62[_0x4cdf(0x5a)],_0x3ae257),![];}};export const getJWT=async()=>{const _0x377d11={'PPOxx':'❌\x20Failed\x20to\x20check\x20JWT\x20expiration:','lfJak':function(_0xa16674,_0x15e7b0){return _0xa16674===_0x15e7b0;},'wNtvP':function(_0x58d7aa,_0x382033){return _0x58d7aa!==_0x382033;},'QGtgJ':'qQfBI','seNPE':function(_0x217978,_0x19730e){return _0x217978===_0x19730e;},'ckOhr':_0x4cdf(0x5d),'CtYXS':'❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:'};try{if(_0x377d11[_0x4cdf(0x5e)](_0x377d11[_0x4cdf(0x5f)],_0x4cdf(0x60)))return _0x2fcacc[_0x4cdf(0x1e)](_0x377d11[_0x4cdf(0x61)],_0x3a14a2),!![];else{const _0x568494=await AsyncStorage[_0x4cdf(0x62)](JWT_TOKEN_KEY);return _0x568494;}}catch(_0x7dc3d3){if(_0x377d11[_0x4cdf(0x63)](_0x377d11['ckOhr'],_0x377d11[_0x4cdf(0x64)]))return console['error'](_0x377d11[_0x4cdf(0x65)],_0x7dc3d3),null;else{const _0x546452=(_0x377d11[_0x4cdf(0x66)](_0xda216a,null)||_0x377d11[_0x4cdf(0x66)](_0x3db48d,void 0x0)?void 0x0:_0x58d81e[_0x4cdf(0xf)])||'default';return _0x31b313[_0x546452]={'username':_0x201600,'password':_0x26be3f},!![];}}};function _0x4cdf(_0x2e94a3,_0x4cdf1a){_0x2e94a3=_0x2e94a3-0x0;const _0x306ed0=_0x2e94();let _0x59020d=_0x306ed0[_0x2e94a3];return _0x59020d;}export const hasJWT=async()=>{const _0x5c5978={'awwbx':_0x4cdf(0x67)};try{const _0xc69196=await AsyncStorage['getItem'](JWT_TOKEN_KEY);return!!_0xc69196;}catch(_0x11bbdc){return console[_0x4cdf(0x1e)](_0x5c5978['awwbx'],_0x11bbdc),![];}};export const clearJWT=async()=>{const _0x5553c9={'Fitww':function(_0x187def,_0x159c41){return _0x187def+_0x159c41;},'SrnXF':function(_0x2f4ebb,_0x2f061e){return _0x2f4ebb|_0x2f061e;},'WgWuR':function(_0x321799,_0x1ba5f4){return _0x321799<<_0x1ba5f4;},'jmfkJ':function(_0x517547,_0x548819){return _0x517547<<_0x548819;},'jPSvA':function(_0x4f2522,_0x4e9ec4){return _0x4f2522<<_0x4e9ec4;},'DznFb':function(_0x279e91,_0x54cd4d){return _0x279e91>>_0x54cd4d;},'ZbmSy':function(_0xd098f8,_0x5ec305){return _0xd098f8&_0x5ec305;},'sbmwB':function(_0x225234,_0x297d69){return _0x225234>>_0x297d69;},'pfHwe':function(_0x1b1fbd,_0x45aa70){return _0x1b1fbd!==_0x45aa70;},'HtuDF':function(_0x1bde74,_0x291c82){return _0x1bde74&_0x291c82;},'HdzkO':function(_0x33169d,_0x277cdc){return _0x33169d===_0x277cdc;},'GMyew':'xzZwa','nYHxg':'EkpoV','BNFLY':_0x4cdf(0x68)};try{if(_0x5553c9[_0x4cdf(0x69)](_0x5553c9[_0x4cdf(0x6a)],_0x5553c9[_0x4cdf(0x6b)])){const _0xf01f64=_0xa14115[_0x4cdf(0x6c)](_0x39a3ad[_0x4cdf(0x6d)](_0x91c9bd)),_0x4b3aca=_0x29de69[_0x4cdf(0x6c)](_0x2a62e8[_0x4cdf(0x6d)](_0x5553c9['Fitww'](_0x31edf3,0x1))),_0x2ff78b=_0x4e1d96[_0x4cdf(0x6c)](_0x12562d[_0x4cdf(0x6d)](_0x5553c9[_0x4cdf(0x6e)](_0xebf35d,0x2))),_0x36bd0a=_0x26c89c['indexOf'](_0x513241['charAt'](_0x5553c9[_0x4cdf(0x6e)](_0x54ec45,0x3))),_0x49da59=_0x5553c9[_0x4cdf(0x6f)](_0x5553c9[_0x4cdf(0x70)](_0xf01f64,0x12)|_0x5553c9[_0x4cdf(0x71)](_0x4b3aca,0xc),_0x5553c9[_0x4cdf(0x72)](_0x2ff78b,0x6))|_0x36bd0a;_0x38304f+=_0x570185[_0x4cdf(0x73)](_0x5553c9[_0x4cdf(0x74)](_0x49da59,0x10)&0xff);if(_0x2ff78b!==0x40)_0x29c9ce+=_0x1c9d38['fromCharCode'](_0x5553c9[_0x4cdf(0x75)](_0x5553c9[_0x4cdf(0x76)](_0x49da59,0x8),0xff));if(_0x5553c9['pfHwe'](_0x36bd0a,0x40))_0x238b14+=_0x2697b6['fromCharCode'](_0x5553c9[_0x4cdf(0x77)](_0x49da59,0xff));}else return await AsyncStorage[_0x4cdf(0x78)](JWT_TOKEN_KEY),console['log'](_0x5553c9[_0x4cdf(0x79)]),!![];}catch(_0x4e4c4a){return console[_0x4cdf(0x1e)](_0x4cdf(0x15),_0x4e4c4a),![];}};const base64Decode=_0x20f0a8=>{const _0x2df2db={'WKoxa':_0x4cdf(0xb),'EQYop':function(_0x302c6d,_0x467372){return _0x302c6d===_0x467372;},'vwbrW':function(_0x3807d5,_0x4f9331){return _0x3807d5===_0x4f9331;},'TAhsA':'default','FVqDw':function(_0x5be5fe,_0x2d6eae){return _0x5be5fe===_0x2d6eae;},'ECOMo':function(_0x14e296,_0x585695){return _0x14e296===_0x585695;},'oYlmu':function(_0x49efd7,_0x3e40d2){return _0x49efd7%_0x3e40d2;},'hfHRh':_0x4cdf(0x7a),'dqsYx':_0x4cdf(0x7b),'iYTNK':_0x4cdf(0x7c),'hlaht':function(_0x2ef646,_0x3175f8){return _0x2ef646<_0x3175f8;},'IogAO':function(_0x5ad717,_0xe8adbd){return _0x5ad717!==_0xe8adbd;},'EAekV':_0x4cdf(0x7d),'ciYlj':_0x4cdf(0x7e),'YnblU':function(_0x48c1aa,_0x2b5958){return _0x48c1aa+_0x2b5958;},'oYRvu':function(_0x34ff4e,_0x1f0c97){return _0x34ff4e|_0x1f0c97;},'gyjpN':function(_0x2ea820,_0x110f39){return _0x2ea820|_0x110f39;},'pArCJ':function(_0x400c47,_0x2c518f){return _0x400c47<<_0x2c518f;},'WoMFt':function(_0x1d96aa,_0x2b4dfd){return _0x1d96aa<<_0x2b4dfd;},'LRujv':function(_0x44613f,_0x44fb5b){return _0x44613f&_0x44fb5b;},'iYWaN':function(_0x33b9f1,_0x940803){return _0x33b9f1>>_0x940803;}};while(_0x2df2db[_0x4cdf(0x7f)](_0x20f0a8['length'],0x4)){if(_0x2df2db[_0x4cdf(0x80)](_0x2df2db['hfHRh'],_0x2df2db[_0x4cdf(0x81)])){_0x51eae1[_0x4cdf(0x1)](_0x2df2db[_0x4cdf(0x82)],_0x52e098);const _0x45985d=(_0x2df2db[_0x4cdf(0x80)](_0x548c10,null)||_0x2df2db[_0x4cdf(0x83)](_0x33e4f2,void 0x0)?void 0x0:_0xe95345[_0x4cdf(0xf)])||_0x2df2db[_0x4cdf(0x84)];return _0x5b8cf7[_0x45985d]={'username':_0x4f1120,'password':_0x1de2b0},!![];}else _0x20f0a8+='=';}const _0x363930=_0x2df2db[_0x4cdf(0x85)];let _0x18e5de='';for(let _0x1f902a=0x0;_0x2df2db[_0x4cdf(0x86)](_0x1f902a,_0x20f0a8['length']);_0x1f902a+=0x4){if(_0x2df2db[_0x4cdf(0x87)](_0x2df2db['EAekV'],_0x2df2db[_0x4cdf(0x88)])){const _0x4253f7=_0x363930[_0x4cdf(0x6c)](_0x20f0a8[_0x4cdf(0x6d)](_0x1f902a)),_0x528abe=_0x363930['indexOf'](_0x20f0a8[_0x4cdf(0x6d)](_0x1f902a+0x1)),_0x529c19=_0x363930[_0x4cdf(0x6c)](_0x20f0a8['charAt'](_0x2df2db[_0x4cdf(0x89)](_0x1f902a,0x2))),_0x4f489d=_0x363930['indexOf'](_0x20f0a8['charAt'](_0x2df2db[_0x4cdf(0x89)](_0x1f902a,0x3))),_0x2bc334=_0x2df2db[_0x4cdf(0x8a)](_0x2df2db[_0x4cdf(0x8b)](_0x2df2db[_0x4cdf(0x8c)](_0x4253f7,0x12),_0x2df2db[_0x4cdf(0x8c)](_0x528abe,0xc))|_0x2df2db['WoMFt'](_0x529c19,0x6),_0x4f489d);_0x18e5de+=String[_0x4cdf(0x73)](_0x2df2db[_0x4cdf(0x8d)](_0x2df2db[_0x4cdf(0x8e)](_0x2bc334,0x10),0xff));if(_0x2df2db[_0x4cdf(0x87)](_0x529c19,0x40))_0x18e5de+=String[_0x4cdf(0x73)](_0x2df2db[_0x4cdf(0x8d)](_0x2bc334>>0x8,0xff));if(_0x4f489d!==0x40)_0x18e5de+=String[_0x4cdf(0x73)](_0x2bc334&0xff);}else{const _0x333a33=(_0x2df2db[_0x4cdf(0x8f)](_0x93507,null)||_0x2df2db[_0x4cdf(0x90)](_0x302320,void 0x0)?void 0x0:_0x11137c['service'])||_0x2df2db[_0x4cdf(0x84)];return delete _0x500407[_0x333a33],!![];}}return _0x18e5de;};export const getJWTPayload=async()=>{const _0x513615={'bFRZr':function(_0x35edce,_0x53d49a){return _0x35edce%_0x53d49a;},'mmQcj':function(_0xc9add8,_0x1d88a3){return _0xc9add8+_0x1d88a3;},'pvdaN':function(_0x315d71,_0x2038b3){return _0x315d71+_0x2038b3;},'OVIqQ':function(_0x190e80,_0x3e898d){return _0x190e80+_0x3e898d;},'LUBii':function(_0x2bbd47,_0x50e955){return _0x2bbd47|_0x50e955;},'FWjZD':function(_0x53084b,_0x383aca){return _0x53084b|_0x383aca;},'bDIEG':function(_0x1e3362,_0x295052){return _0x1e3362<<_0x295052;},'xaQjQ':function(_0x273e12,_0x56144e){return _0x273e12<<_0x56144e;},'JuTwP':function(_0x505841,_0x755dbf){return _0x505841>>_0x755dbf;},'bDkjU':function(_0x28972d,_0x5bdfd3){return _0x28972d!==_0x5bdfd3;},'dcVMb':function(_0x8671c3,_0x3b34e9){return _0x8671c3&_0x3b34e9;},'QTfSF':function(_0xd60e79,_0x3c4d94){return _0xd60e79!==_0x3c4d94;},'JIizE':function(_0x5c747b,_0x17d1f8){return _0x5c747b(_0x17d1f8);},'RdBHd':_0x4cdf(0x91),'yiCYe':_0x4cdf(0x92)};try{const _0x484df1=await getJWT();if(!_0x484df1)return null;const _0x25dae0=_0x484df1['split']('.');if(_0x25dae0['length']!==0x3)return null;const _0x572bdf=_0x513615[_0x4cdf(0x93)](base64Decode,_0x25dae0[0x1]),_0x4cc1c8=JSON[_0x4cdf(0x94)](_0x572bdf);return _0x4cc1c8;}catch(_0x939a64){if(_0x513615[_0x4cdf(0x95)](_0x513615['RdBHd'],'TioqB')){while(_0x513615[_0x4cdf(0x96)](_0x4a0090['length'],0x4)){_0xab1e14+='=';}const _0x12a669='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';let _0x47bae5='';for(let _0x40cf1c=0x0;_0x40cf1c<_0x16e2f7[_0x4cdf(0x97)];_0x40cf1c+=0x4){const _0x51d95b=_0x12a669[_0x4cdf(0x6c)](_0x4a9c38[_0x4cdf(0x6d)](_0x40cf1c)),_0xb5f8d0=_0x12a669[_0x4cdf(0x6c)](_0x1b72f5[_0x4cdf(0x6d)](_0x513615['mmQcj'](_0x40cf1c,0x1))),_0x24e782=_0x12a669[_0x4cdf(0x6c)](_0x5d27ef[_0x4cdf(0x6d)](_0x513615['pvdaN'](_0x40cf1c,0x2))),_0x582e8c=_0x12a669[_0x4cdf(0x6c)](_0x30b9b3[_0x4cdf(0x6d)](_0x513615[_0x4cdf(0x98)](_0x40cf1c,0x3))),_0x120d17=_0x513615[_0x4cdf(0x99)](_0x513615[_0x4cdf(0x9a)](_0x513615[_0x4cdf(0x9b)](_0x51d95b,0x12)|_0x513615[_0x4cdf(0x9b)](_0xb5f8d0,0xc),_0x513615[_0x4cdf(0x9c)](_0x24e782,0x6)),_0x582e8c);_0x47bae5+=_0x51c64e['fromCharCode'](_0x513615[_0x4cdf(0x9d)](_0x120d17,0x10)&0xff);if(_0x513615['bDkjU'](_0x24e782,0x40))_0x47bae5+=_0x5a3f3b[_0x4cdf(0x73)](_0x513615[_0x4cdf(0x9e)](_0x120d17>>0x8,0xff));if(_0x513615[_0x4cdf(0x95)](_0x582e8c,0x40))_0x47bae5+=_0x5afbe6[_0x4cdf(0x73)](_0x120d17&0xff);}return _0x47bae5;}else return console['error'](_0x513615['yiCYe'],_0x939a64),null;}};export const isJWTExpired=async()=>{const _0x564011={'JBXxw':_0x4cdf(0x67),'dAdyl':function(_0x508140,_0xb1e2bc){return _0x508140===_0xb1e2bc;},'rsMND':_0x4cdf(0x9f),'bjZTi':function(_0x1e82cb){return _0x1e82cb();},'zykBF':function(_0x1e6998,_0x404127){return _0x1e6998<_0x404127;},'MEHzt':_0x4cdf(0xa0)};try{if(_0x564011[_0x4cdf(0xa1)]('WbTSP',_0x564011['rsMND']))return _0x3e4973[_0x4cdf(0x1e)](_0x564011['JBXxw'],_0x353010),![];else{const _0x2ba038=await _0x564011[_0x4cdf(0xa2)](getJWTPayload);if(!_0x2ba038||!_0x2ba038[_0x4cdf(0xa3)])return!![];const _0x87b986=Math[_0x4cdf(0xa4)](Date[_0x4cdf(0x39)]()/0x3e8);return _0x564011['zykBF'](_0x2ba038[_0x4cdf(0xa3)],_0x87b986);}}catch(_0x11aacc){return console['error'](_0x564011[_0x4cdf(0xa5)],_0x11aacc),!![];}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const CHATGPT_CONSENT_POPUP_SCRIPT='\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existing\x20=\x20document.getElementById(\x27onairos-consent-overlay\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(existing)\x20existing.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20overlay\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.id\x20=\x20\x27onairos-consent-overlay\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20fixed;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20rgba(0,\x200,\x200,\x200.7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x20999999;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20-apple-system,\x20BlinkMacSystemFont,\x20\x27Segoe\x20UI\x27,\x20Roboto,\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20popup\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20400px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2090%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x2020px\x2060px\x20rgba(0,\x200,\x200,\x200.3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.innerHTML\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2048px;\x20margin-bottom:\x2016px;\x22>🤖</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20style=\x22margin:\x200\x200\x2012px\x200;\x20font-size:\x2024px;\x20color:\x20#1a1a1a;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Export\x20Conversations?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin:\x200\x200\x2024px\x200;\x20color:\x20#666;\x20font-size:\x2016px;\x20line-height:\x201.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Allow\x20Onairos\x20to\x20export\x20your\x20top\x2010\x20ChatGPT\x20conversations\x20for\x20analysis?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20gap:\x2012px;\x20justify-content:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-deny\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#e0e0e0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#666;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Deny</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-allow\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20#667eea\x200%,\x20#764ba2\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Allow</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.appendChild(popup);\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.body.appendChild(overlay);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-deny\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20overlay.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27denied\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).innerHTML\x20=\x20\x27⏳\x20Starting...\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).disabled\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27allowed\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout(()\x20=>\x20overlay.remove(),\x20500);\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a';export const CHATGPT_EXPORT_SCRIPT='\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20VERSION\x20CHECK:\x20This\x20confirms\x20new\x20code\x20is\x20running\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🔄\x20[CHATGPT]\x20Script\x20version:\x20SDK_V1\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27DEBUG_LOG\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20version:\x20SDK_V1\x20loaded\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!document.body)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Page\x20not\x20ready\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Use\x20chatgpt.com\x20as\x20iOS\x20does\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🚀\x20[CHATGPT]\x20Starting\x20extraction\x20(iOS-style\x20with\x20access\x20token)...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x20(matches\x20iOS\x20fetchAccessToken)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x202,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20access\x20token\x20from\x20/api/auth/session...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Session\x20response\x20status:\x27,\x20sessionResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Got\x20accessToken:\x27,\x20accessToken\x20?\x20\x27YES\x20(len=\x27\x20+\x20accessToken.length\x20+\x20\x27)\x27\x20:\x20\x27NO\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20headers\x20matching\x20iOS\x20exactly\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27User-Agent\x27:\x20\x27Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2017_0\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Version/17.0\x20Mobile/15E148\x20Safari/604.1\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Start\x20BOTH\x20conversations\x20AND\x20memories\x20fetches\x20IN\x20PARALLEL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_list\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x205,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20conversations\x20and\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Starting\x20PARALLEL\x20fetch\x20of\x20conversations\x20AND\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20memories\x20fetch\x20IMMEDIATELY\x20using\x20XMLHttpRequest\x20(more\x20compatible\x20than\x20fetch)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20memoriesPromise\x20=\x20new\x20Promise((resolve)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20xhr\x20=\x20new\x20XMLHttpRequest();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.open(\x27GET\x27,\x20baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20true);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.withCredentials\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Accept\x27,\x20\x27application/json\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Authorization\x27,\x20\x27Bearer\x20\x27\x20+\x20accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onload\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20status:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(xhr.status\x20>=\x20200\x20&&\x20xhr.status\x20<\x20300)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20JSON.parse(xhr.responseText);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20allKeys\x20=\x20Object.keys(data\x20||\x20{});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20response\x20keys:\x27,\x20allKeys);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(parseErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20parse\x20error:\x27,\x20parseErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20API\x20returned:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onerror\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20error\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.send();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20request\x20sent\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(xhrErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20exception:\x27,\x20xhrErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20conversations\x20fetch\x20(in\x20parallel\x20with\x20memories)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20conversations\x20with\x20auth:\x27,\x20!!accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversations?limit=10\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Conversations\x20response:\x27,\x20listResponse.status);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!listResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20listResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20conversations\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listData\x20=\x20await\x20listResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conversations\x20=\x20listData.items\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Found\x27,\x20conversations.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(conversations.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Still\x20wait\x20for\x20memories\x20even\x20if\x20no\x20conversations\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20No\x20conversations,\x20waiting\x20for\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesItemsCount\x20=\x20noConvMemoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesEntriesCount\x20=\x20noConvMemoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories:\x20noConvMemoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20noConvMemoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20noConvMemoriesEntriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Connected!\x20No\x20conversations\x20found.\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x203:\x20Fetch\x20each\x20conversation\x20(matches\x20iOS\x20fetchAllConversationDetails)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x200/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20userMessages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20conversations.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conv\x20=\x20conversations[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20progressPercent\x20=\x2010\x20+\x20((i\x20/\x20conversations.length)\x20*\x2080);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27processing_conversation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20current:\x20i\x20+\x201,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total:\x20conversations.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x20Math.round(progressPercent),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x20\x27\x20+\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20iOS\x20uses\x200.3s\x20delay\x20-\x20we\x20use\x200.3s\x20too\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20new\x20Promise(resolve\x20=>\x20setTimeout(resolve,\x20300));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversation/\x27\x20+\x20conv.id,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(detailResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20convData\x20=\x20await\x20detailResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20messages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Extract\x20user\x20messages\x20from\x20mapping\x20(same\x20as\x20iOS)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20nodeId\x20in\x20convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20node\x20=\x20convData.mapping[nodeId];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(node.message\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author.role\x20===\x20\x27user\x27\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20part\x20of\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20part\x20===\x20\x27string\x27\x20&&\x20part.trim())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20messages.push(part.trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(messages.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20userMessages.push({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversation_id:\x20conv.id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20conv.title\x20||\x20\x27Untitled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_messages:\x20messages\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20✅\x20Conversation\x27,\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27:\x27,\x20conv.title,\x20\x27(\x27\x20+\x20messages.length\x20+\x20\x27\x20msgs)\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Conversation\x27,\x20conv.id,\x20\x27returned\x27,\x20detailResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(convError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Failed\x20conversation\x27,\x20conv.id\x20+\x20\x27:\x27,\x20convError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMessages\x20=\x20userMessages.reduce((sum,\x20c)\x20=>\x20sum\x20+\x20c.user_messages.length,\x200);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27✅\x20[CHATGPT]\x20Extraction\x20complete:\x27,\x20totalMessages,\x20\x27messages\x20from\x27,\x20userMessages.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x204:\x20Wait\x20for\x20memories\x20(started\x20in\x20parallel\x20at\x20STEP\x202)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Waiting\x20for\x20parallel\x20memories\x20fetch\x20to\x20complete...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20all\x20possible\x20field\x20names\x20(API\x20structure\x20varies)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesItemsCount\x20=\x20memoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesEntriesCount\x20=\x20memoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesArrayCount\x20=\x20memoriesData?.memories?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMemoriesCount\x20=\x20memoriesItemsCount\x20+\x20memoriesEntriesCount\x20+\x20memoriesArrayCount;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Final\x20memories\x20result:\x27,\x20memoriesItemsCount,\x20\x27items,\x27,\x20memoriesEntriesCount,\x20\x27entries,\x27,\x20memoriesArrayCount,\x20\x27memories\x20array\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20memories\x20to\x20React\x20Native\x20for\x20storage\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(memoriesData\x20&&\x20totalMemoriesCount\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Sending\x20memories\x20to\x20React\x20Native\x20for\x20storage...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_DATA\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20totalMemoriesCount:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20conversation\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20userMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x20userMessages.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x20totalMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20memoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20memoriesEntriesCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_array_count:\x20memoriesArrayCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_memories_count:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Export\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a';function _0x4c56(){const _0x19b946=['\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27✅\x20ChatGPT\x20export\x20successful!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27❌\x20ChatGPT\x20export\x20failed!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Starting\x20memories\x20extraction...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Fetch\x20memories\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_memories\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20ChatGPT\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!memoriesResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20memoriesResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20memories\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20itemsCount\x20=\x20memoriesData.items\x20?\x20memoriesData.items.length\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20entriesCount\x20=\x20memoriesData.memory_entries\x20?\x20memoriesData.memory_entries.length\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20itemsCount:\x20itemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entriesCount:\x20entriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20fetch\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Memories\x20fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a'];_0x4c56=function(){return _0x19b946;};return _0x4c56();}export const CHATGPT_SUCCESS_SCRIPT=_0x9dc2(0x0);function _0x9dc2(_0x4c56ee,_0x9dc2aa){_0x4c56ee=_0x4c56ee-0x0;const _0x582532=_0x4c56();let _0x19ecfc=_0x582532[_0x4c56ee];return _0x19ecfc;}export const CHATGPT_ERROR_SCRIPT=_0x9dc2(0x1);export const CHATGPT_FETCH_MEMORIES_SCRIPT=_0x9dc2(0x2);
|
|
1
|
+
export const CHATGPT_CONSENT_POPUP_SCRIPT=_0x1f27(0x0);export const CHATGPT_EXPORT_SCRIPT=_0x1f27(0x1);export const CHATGPT_SUCCESS_SCRIPT=_0x1f27(0x2);export const CHATGPT_ERROR_SCRIPT=_0x1f27(0x3);function _0x1f27(_0x16f13c,_0x1f27a4){_0x16f13c=_0x16f13c-0x0;const _0x17ebf8=_0x16f1();let _0x300619=_0x17ebf8[_0x16f13c];return _0x300619;}function _0x16f1(){const _0x1322f4=['\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existing\x20=\x20document.getElementById(\x27onairos-consent-overlay\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(existing)\x20existing.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20overlay\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.id\x20=\x20\x27onairos-consent-overlay\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20fixed;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20rgba(0,\x200,\x200,\x200.7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x20999999;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20-apple-system,\x20BlinkMacSystemFont,\x20\x27Segoe\x20UI\x27,\x20Roboto,\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20popup\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20400px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2090%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x2020px\x2060px\x20rgba(0,\x200,\x200,\x200.3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.innerHTML\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2048px;\x20margin-bottom:\x2016px;\x22>🤖</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20style=\x22margin:\x200\x200\x2012px\x200;\x20font-size:\x2024px;\x20color:\x20#1a1a1a;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Export\x20Conversations?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin:\x200\x200\x2024px\x200;\x20color:\x20#666;\x20font-size:\x2016px;\x20line-height:\x201.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Allow\x20Onairos\x20to\x20export\x20your\x20top\x2010\x20ChatGPT\x20conversations\x20for\x20analysis?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20gap:\x2012px;\x20justify-content:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-deny\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#e0e0e0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#666;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Deny</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-allow\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20#667eea\x200%,\x20#764ba2\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Allow</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.appendChild(popup);\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.body.appendChild(overlay);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-deny\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20overlay.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27denied\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).innerHTML\x20=\x20\x27⏳\x20Starting...\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).disabled\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27allowed\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout(()\x20=>\x20overlay.remove(),\x20500);\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20VERSION\x20CHECK:\x20This\x20confirms\x20new\x20code\x20is\x20running\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🔄\x20[CHATGPT]\x20Script\x20version:\x20SDK_V1\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27DEBUG_LOG\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20version:\x20SDK_V1\x20loaded\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!document.body)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Page\x20not\x20ready\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Use\x20chatgpt.com\x20as\x20iOS\x20does\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🚀\x20[CHATGPT]\x20Starting\x20extraction\x20(iOS-style\x20with\x20access\x20token)...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x20(matches\x20iOS\x20fetchAccessToken)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x202,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20access\x20token\x20from\x20/api/auth/session...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Session\x20response\x20status:\x27,\x20sessionResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Got\x20accessToken:\x27,\x20accessToken\x20?\x20\x27YES\x20(len=\x27\x20+\x20accessToken.length\x20+\x20\x27)\x27\x20:\x20\x27NO\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20headers\x20matching\x20iOS\x20exactly\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27User-Agent\x27:\x20\x27Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2017_0\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Version/17.0\x20Mobile/15E148\x20Safari/604.1\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Start\x20BOTH\x20conversations\x20AND\x20memories\x20fetches\x20IN\x20PARALLEL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_list\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x205,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20conversations\x20and\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Starting\x20PARALLEL\x20fetch\x20of\x20conversations\x20AND\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20memories\x20fetch\x20IMMEDIATELY\x20using\x20XMLHttpRequest\x20(more\x20compatible\x20than\x20fetch)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20memoriesPromise\x20=\x20new\x20Promise((resolve)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20xhr\x20=\x20new\x20XMLHttpRequest();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.open(\x27GET\x27,\x20baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20true);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.withCredentials\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Accept\x27,\x20\x27application/json\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Authorization\x27,\x20\x27Bearer\x20\x27\x20+\x20accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onload\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20status:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(xhr.status\x20>=\x20200\x20&&\x20xhr.status\x20<\x20300)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20JSON.parse(xhr.responseText);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20allKeys\x20=\x20Object.keys(data\x20||\x20{});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20response\x20keys:\x27,\x20allKeys);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(parseErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20parse\x20error:\x27,\x20parseErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20API\x20returned:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onerror\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20error\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.send();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20request\x20sent\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(xhrErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20exception:\x27,\x20xhrErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20conversations\x20fetch\x20(in\x20parallel\x20with\x20memories)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20conversations\x20with\x20auth:\x27,\x20!!accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversations?limit=10\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Conversations\x20response:\x27,\x20listResponse.status);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!listResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20listResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20conversations\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listData\x20=\x20await\x20listResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conversations\x20=\x20listData.items\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Found\x27,\x20conversations.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(conversations.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Still\x20wait\x20for\x20memories\x20even\x20if\x20no\x20conversations\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20No\x20conversations,\x20waiting\x20for\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesItemsCount\x20=\x20noConvMemoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesEntriesCount\x20=\x20noConvMemoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories:\x20noConvMemoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20noConvMemoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20noConvMemoriesEntriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Connected!\x20No\x20conversations\x20found.\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x203:\x20Fetch\x20each\x20conversation\x20(matches\x20iOS\x20fetchAllConversationDetails)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x200/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20userMessages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20conversations.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conv\x20=\x20conversations[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20progressPercent\x20=\x2010\x20+\x20((i\x20/\x20conversations.length)\x20*\x2080);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27processing_conversation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20current:\x20i\x20+\x201,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total:\x20conversations.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x20Math.round(progressPercent),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x20\x27\x20+\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20iOS\x20uses\x200.3s\x20delay\x20-\x20we\x20use\x200.3s\x20too\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20new\x20Promise(resolve\x20=>\x20setTimeout(resolve,\x20300));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversation/\x27\x20+\x20conv.id,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(detailResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20convData\x20=\x20await\x20detailResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20messages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Extract\x20user\x20messages\x20from\x20mapping\x20(same\x20as\x20iOS)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20nodeId\x20in\x20convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20node\x20=\x20convData.mapping[nodeId];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(node.message\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author.role\x20===\x20\x27user\x27\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20part\x20of\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20part\x20===\x20\x27string\x27\x20&&\x20part.trim())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20messages.push(part.trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(messages.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20userMessages.push({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversation_id:\x20conv.id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20conv.title\x20||\x20\x27Untitled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_messages:\x20messages\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20✅\x20Conversation\x27,\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27:\x27,\x20conv.title,\x20\x27(\x27\x20+\x20messages.length\x20+\x20\x27\x20msgs)\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Conversation\x27,\x20conv.id,\x20\x27returned\x27,\x20detailResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(convError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Failed\x20conversation\x27,\x20conv.id\x20+\x20\x27:\x27,\x20convError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMessages\x20=\x20userMessages.reduce((sum,\x20c)\x20=>\x20sum\x20+\x20c.user_messages.length,\x200);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27✅\x20[CHATGPT]\x20Extraction\x20complete:\x27,\x20totalMessages,\x20\x27messages\x20from\x27,\x20userMessages.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x204:\x20Wait\x20for\x20memories\x20(started\x20in\x20parallel\x20at\x20STEP\x202)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Waiting\x20for\x20parallel\x20memories\x20fetch\x20to\x20complete...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20all\x20possible\x20field\x20names\x20(API\x20structure\x20varies)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesItemsCount\x20=\x20memoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesEntriesCount\x20=\x20memoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesArrayCount\x20=\x20memoriesData?.memories?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMemoriesCount\x20=\x20memoriesItemsCount\x20+\x20memoriesEntriesCount\x20+\x20memoriesArrayCount;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Final\x20memories\x20result:\x27,\x20memoriesItemsCount,\x20\x27items,\x27,\x20memoriesEntriesCount,\x20\x27entries,\x27,\x20memoriesArrayCount,\x20\x27memories\x20array\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20memories\x20to\x20React\x20Native\x20for\x20storage\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(memoriesData\x20&&\x20totalMemoriesCount\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Sending\x20memories\x20to\x20React\x20Native\x20for\x20storage...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_DATA\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20totalMemoriesCount:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20conversation\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20userMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x20userMessages.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x20totalMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20memoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20memoriesEntriesCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_array_count:\x20memoriesArrayCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_memories_count:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Export\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27✅\x20ChatGPT\x20export\x20successful!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27❌\x20ChatGPT\x20export\x20failed!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Starting\x20memories\x20extraction...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Fetch\x20memories\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_memories\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20ChatGPT\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!memoriesResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20memoriesResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20memories\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20itemsCount\x20=\x20memoriesData.items\x20?\x20memoriesData.items.length\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20entriesCount\x20=\x20memoriesData.memory_entries\x20?\x20memoriesData.memory_entries.length\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20itemsCount:\x20itemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entriesCount:\x20entriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20fetch\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Memories\x20fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a'];_0x16f1=function(){return _0x1322f4;};return _0x16f1();}export const CHATGPT_FETCH_MEMORIES_SCRIPT=_0x1f27(0x4);
|