<html><head><base href="https://websim.ai/" /><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Websim Project Viewer</title><style>* { box-sizing: border-box; user-select: none; }body { font-family: Arial, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; background: #f5f5f5;}.search-container { margin: 20px 0; text-align: center;}input { padding: 10px; font-size: 16px; width: 300px; border: 2px solid #ddd; border-radius: 4px;}button { padding: 10px 20px; font-size: 16px; background: #0066cc; color: white; border: none; border-radius: 4px; cursor: pointer; transition: background 0.3s;}button:hover { background: #0052a3;}.projects { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; padding: 20px 0;}.project-card { background: white; border-radius: 8px; padding: 15px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);}.project-title { font-size: 1.2em; margin: 0 0 10px 0; color: #333;}.project-description { color: #666; margin-bottom: 15px; font-size: 0.9em;}.project-meta { color: #888; font-size: 0.8em; margin-bottom: 15px;}.button-group { display: flex; gap: 10px;}.profile-header { display: flex; align-items: center; margin-bottom: 30px; padding: 20px; background: white; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);}.profile-avatar { width: 100px; height: 100px; border-radius: 50%; margin-right: 20px;}.profile-info h1 { margin: 0; color: #333;}.profile-info p { margin: 5px 0; color: #666;}.loading { text-align: center; padding: 20px; font-size: 1.2em; color: #666;}.project-status { display: inline-block; padding: 2px 6px; border-radius: 3px; font-size: 0.8em; margin-left: 5px;}.status-draft { background: #ffebee; color: #c62828;}.status-published { background: #e8f5e9; color: #2e7d32;}.error-message { background: #fff3f3; border: 1px solid #ffcdd2; color: #c62828; padding: 15px; border-radius: 4px; margin: 20px 0; font-size: 0.9em;}.error-details { margin-top: 10px; font-family: monospace; background: #ffebee; padding: 10px; border-radius: 4px; white-space: pre-wrap; word-break: break-all;}.animated-text { position: fixed; top: 20px; left: 20px; font-size: 1em; color: #333; animation: float 3s ease-in-out infinite; pointer-events: none;}@keyframes float { 0% { transform: translateY(0); } 50% { transform: translateY(-10px); } 100% { transform: translateY(0); }}.watermark { position: fixed; top: 0; left: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; font-size: 5vw; color: rgba(150, 150, 150, 0.2); user-select: none; pointer-events: none; z-index: 9999; text-transform: uppercase; transform: rotate(-45deg);}.activate-message { font-size: 2em; font-weight: bold; text-align: center; margin: 30px 0; color: gold; text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 10px 10px rgba(0,0,0,.2), 0 20px 20px rgba(0,0,0,.15); grid-column: 1 / -1;}.activate-button-container { position: fixed; top: 20px; right: 20px; }.activate-button { padding: 10px 20px; font-size: 16px; background: #0066cc; color: white; border: none; border-radius: 4px; cursor: pointer; transition: background 0.3s; }.activate-button:hover { background: #0052a3; }</style></head><body><div class="animated-text">Project Leaker Tingler Master evaluation copy v1.0</div><div class="watermark">NOT ACTIVATED COPY</div><div class="activate-button-container"><button class="activate-button" onclick="activate()">Activate</button></div><div class="search-container"><input type="text" id="username" placeholder="Enter username"><button onclick="searchUser()">Search</button></div><div id="profile"></div><div id="projects" class="projects"></div><script>function activate() { alert("Nuh uh, you gonna stay with this"); }async function searchUser() { const username = document.getElementById('username').value; if (!username) return; if (username.toLowerCase() === 'obsirocks') { document.getElementById('profile').innerHTML = '<div class="error-message">Warning: Access to this user\'s projects is restricted.</div>'; return; } document.getElementById('profile').innerHTML = '<div class="loading">Loading...</div>'; document.getElementById('projects').innerHTML = ''; try { const userResponse = await fetch(`/api/v1/users/${username}`); if (!userResponse.ok) { throw new Error(`HTTP error! status: ${userResponse.status}\nResponse: ${await userResponse.text()}`); } const userData = await userResponse.json(); if (!userData.user) { document.getElementById('profile').innerHTML = '<div class="error-message">User not found</div>'; return; } const profileHTML = `<div class="profile-header"><img class="profile-avatar" src="https://images.websim.ai/avatar/${userData.user.username}" alt="Profile avatar"><div class="profile-info"><h1>@${userData.user.username}</h1><p>${userData.user.description || ''}</p></div></div>`; document.getElementById('profile').innerHTML = profileHTML; const projectsResponse = await fetch(`/api/v1/users/${username}/projects`); if (!projectsResponse.ok) { throw new Error(`HTTP error! status: ${projectsResponse.status}\nResponse: ${await projectsResponse.text()}`); } const projectsData = await projectsResponse.json(); const projectsArray = projectsData.projects.data; function generateProjectHTML(item) { const downloadUrl = item.project_revision && item.project_revision.version ? `/api/v1/projects/${item.project.id}/revisions/${item.project_revision.version}/html` : `/api/v1/projects/${item.project.id}/html`; return `<div class="project-card"><h3 class="project-title">${item.project.title || 'Untitled Project'}<span class="project-status ${item.project.posted ? 'status-published' : 'status-draft'}">${item.project.posted ? 'Already Public' : 'NOW LEAKED'}</span></h3><p class="project-description">${item.project.description || 'No description'}</p><div class="project-meta">Created: ${new Date(item.project.created_at).toLocaleDateString()}<br>Views: ${item.project.stats.views} • Likes: ${item.project.stats.likes}</div><div class="button-group"><button onclick="window.open('https://websim.ai/p/${item.project.id}', '_blank')">Open</button><button onclick="window.open('${downloadUrl}', '_blank')">Download</button></div></div>`; } const firstThreeProjectsHTML = projectsArray.slice(0, 3).map(item => generateProjectHTML(item)).join(''); const remainingProjects = projectsArray.slice(3); let remainingProjectsHTML = ''; if (remainingProjects.length > 0) { const blurredProjectsHTML = remainingProjects.map(item => generateProjectHTML(item)).join(''); remainingProjectsHTML = `<div class="activate-message">ACTIVATE TO SEE MORE</div>${blurredProjectsHTML}`; } const projectsHTML = firstThreeProjectsHTML + remainingProjectsHTML; document.getElementById('projects').innerHTML = projectsHTML || '<p>No projects found</p>'; const blurredContent = document.querySelectorAll('.project-card:nth-child(n+4)'); blurredContent.forEach(card => { card.style.filter = 'blur(5px)'; card.style.pointerEvents = 'none'; }); } catch (error) { console.error('Error:', error); document.getElementById('profile').innerHTML = `<div class="error-message">Error loading user data<div class="error-details">${error.message}</div></div>`; } } document.getElementById('username').addEventListener('keypress', function(e) { if (e.key === 'Enter') { searchUser(); } });</script></body></html>