SYMBOL INDEX (116 symbols across 13 files) FILE: contentScript.js function replaceNeoBrowserButton (line 34) | function replaceNeoBrowserButton() { function sendMessageToWebsite (line 157) | function sendMessageToWebsite(messageData) { function removeInjectedElement (line 173) | function removeInjectedElement() { FILE: data/inject/anti-anti-debug.js function shouldLog (line 49) | function shouldLog(type) { function wrapFn (line 164) | function wrapFn(newFn, old) { FILE: data/inject/chatbot.js function loadShowdown (line 20) | function loadShowdown() { function loadPrism (line 35) | function loadPrism() { function getShadowElement (line 431) | function getShadowElement(id) { function getShadowRoot (line 437) | function getShadowRoot() { function getChatButton (line 442) | function getChatButton() { function detectPlatform (line 462) | function detectPlatform() { function extractExamlyQuestion (line 476) | function extractExamlyQuestion() { function extractHackerRankQuestion (line 540) | function extractHackerRankQuestion() { function extractCurrentQuestion (line 695) | function extractCurrentQuestion() { function formatQuestionForChat (line 707) | function formatQuestionForChat(questionData) { function createChatOverlay (line 773) | function createChatOverlay() { function addNotificationMessage (line 1928) | function addNotificationMessage(message) { function createChatButton (line 1953) | function createChatButton() { function detectLanguage (line 2127) | function detectLanguage(code) { function renderChatContent (line 2282) | function renderChatContent(messageContainer, content) { function addMessageToChat (line 2431) | function addMessageToChat(message, role) { function clearErrorState (line 2477) | function clearErrorState() { function createValidContext (line 2494) | function createValidContext(chatHistory) { function addErrorMessageToChat (line 2530) | function addErrorMessageToChat(errorMessage, isRateLimitError = false) { function addLoadingIndicator (line 2604) | function addLoadingIndicator() { function toggleChatOverlay (line 2653) | function toggleChatOverlay() { function clearChatHistoryAndUI (line 2694) | function clearChatHistoryAndUI(reason = 'manual') { function blockClashingChatElements (line 2727) | function blockClashingChatElements() { function init (line 2863) | async function init() { FILE: data/inject/content.js function enableTextSelectionGlobally (line 12) | function enableTextSelectionGlobally() { function htmlToText (line 132) | function htmlToText(element) { function extractQuestionCodeAndOptions (line 158) | function extractQuestionCodeAndOptions() { function handleQuestionExtraction (line 188) | async function handleQuestionExtraction() { function extractCodingQuestion (line 211) | function extractCodingQuestion() { function solveIamneoExamly (line 348) | function solveIamneoExamly(){ function extractSnippets (line 379) | function extractSnippets() { function extractHackerRankMCQ (line 715) | function extractHackerRankMCQ() { function extractHackerRankCoding (line 862) | function extractHackerRankCoding() { function normalizeCodeIndentation (line 937) | function normalizeCodeIndentation(code) { function insertCodeIntoMonacoEditor (line 974) | async function insertCodeIntoMonacoEditor(text) { function handleHackerRankMCQ (line 1101) | function handleHackerRankMCQ() { FILE: data/inject/copyOverride.js function customCopy (line 64) | async function customCopy(selectedText) { function getSelectedText (line 107) | function getSelectedText() { FILE: data/inject/customPaste.js function performPasteByTyping (line 1) | async function performPasteByTyping() { function performDragDropPaste (line 127) | async function performDragDropPaste() { FILE: data/inject/exam.js function checkForQuestionChange (line 20) | function checkForQuestionChange() { function typeNextCharacter (line 50) | function typeNextCharacter() { function getAnswerFromAI (line 134) | async function getAnswerFromAI() { FILE: data/inject/main.js method get (line 22) | get() { method get (line 30) | get() { method get (line 78) | get() { method get (line 86) | get() { method apply (line 96) | apply(target, self, args) { method apply (line 141) | apply(target, self, args) { method apply (line 157) | apply(target, self, args) { FILE: data/inject/mock_code/minifiedBackground.js function handleMessage (line 1) | async function handleMessage(e,t,n){if(!t.id&&!t.url)return n({status:"E... FILE: data/inject/screenshare.js function bypassRestrictions (line 43) | function bypassRestrictions() { function spoofScreenRecording (line 105) | function spoofScreenRecording() { function showPopup (line 121) | function showPopup(resolve, reject, constraints, originalGetDisplayMedia) { FILE: devtools.js function isExamPage (line 2) | function isExamPage() { function injectAntiDebug (line 9) | function injectAntiDebug() { FILE: popup.js function autoSaveAPIConfig (line 34) | function autoSaveAPIConfig() { function clearChatHistoryOnProviderChange (line 70) | function clearChatHistoryOnProviderChange() { function updateShortcutsForPlatform (line 93) | function updateShortcutsForPlatform() { function refreshAllTabs (line 154) | function refreshAllTabs() { function showError (line 163) | function showError(message, duration = 5000) { function showLoggedInState (line 172) | function showLoggedInState(username, isPro, accountData) { function displayAccountInfo (line 210) | function displayAccountInfo(account) { function fetchAccountInfo (line 225) | async function fetchAccountInfo() { function showLoggedOutState (line 281) | function showLoggedOutState() { function checkSessionExpiration (line 305) | function checkSessionExpiration() { function logoutUser (line 319) | function logoutUser() { function initializeOpacityLevel (line 500) | function initializeOpacityLevel() { function capitalizeFirstLetter (line 510) | function capitalizeFirstLetter(string) { function loadAPIConfiguration (line 533) | function loadAPIConfiguration() { FILE: worker.js function canMakeRequest (line 13) | function canMakeRequest() { function blockRequests (line 17) | function blockRequests() { function unblockRequests (line 32) | function unblockRequests() { function handleMessage (line 80) | async function handleMessage(request, sender, sendResponse) { function checkForUpdate (line 218) | async function checkForUpdate() { function compareVersions (line 268) | function compareVersions(v1, v2) { function showUpdateToast (line 281) | function showUpdateToast(tabId, message, latestVersion) { function setupUpdateAlarm (line 557) | function setupUpdateAlarm() { function isLoggedIn (line 665) | function isLoggedIn(callback) { function showLoginPrompt (line 672) | function showLoginPrompt(tabId) { function handleNPTEL (line 901) | function handleNPTEL(result, tabId) { function getSelectedText (line 934) | function getSelectedText() { function handleQueryResponse (line 947) | function handleQueryResponse(response, tabId, isMCQ = false) { function handleQueryResponseForIamNeoExamly (line 989) | function handleQueryResponseForIamNeoExamly(response, tabId, isMCQ = fal... function queryRequest (line 1039) | async function queryRequest(text, isMCQ = false, isMultipleChoice = fals... function getCustomAPIConfig (line 1235) | async function getCustomAPIConfig() { function queryCustomAPI (line 1256) | async function queryCustomAPI(text, isMCQ, isMultipleChoice, config) { constant API_BASE_URL (line 1414) | const API_BASE_URL = 'https://api.neopass.tech'; function getTokens (line 1417) | async function getTokens() { function makeAuthenticatedRequest (line 1424) | async function makeAuthenticatedRequest(url, method, token, body = null) { function handleChatMessage (line 1597) | async function handleChatMessage(message, sender) { function sendChatResponse (line 1757) | function sendChatResponse(tabId, content) { function sendChatErrorResponse (line 1766) | function sendChatErrorResponse(tabId, content) { function copyToClipboard (line 1786) | async function copyToClipboard(text, tabId) { function copyToClipboard (line 1815) | function copyToClipboard(text) { function checkStealthMode (line 1844) | async function checkStealthMode() { function removeExistingToast (line 1866) | function removeExistingToast(tabId) { function toggleToastOpacity (line 1898) | async function toggleToastOpacity() { function getToastOpacity (line 1933) | async function getToastOpacity() { function showOpacityLevelToast (line 1945) | function showOpacityLevelToast(tabId, message) { function showToast (line 2104) | async function showToast(tabId, message, isError = false, detailedInfo =... function showStealthToast (line 2318) | async function showStealthToast(tabId, message, stealthEnabled) { constant SESSION_DURATION (line 2669) | const SESSION_DURATION = 12 * 60 * 60 * 1000; function checkAndHandleSessionExpiration (line 2673) | async function checkAndHandleSessionExpiration() { function findAnswer (line 2758) | function findAnswer(query) { function levenshteinDistance (line 2784) | function levenshteinDistance(s1, s2) { function normalizeText (line 2806) | function normalizeText(text) { function loadNptelDataset (line 2816) | async function loadNptelDataset() { function showMCQToast (line 2830) | async function showMCQToast(tabId, message, detailedInfo = '') { function showNPTELToast (line 3074) | async function showNPTELToast(tabId, message, isError = false, detailedI... function showSpinnerToast (line 3287) | async function showSpinnerToast(tabId, message = 'Processing your reques...