| | <!DOCTYPE html> |
| | <html lang="en"> |
| | <head> |
| | <meta charset="UTF-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>Accessibility Widget</title> |
| | <script src="https://cdn.tailwindcss.com"></script> |
| | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
| | <script> |
| | tailwind.config = { |
| | theme: { |
| | extend: { |
| | colors: { |
| | primary: '#3b82f6', |
| | secondary: '#1e40af', |
| | dark: '#1e293b', |
| | light: '#f8fafc', |
| | highcontrast: { |
| | text: '#000000', |
| | bg: '#FFFFFF', |
| | accent: '#FF0000' |
| | } |
| | }, |
| | fontFamily: { |
| | dyslexic: ['OpenDyslexic', 'Comic Sans MS', 'sans-serif'] |
| | } |
| | } |
| | } |
| | } |
| | </script> |
| | <style> |
| | |
| | .dyslexic-font { |
| | font-family: 'Comic Sans MS', sans-serif !important; |
| | } |
| | |
| | .high-contrast { |
| | background-color: #FFFFFF !important; |
| | color: #000000 !important; |
| | border-color: #000000 !important; |
| | } |
| | |
| | .high-contrast * { |
| | background-color: #FFFFFF !important; |
| | color: #000000 !important; |
| | border-color: #000000 !important; |
| | } |
| | |
| | .high-contrast-accent { |
| | color: #FF0000 !important; |
| | } |
| | |
| | .large-cursor * { |
| | cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='12' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='16' cy='16' r='2' fill='%23000'/%3E%3C/svg%3E") 16 16, pointer !important; |
| | } |
| | |
| | .reduced-motion * { |
| | transition: none !important; |
| | animation: none !important; |
| | } |
| | |
| | .highlight-text p, .highlight-text a { |
| | background-color: rgba(255, 255, 0, 0.3) !important; |
| | padding: 2px 4px !important; |
| | border-radius: 2px !important; |
| | } |
| | |
| | |
| | @keyframes pulse { |
| | 0% { transform: scale(1); } |
| | 50% { transform: scale(1.1); } |
| | 100% { transform: scale(1); } |
| | } |
| | |
| | .pulse-animation { |
| | animation: pulse 2s infinite; |
| | } |
| | |
| | |
| | .accessibility-panel { |
| | transition: all 0.3s ease; |
| | } |
| | |
| | |
| | :focus-visible { |
| | outline: 3px solid #3b82f6 !important; |
| | outline-offset: 2px !important; |
| | } |
| | |
| | .high-contrast :focus-visible { |
| | outline: 3px solid #FF0000 !important; |
| | } |
| | </style> |
| | </head> |
| | <body class="bg-gray-50 text-gray-900 min-h-screen transition-colors duration-300"> |
| | |
| | <a href="#main-content" class="sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:bg-white focus:text-black focus:px-4 focus:py-2 focus:z-50 focus:rounded focus:font-bold"> |
| | Skip to content |
| | </a> |
| | |
| | |
| | <main id="main-content" class="container mx-auto px-4 py-8"> |
| | <h1 class="text-3xl font-bold mb-6">Website Content</h1> |
| | <article class="prose max-w-none"> |
| | <p class="mb-4">This is a demonstration of the accessibility widget functionality. The widget provides various tools to make the website more accessible to all users.</p> |
| | |
| | <h2 class="text-2xl font-semibold mt-6 mb-4">About Accessibility</h2> |
| | <p class="mb-4">Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:</p> |
| | <ul class="list-disc pl-6 mb-4"> |
| | <li class="mb-2">Perceive, understand, navigate, and interact with the web</li> |
| | <li class="mb-2">Contribute to the web</li> |
| | <li class="mb-2">Have equal access and equal opportunity to information</li> |
| | </ul> |
| | |
| | <h2 class="text-2xl font-semibold mt-6 mb-4">Why It Matters</h2> |
| | <p class="mb-4">Accessibility is essential for developers and organizations that want to create high-quality websites and web tools, and not exclude people from using their products and services.</p> |
| | |
| | <p class="mb-4">Try out the accessibility widget by clicking the button in the bottom right corner of the screen. You can adjust text size, contrast, and other settings to suit your needs.</p> |
| | |
| | <h3 class="text-xl font-semibold mt-6 mb-4">Sample Interactive Elements</h3> |
| | <button class="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded mr-4 mb-4 transition-colors"> |
| | Example Button |
| | </button> |
| | <a href="#" class="text-blue-600 hover:text-blue-800 underline mr-4 mb-4 inline-block">Example Link</a> |
| | <input type="text" placeholder="Example input" class="border px-3 py-2 rounded mb-4"> |
| | </article> |
| | </main> |
| | |
| | |
| | <div class="fixed bottom-6 right-6 z-40"> |
| | |
| | <button id="accessibility-toggle" |
| | aria-label="Open accessibility panel" |
| | aria-expanded="false" |
| | class="bg-blue-600 text-white w-14 h-14 rounded-full shadow-lg flex items-center justify-center hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 pulse-animation transition-all"> |
| | <i class="fas fa-universal-access text-2xl"></i> |
| | </button> |
| | |
| | |
| | <div id="accessibility-panel" |
| | role="dialog" |
| | aria-labelledby="accessibility-panel-title" |
| | aria-modal="true" |
| | class="accessibility-panel hidden bg-white rounded-lg shadow-xl w-80 max-h-[90vh] overflow-y-auto absolute bottom-20 right-0 border border-gray-200"> |
| | <div class="p-4"> |
| | <div class="flex justify-between items-center mb-4"> |
| | <h2 id="accessibility-panel-title" class="text-xl font-bold">Accessibility Settings</h2> |
| | <button id="close-panel" aria-label="Close accessibility panel" class="text-gray-500 hover:text-gray-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | |
| | <div class="space-y-6"> |
| | |
| | <section> |
| | <h3 class="font-semibold mb-2">Text Size</h3> |
| | <div class="flex items-center space-x-2"> |
| | <button id="decrease-text" aria-label="Decrease text size" class="bg-gray-200 hover:bg-gray-300 rounded-full w-8 h-8 flex items-center justify-center"> |
| | <i class="fas fa-minus"></i> |
| | </button> |
| | <div class="flex-1 bg-gray-100 rounded-full h-2"> |
| | <div id="text-size-indicator" class="bg-blue-500 h-2 rounded-full w-1/2"></div> |
| | </div> |
| | <button id="increase-text" aria-label="Increase text size" class="bg-gray-200 hover:bg-gray-300 rounded-full w-8 h-8 flex items-center justify-center"> |
| | <i class="fas fa-plus"></i> |
| | </button> |
| | </div> |
| | </section> |
| | |
| | |
| | <section> |
| | <h3 class="font-semibold mb-2">Font Style</h3> |
| | <button id="toggle-dyslexic" aria-pressed="false" class="flex items-center space-x-2 px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded"> |
| | <i class="fas fa-font"></i> |
| | <span>Dyslexia-Friendly Font</span> |
| | <span id="dyslexic-status" class="ml-auto text-sm text-gray-500">Off</span> |
| | </button> |
| | </section> |
| | |
| | |
| | <section> |
| | <h3 class="font-semibold mb-2">Color & Contrast</h3> |
| | <div class="space-y-2"> |
| | <button id="toggle-contrast" aria-pressed="false" class="w-full flex items-center space-x-2 px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded"> |
| | <i class="fas fa-adjust"></i> |
| | <span>High Contrast Mode</span> |
| | <span id="contrast-status" class="ml-auto text-sm text-gray-500">Off</span> |
| | </button> |
| | </div> |
| | </section> |
| | |
| | |
| | <section> |
| | <h3 class="font-semibold mb-2">Visual Aids</h3> |
| | <div class="space-y-2"> |
| | <button id="toggle-cursor" aria-pressed="false" class="w-full flex items-center space-x-2 px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded"> |
| | <i class="fas fa-mouse-pointer"></i> |
| | <span>Large Cursor</span> |
| | <span id="cursor-status" class="ml-auto text-sm text-gray-500">Off</span> |
| | </button> |
| | <button id="toggle-highlight" aria-pressed="false" class="w-full flex items-center space-x-2 px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded"> |
| | <i class="fas fa-highlighter"></i> |
| | <span>Text Highlighting</span> |
| | <span id="highlight-status" class="ml-auto text-sm text-gray-500">Off</span> |
| | </button> |
| | </div> |
| | </section> |
| | |
| | |
| | <section> |
| | <h3 class="font-semibold mb-2">Motion</h3> |
| | <button id="toggle-motion" aria-pressed="false" class="w-full flex items-center space-x-2 px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded"> |
| | <i class="fas fa-running"></i> |
| | <span>Reduce Motion</span> |
| | <span id="motion-status" class="ml-auto text-sm text-gray-500">Off</span> |
| | </button> |
| | </section> |
| | |
| | |
| | <section> |
| | <h3 class="font-semibold mb-2">Screen Reader</h3> |
| | <button id="screen-reader-helper" class="w-full flex items-center space-x-2 px-3 py-2 bg-blue-100 hover:bg-blue-200 rounded text-blue-800"> |
| | <i class="fas fa-assistive-listening-systems"></i> |
| | <span>Read Important Content</span> |
| | </button> |
| | </section> |
| | |
| | |
| | <section class="pt-2 border-t border-gray-200"> |
| | <div class="flex space-x-2"> |
| | <button id="reset-settings" class="flex-1 px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded"> |
| | Reset Settings |
| | </button> |
| | </div> |
| | </section> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div id="aria-live-region" aria-live="polite" class="sr-only"></div> |
| | |
| | <script> |
| | document.addEventListener('DOMContentLoaded', function() { |
| | |
| | const toggleBtn = document.getElementById('accessibility-toggle'); |
| | const panel = document.getElementById('accessibility-panel'); |
| | const closeBtn = document.getElementById('close-panel'); |
| | const increaseTextBtn = document.getElementById('increase-text'); |
| | const decreaseTextBtn = document.getElementById('decrease-text'); |
| | const textSizeIndicator = document.getElementById('text-size-indicator'); |
| | const toggleDyslexicBtn = document.getElementById('toggle-dyslexic'); |
| | const dyslexicStatus = document.getElementById('dyslexic-status'); |
| | const toggleContrastBtn = document.getElementById('toggle-contrast'); |
| | const contrastStatus = document.getElementById('contrast-status'); |
| | const toggleCursorBtn = document.getElementById('toggle-cursor'); |
| | const cursorStatus = document.getElementById('cursor-status'); |
| | const toggleHighlightBtn = document.getElementById('toggle-highlight'); |
| | const highlightStatus = document.getElementById('highlight-status'); |
| | const toggleMotionBtn = document.getElementById('toggle-motion'); |
| | const motionStatus = document.getElementById('motion-status'); |
| | const screenReaderHelper = document.getElementById('screen-reader-helper'); |
| | const resetBtn = document.getElementById('reset-settings'); |
| | const ariaLiveRegion = document.getElementById('aria-live-region'); |
| | |
| | |
| | let textSize = 1; |
| | let isDyslexicFont = false; |
| | let isHighContrast = false; |
| | let isLargeCursor = false; |
| | let isHighlightText = false; |
| | let isReducedMotion = false; |
| | let isPanelOpen = false; |
| | |
| | |
| | function loadSettings() { |
| | |
| | const savedTextSize = localStorage.getItem('accessibilityTextSize'); |
| | if (savedTextSize) { |
| | textSize = parseFloat(savedTextSize); |
| | updateTextSize(); |
| | } |
| | |
| | |
| | if (localStorage.getItem('accessibilityDyslexicFont') === 'true') { |
| | isDyslexicFont = true; |
| | document.documentElement.classList.add('dyslexic-font'); |
| | dyslexicStatus.textContent = 'On'; |
| | toggleDyslexicBtn.setAttribute('aria-pressed', 'true'); |
| | } |
| | |
| | |
| | if (localStorage.getItem('accessibilityHighContrast') === 'true') { |
| | isHighContrast = true; |
| | document.documentElement.classList.add('high-contrast'); |
| | contrastStatus.textContent = 'On'; |
| | toggleContrastBtn.setAttribute('aria-pressed', 'true'); |
| | } |
| | |
| | |
| | if (localStorage.getItem('accessibilityLargeCursor') === 'true') { |
| | isLargeCursor = true; |
| | document.documentElement.classList.add('large-cursor'); |
| | cursorStatus.textContent = 'On'; |
| | toggleCursorBtn.setAttribute('aria-pressed', 'true'); |
| | } |
| | |
| | |
| | if (localStorage.getItem('accessibilityHighlightText') === 'true') { |
| | isHighlightText = true; |
| | document.documentElement.classList.add('highlight-text'); |
| | highlightStatus.textContent = 'On'; |
| | toggleHighlightBtn.setAttribute('aria-pressed', 'true'); |
| | } |
| | |
| | |
| | if (localStorage.getItem('accessibilityReducedMotion') === 'true') { |
| | isReducedMotion = true; |
| | document.documentElement.classList.add('reduced-motion'); |
| | motionStatus.textContent = 'On'; |
| | toggleMotionBtn.setAttribute('aria-pressed', 'true'); |
| | } |
| | } |
| | |
| | |
| | function updateTextSize() { |
| | document.documentElement.style.fontSize = `${textSize * 100}%`; |
| | const percentage = ((textSize - 0.8) / 0.8) * 100; |
| | textSizeIndicator.style.width = `${percentage}%`; |
| | localStorage.setItem('accessibilityTextSize', textSize.toString()); |
| | } |
| | |
| | |
| | function togglePanel() { |
| | isPanelOpen = !isPanelOpen; |
| | if (isPanelOpen) { |
| | panel.classList.remove('hidden'); |
| | toggleBtn.setAttribute('aria-expanded', 'true'); |
| | toggleBtn.classList.remove('pulse-animation'); |
| | |
| | setTimeout(() => closeBtn.focus(), 100); |
| | } else { |
| | panel.classList.add('hidden'); |
| | toggleBtn.setAttribute('aria-expanded', 'false'); |
| | toggleBtn.classList.add('pulse-animation'); |
| | } |
| | } |
| | |
| | |
| | function announce(message) { |
| | ariaLiveRegion.textContent = message; |
| | |
| | setTimeout(() => { |
| | ariaLiveRegion.textContent = ''; |
| | }, 1000); |
| | } |
| | |
| | |
| | toggleBtn.addEventListener('click', togglePanel); |
| | |
| | closeBtn.addEventListener('click', togglePanel); |
| | |
| | |
| | increaseTextBtn.addEventListener('click', () => { |
| | if (textSize < 1.6) { |
| | textSize += 0.1; |
| | textSize = Math.round(textSize * 10) / 10; |
| | updateTextSize(); |
| | announce(`Text size increased to ${Math.round(textSize * 100)}%`); |
| | } |
| | }); |
| | |
| | |
| | decreaseTextBtn.addEventListener('click', () => { |
| | if (textSize > 0.8) { |
| | textSize -= 0.1; |
| | textSize = Math.round(textSize * 10) / 10; |
| | updateTextSize(); |
| | announce(`Text size decreased to ${Math.round(textSize * 100)}%`); |
| | } |
| | }); |
| | |
| | |
| | toggleDyslexicBtn.addEventListener('click', () => { |
| | isDyslexicFont = !isDyslexicFont; |
| | if (isDyslexicFont) { |
| | document.documentElement.classList.add('dyslexic-font'); |
| | dyslexicStatus.textContent = 'On'; |
| | toggleDyslexicBtn.setAttribute('aria-pressed', 'true'); |
| | localStorage.setItem('accessibilityDyslexicFont', 'true'); |
| | announce('Dyslexia-friendly font enabled'); |
| | } else { |
| | document.documentElement.classList.remove('dyslexic-font'); |
| | dyslexicStatus.textContent = 'Off'; |
| | toggleDyslexicBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityDyslexicFont', 'false'); |
| | announce('Dyslexia-friendly font disabled'); |
| | } |
| | }); |
| | |
| | |
| | toggleContrastBtn.addEventListener('click', () => { |
| | isHighContrast = !isHighContrast; |
| | if (isHighContrast) { |
| | document.documentElement.classList.add('high-contrast'); |
| | contrastStatus.textContent = 'On'; |
| | toggleContrastBtn.setAttribute('aria-pressed', 'true'); |
| | localStorage.setItem('accessibilityHighContrast', 'true'); |
| | announce('High contrast mode enabled'); |
| | } else { |
| | document.documentElement.classList.remove('high-contrast'); |
| | contrastStatus.textContent = 'Off'; |
| | toggleContrastBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityHighContrast', 'false'); |
| | announce('High contrast mode disabled'); |
| | } |
| | }); |
| | |
| | |
| | toggleCursorBtn.addEventListener('click', () => { |
| | isLargeCursor = !isLargeCursor; |
| | if (isLargeCursor) { |
| | document.documentElement.classList.add('large-cursor'); |
| | cursorStatus.textContent = 'On'; |
| | toggleCursorBtn.setAttribute('aria-pressed', 'true'); |
| | localStorage.setItem('accessibilityLargeCursor', 'true'); |
| | announce('Large cursor enabled'); |
| | } else { |
| | document.documentElement.classList.remove('large-cursor'); |
| | cursorStatus.textContent = 'Off'; |
| | toggleCursorBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityLargeCursor', 'false'); |
| | announce('Large cursor disabled'); |
| | } |
| | }); |
| | |
| | |
| | toggleHighlightBtn.addEventListener('click', () => { |
| | isHighlightText = !isHighlightText; |
| | if (isHighlightText) { |
| | document.documentElement.classList.add('highlight-text'); |
| | highlightStatus.textContent = 'On'; |
| | toggleHighlightBtn.setAttribute('aria-pressed', 'true'); |
| | localStorage.setItem('accessibilityHighlightText', 'true'); |
| | announce('Text highlighting enabled'); |
| | } else { |
| | document.documentElement.classList.remove('highlight-text'); |
| | highlightStatus.textContent = 'Off'; |
| | toggleHighlightBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityHighlightText', 'false'); |
| | announce('Text highlighting disabled'); |
| | } |
| | }); |
| | |
| | |
| | toggleMotionBtn.addEventListener('click', () => { |
| | isReducedMotion = !isReducedMotion; |
| | if (isReducedMotion) { |
| | document.documentElement.classList.add('reduced-motion'); |
| | motionStatus.textContent = 'On'; |
| | toggleMotionBtn.setAttribute('aria-pressed', 'true'); |
| | localStorage.setItem('accessibilityReducedMotion', 'true'); |
| | announce('Reduced motion enabled'); |
| | } else { |
| | document.documentElement.classList.remove('reduced-motion'); |
| | motionStatus.textContent = 'Off'; |
| | toggleMotionBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityReducedMotion', 'false'); |
| | announce('Reduced motion disabled'); |
| | } |
| | }); |
| | |
| | |
| | screenReaderHelper.addEventListener('click', () => { |
| | const importantContent = document.querySelector('main').textContent.substring(0, 200) + '...'; |
| | announce(`Important content: ${importantContent}`); |
| | }); |
| | |
| | |
| | resetBtn.addEventListener('click', () => { |
| | |
| | textSize = 1; |
| | updateTextSize(); |
| | |
| | |
| | if (isDyslexicFont) { |
| | document.documentElement.classList.remove('dyslexic-font'); |
| | dyslexicStatus.textContent = 'Off'; |
| | toggleDyslexicBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityDyslexicFont', 'false'); |
| | isDyslexicFont = false; |
| | } |
| | |
| | |
| | if (isHighContrast) { |
| | document.documentElement.classList.remove('high-contrast'); |
| | contrastStatus.textContent = 'Off'; |
| | toggleContrastBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityHighContrast', 'false'); |
| | isHighContrast = false; |
| | } |
| | |
| | |
| | if (isLargeCursor) { |
| | document.documentElement.classList.remove('large-cursor'); |
| | cursorStatus.textContent = 'Off'; |
| | toggleCursorBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityLargeCursor', 'false'); |
| | isLargeCursor = false; |
| | } |
| | |
| | |
| | if (isHighlightText) { |
| | document.documentElement.classList.remove('highlight-text'); |
| | highlightStatus.textContent = 'Off'; |
| | toggleHighlightBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityHighlightText', 'false'); |
| | isHighlightText = false; |
| | } |
| | |
| | |
| | if (isReducedMotion) { |
| | document.documentElement.classList.remove('reduced-motion'); |
| | motionStatus.textContent = 'Off'; |
| | toggleMotionBtn.setAttribute('aria-pressed', 'false'); |
| | localStorage.setItem('accessibilityReducedMotion', 'false'); |
| | isReducedMotion = false; |
| | } |
| | |
| | announce('All accessibility settings have been reset to default'); |
| | }); |
| | |
| | |
| | document.addEventListener('keydown', (e) => { |
| | |
| | if (e.altKey && e.key.toLowerCase() === 'a') { |
| | e.preventDefault(); |
| | togglePanel(); |
| | } |
| | |
| | |
| | if (isPanelOpen && e.key === 'Tab') { |
| | const focusableElements = panel.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'); |
| | const firstElement = focusableElements[0]; |
| | const lastElement = focusableElements[focusableElements.length - 1]; |
| | |
| | if (e.shiftKey) { |
| | if (document.activeElement === firstElement) { |
| | lastElement.focus(); |
| | e.preventDefault(); |
| | } |
| | } else { |
| | if (document.activeElement === lastElement) { |
| | firstElement.focus(); |
| | e.preventDefault(); |
| | } |
| | } |
| | } |
| | |
| | |
| | if (isPanelOpen && e.key === 'Escape') { |
| | togglePanel(); |
| | toggleBtn.focus(); |
| | } |
| | }); |
| | |
| | |
| | document.addEventListener('click', (e) => { |
| | if (isPanelOpen && !panel.contains(e.target) && e.target !== toggleBtn) { |
| | togglePanel(); |
| | } |
| | }); |
| | |
| | |
| | loadSettings(); |
| | }); |
| | </script> |
| | <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=ham3dco/ham3d" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| | </html> |