1<!DOCTYPE html> 2<html lang='en-US' itemscope itemtype="http://schema.org/WebPage"> 3<head> 4 <meta charset="utf-8"> 5 6 7 8 9 <title>About Us</title> 10 11 <meta name="keywords" content="art,wallpaper,wallpapers,backgrounds,photography,images,pictures,gif,gifs,avatar,avatars,pfp,pfps"> 12 <meta name="description" content="Alpha Coders - Your Source For Desktop Wallpapers, Phone Wallpapers, Gifs, PFP, and More!"> 13 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 14 15 <!-- Schema.org markup for Google+ --> 16 <meta itemprop="name" content="About Us"> 17 <meta itemprop="description" content="Alpha Coders - Your Source For Desktop Wallpapers, Phone Wallpapers, Gifs, PFP, and More!"> 18 19 <!-- Twitter Card data --> 20 <meta name="twitter:card" content="summary_large_image"> 21 <meta name="twitter:site" content="@alphacoders"> 22 <meta name="twitter:title" content="About Us"> 23 <meta name="twitter:description" content="Alpha Coders - Your Source For Desktop Wallpapers, Phone Wallpapers, Gifs, PFP, and More!"> 24 25 <!-- Open Graph data --> 26 <meta property="og:title" content="About Us"> 27 <meta property="og:type" content="website"> 28 <meta property="og:url" content="https://alphacoders.com/site/about-us"> 29 30 <meta property="og:description" content="Alpha Coders - Your Source For Desktop Wallpapers, Phone Wallpapers, Gifs, PFP, and More!"> 31 32 <meta property="og:site_name" content="Alpha Coders"> 33 34 35 36 37 38 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> 39 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 40 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 41 <link rel="manifest" href="/site.webmanifest"> 42 <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"> 43 <meta name="apple-mobile-web-app-title" content="Alpha Coders"> 44 <meta name="application-name" content="Alpha Coders"> 45 <meta name="msapplication-TileColor" content="#357ec7"> 46 <meta name="theme-color" content="#357ec7"> 47 48
48<script> 49 (function() { 50 function getCookie(name) { 51 var value = '; ' + document.cookie; 52 var parts = value.split('; ' + name + '='); 53 if (parts.length === 2) { 54 return parts.pop().split(';').shift(); 55 } 56 return null; 57 } 58 59 var cookie_theme = getCookie('theme'); 60 var stored = cookie_theme || localStorage.getItem('theme'); 61 var theme = 'light'; 62 63 if (stored === 'light') { 64 theme = 'light'; 65 } else if (stored === 'dark') { 66 theme = 'dark'; 67 } else { 68 if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { 69 theme = 'dark'; 70 } 71 } 72 73 document.documentElement.setAttribute('data-theme', theme); 74 })(); 75 </script>
75 76 77 <link href="/css/site_light_dark.css" rel="stylesheet" media="screen"> 78 79 80 81 82 <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 83
83<script src="https://static.alphacoders.com/jquery-3.2.1.min.js"></script>
83 84 85 86 87 88 89
89<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous"></script>
89 90
90<script> 91 window.googletag = window.googletag || {cmd: []}; 92 </script>
92 93 94 95 96 <!-- Google tag (gtag.js) -->
vendor: 72 bytes, lines 96-97
96 97 <script async src="https://www.googletagmanager.com/gtag/js?id=
97G-HL65XQTV30
vendor: 20 bytes, lines 97-98
97"></script> 98
98<script> 99
vendor: 152 bytes, lines 99-103
99window.dataLayer = window.dataLayer || []; 100 function gtag(){dataLayer.push(arguments);} 101 gtag('js', new Date()); 102 103 gtag('config', '
103G-HL65XQTV30
vendor: 12 bytes, lines 103-104
103'); 104
104</script>
104 105 106 107 108 109
109<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2597887417591492" crossorigin="anonymous"></script>
109 110 111 112 <!-- OPTI DIGITAL TAGS SCRIPT --> 113 <!-- NOTE: Insert these scripts at the top of your HEAD section just after the CMP scripts --> 114 <link rel="preload" href="https://securepubads.g.doubleclick.net/tag/js/gpt.js" as="script" type="text/javascript" /> 115
115<script> 116 var optidigitalQueue = optidigitalQueue || {}; 117 optidigitalQueue.cmd = optidigitalQueue.cmd || []; 118 </script>
118 119
119<script type='module' id='optidigital-ad-init' async data-config='{"adUnit": "/22963265510,4594367/4594367/od.alphacoders.com/list"}' 120 src='//scripts.opti-digital.com/modules/?site=alphacoders_com'> 121 </script>
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138</head> 139<body> 140 141 142 <div class="header" role="banner"> 143 <div class="header-logo"> 144 <a class="header-logo" href="https://alphacoders.com">Alpha Coders</a> 145 </div> 146 147 148 <div class="header-menu"> 149 <ul class="header-menu-list"> 150 <li class="header-menu-list"> 151 <div class="theme-toggle"> 152 <img class="svg theme-toggle-button" id="theme-toggle-btn" 153 src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/adjust.svg" 154 alt="Theme" title="Toggle theme"> 155 <div class="theme-toggle-dropdown" id="theme-toggle-dropdown"> 156 <div class="theme-toggle-option" data-theme-value="light"> 157 <img class="svg" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/sun.svg" alt=""> Light 158 </div> 159 <div class="theme-toggle-option" data-theme-value="dark"> 160 <img class="svg" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/moon.svg" alt=""> Dark 161 </div> 162 <div class="theme-toggle-option" data-theme-value="system"> 163 <img class="svg" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/regular/computer-classic.svg" alt=""> System 164 </div> 165 </div> 166 </div> 167 </li> 168 <li class="header-menu-list"> 169 170 <a class="header-menu-list-item" 171 href="https://alphacoders.com/site/submit" 172 title="Submit Desktop Wallpapers, Phone Wallpapers, Gifs/Short Videos, and PFP"><img class="svg svg-white" alt="" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/upload.svg"> Submit</a> 173 174 175 </li> 176 <li class="header-menu-list"> 177 <a class="header-menu-list-item" 178 href="https://alphacoders.com/users/community" 179 title="The Alpha Coders Community"><img class="svg svg-white" alt="" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/gift.svg"> Community</a> 180 </li> 181 182 183 <li class="header-menu-list"><a class="header-menu-list-item" href="https://alphacoders.com/users/login">Login</a></li> 184 <li class="header-menu-list"><a class="header-menu-list-item" href="https://alphacoders.com/users/register">Register</a></li> 185 186 </ul> 187 </div> 188 189 190 <div class="mobile-nav-menu right" onclick="toggleMenu()"> 191 <div></div> 192 <div></div> 193 <div></div> 194 </div> 195 196 197 198 199 200 <div class="search-container-header right"> 201 <form action="https://alphacoders.com/search/view" method="GET"> 202 <input class="search-input-header" name="q" maxlength="100" placeholder="Search" type="text"> 203 <button class="search-button-header" type="submit" aria-label="Search"> 204 <img class="svg svg-white search-button-svg" alt="" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/search.svg"> 205 </button> 206 </form> 207 </div> 208 209 </div> 210 211 <!-- We have a popup notice --> 212 <div id="notice" class="notice"> 213 <span id="notice-message" class="notice-message"></span> 214 <button id="notice-close" class="notice-close" onclick="hideNotice();"> 215 <img class="svg svg-white search-button-svg" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/window-close.svg"> 216 </button> 217 </div> 218 219 220 221 222 223 224 225 226 <main id="main-content" role="main"> 227 228 229 <h1 class="center title">About Us</h1> 230 231 <div class="container"> 232 <div class="row"> 233 234 <h3>Alpha Coders is an image discovery platform. Share the things you create, or share the things you love.</h3> 235 <div class="box"> 236 237 238 <strong> 239 We are a <a target="_blank" href="https://alphacoders.com/site/hiring">small team</a> from all over the world that love elevating the image discovery experience. 240 </strong> 241 Contact us by email at [email protected] or hop in and chat with us on our <a href="https://discord.gg/5WMUMa8" target="_blank">Discord</a> 242 </div> 243 244 245 <br> 246 <h3>Site Structure, Sub Sites, and Other Projects</h3> 247 <div class="box"> 248 249 To help people share and discover, we are separated out into different sub-sites that focus on specific 250 types and shapes of images. We outline those below. We also believe strongly in focusing our pages on 251 what you came here for: the images. Good titles, reasonable tags, relevant information for the image(s) 252 being presented, and not much else. 253 254 <br><br> 255 It's fun to work on new projects, and you'll see the various projects listed on our home page. 256 </div> 257 258 <br> 259 <h3>About Wallpaper Abyss</h3> 260 <div class="box"> 261 <a href="https://wall.alphacoders.com">https://wall.alphacoders.com</a> 262 <ul> 263 <li>Focused on discovering desktop computer wallpapers and backgrounds.</li> 264 <li>Here you'll find our content is heavily curated so that when you set it as your desktop, it looks great.</li> 265 </ul> 266 </div> 267 268 <br> 269 <h3>About Avatar Abyss</h3> 270 <div class="box"> 271 <a href="https://avatars.alphacoders.com">https://avatars.alphacoders.com</a> 272 <ul> 273 <li>We all have an online presence. The focus here is to find images specially created for the various forums 274 and other places where an avatar identifies you.</li> 275 </ul> 276 </div> 277 278 <br> 279 <h3>About Gif Abyss</h3> 280 <div class="box"> 281 <a href="https://gifs.alphacoders.com">https://gifs.alphacoders.com</a> 282 <ul> 283 <li>Moving images! They are so different from static images, that they have this home all to themselves</li> 284 <li>As the web moves forward, and the formats of gifs change, we endeavor to keep up, and format gifs 285 in ways people find useful.</li> 286 </ul> 287 </div> 288 289 <br> 290 <h3>About Mobile Abyss</h3> 291 <div class="box"> 292 <a href="https://mobile.alphacoders.com">https://mobile.alphacoders.com</a> 293 <ul> 294 <li>
294Computer wallpapers used to just mean desktop wallpapers. Not any more!</li> 295 <li>As phones become more and more popular, we separated out mobile sized images</li> 296 <li>Sort by your phone, or your phone's resolution. Every image here matches a resolution for an actual phone.</li> 297 </ul> 298 </div> 299 </div> 300 </div> 301 </main> 302 303 <button id="scroll_to_top" class="scroll-to-top">â</button> 304 305 306 <div class="footer" role="contentinfo"> 307 <br><br> 308 309 <div class="center"> 310 <span class="sub-title bold">Alpha Coders Network Links</span> 311 <br><br> 312 <div class="flex-container-centered"> 313 <div class="box-no-margin"> 314 <a href="https://alphacoders.com/site/about-us" rel="nofollow">About Us</a> 315 </div> 316 <div class="box-no-margin"> 317 <a href="https://alphacoders.com/site/faq" rel="nofollow">FAQ</a> 318 </div> 319 <div class="box-no-margin"> 320 <a href="https://alphacoders.com/site/privacy" rel="nofollow">Privacy Policy</a> 321 </div> 322 <div class="box-no-margin"> 323 <a href="https://alphacoders.com/site/tos" rel="nofollow">Terms Of Service</a> 324 </div> 325 <div class="box-no-margin"> 326 <a href="https://alphacoders.com/site/acceptable_use" rel="nofollow">Acceptable Use</a> 327 </div> 328 <div class="box-no-margin"> 329 <a href="https://alphacoders.com/site/etiquette" rel="nofollow">Etiquette</a> 330 </div> 331 <div class="box-no-margin"> 332 <a href="https://alphacoders.com/site/advertising" rel="nofollow">Advertise With Us</a> 333 </div> 334 <div class="box-no-margin"> 335 <a href="https://alphacoders.com/site/copyright">DMCA Copyright Violation</a> 336 </div> 337 <div class="box-no-margin"> 338 339 <a href="javascript:googlefc.callbackQueue.push(googlefc.showRevocationMessage)">Privacy and cookie settings</a> 340 </div> 341 342 </div> 343 </div> 344 <div class="center"> 345 <br> 346 <span class="sub-title">Website text and design is copyright 2026 Alpha Coders.<br/> 347 All submitted content remains copyright its original copyright holder 348 <br>Images are for private personal, non commercial use.</span> 349 350 351 352 353 354 355 356 357 </div> 358 359 360 </div> 361 362 363 364
364<script> 365 366 document.addEventListener("DOMContentLoaded", () => { 367 const scroll_to_top = document.getElementById("scroll_to_top"); 368 369 // Show button when scrolling down 370 window.addEventListener("scroll", () => { 371 if (window.scrollY > 200) { 372 scroll_to_top.style.display = "block"; 373 } else { 374 scroll_to_top.style.display = "none"; 375 } 376 }); 377 378 // Scroll to top when clicked 379 scroll_to_top.addEventListener("click", () => { 380 window.scrollTo({ 381 top: 0, 382 behavior: "smooth" 383 }); 384 }); 385 }); 386 387 388 function downloadContent(image_server, content_id, content_file_type) { 389 // Construct the download URL. Adjust this according to your URL scheme. 390 var downloadUrl = 'https://initiate.alphacoders.com' + '/download/' + image_server + '/' + content_id + '/' + content_file_type; 391 392 // Create a temporary link element 393 var tempLink = document.createElement('a'); 394 tempLink.href = downloadUrl; 395 tempLink.setAttribute('download', ''); // This can prompt download depending on content type and browser support 396 tempLink.style.display = 'none'; 397 398 // Append to the document and trigger the download 399 document.body.appendChild(tempLink); 400 tempLink.click(); 401 402 // Clean up by removing the temporary link 403 document.body.removeChild(tempLink); 404 } 405 406 function downloadContentModal(image_server, legacy_content_id, content_file_type, content_table_entry_id) { 407 //return downloadContent(image_server, content_id, content_file_type); 408 // Construct the download URL. Adjust this according to your URL scheme. 409 var downloadUrl = 'https://initiate.alphacoders.com' + '/download/' + image_server + '/' + legacy_content_id + '/' + content_file_type; 410 411 // Show modal with countdown 412 showDownloadModal(downloadUrl, content_table_entry_id); 413 } 414 415 function showDownloadModal(downloadUrl, content_table_entry_id) { 416 let modal_url = "https://initiate.alphacoders.com/download/modal/" + content_table_entry_id; 417 418 fetch(modal_url, { 419 credentials: 'same-origin', 420 headers: { 421 'X-Requested-With': 'XMLHttpRequest', 422 }, 423 }) 424 .then(function(response) { 425 if(!response.ok) { 426 throw new Error('Unable to load download modal'); 427 } 428 429 return response.text(); 430 }) 431 .then(function(data) { 432 // Insert the modal HTML from the server 433 const wrapper = document.createElement('div'); 434 wrapper.innerHTML = data; 435 436 while(wrapper.firstChild) { 437 document.body.appendChild(wrapper.firstChild); 438 } 439 440 // Run script tags from injected modal content (needed for ad initialization) 441 const modal = document.getElementById('downloadModal'); 442 if(modal) { 443 const modal_scripts = modal.querySelectorAll('script'); 444 modal_scripts.forEach(function(old_script) { 445 const new_script = document.createElement('script'); 446 447 for(let i = 0; i < old_script.attributes.length; i++) { 448 const attribute = old_script.attributes[i]; 449 new_script.setAttribute(attribute.name, attribute.value); 450 } 451 452 if(old_script.textContent) { 453 new_script.textContent = old_script.textContent; 454 } 455 456 old_script.parentNode.replaceChild(new_script, old_script); 457 }); 458 } 459 460 // Now set up the modal functionality 461 setupModalFunctionality(downloadUrl, content_table_entry_id); 462 }) 463 .catch(function() { 464 showNotice('error', 'Unable to load download modal'); 465 }); 466 } 467 468 function setupModalFunctionality(downloadUrl, content_table_entry_id) { 469 var countdown = 5; 470 471 if(content_table_entry_id == 3581636) { 472 countdown = 120; 473 } 474 475 var countdownElement = document.getElementById('countdown'); 476 var modal = document.getElementById('downloadModal'); 477 var cancelBtn = document.getElementById('cancelDownload'); 478 var countdown_message = document.getElementById('downloadCountdownMessage'); 479 var rewarded_message = document.getElementById('downloadRewardedMessage'); 480 var watch_rewarded_ad_button = document.getElementById('watchRewardedAd'); 481 var block_unfilled_rewarded_ad = false;
482 var require_rewarded_ad = false; 483 var reward_granted = false; 484 var rewarded_flow_settled = false; 485 var rewarded_slot = null; 486 var rewarded_ad_slot_name = 'Desktop_RewardedAd'; 487 var rewarded_status_timer = null; 488 489 if(modal && modal.getAttribute('data-block-unfilled-rewarded-ad') == '1') { 490 block_unfilled_rewarded_ad = true; 491 } 492 493 if(modal && modal.getAttribute('data-require-rewarded-ad') == '1') { 494 require_rewarded_ad = true; 495 } 496 497 if(modal && modal.getAttribute('data-rewarded-slot-name')) { 498 rewarded_ad_slot_name = modal.getAttribute('data-rewarded-slot-name'); 499 } 500 501 function closeModal() { 502 if(rewarded_slot && typeof googletag !== 'undefined' && googletag.destroySlots) { 503 googletag.destroySlots([rewarded_slot]); 504 rewarded_slot = null; 505 } 506 507 if (modal && modal.parentNode) { 508 modal.parentNode.removeChild(modal); 509 } 510 } 511 512 function executeDownload(url) { 513 var tempLink = document.createElement('a'); 514 tempLink.href = url; 515 tempLink.setAttribute('download', ''); 516 tempLink.style.display = 'none'; 517 document.body.appendChild(tempLink); 518 tempLink.click(); 519 document.body.removeChild(tempLink); 520 } 521 522 function handleRewardedUnavailable() { 523 if(rewarded_flow_settled) { 524 return; 525 } 526 rewarded_flow_settled = true; 527 528 console.log('[Rewarded Ad] Unavailable, block_unfilled:', block_unfilled_rewarded_ad); 529 if(rewarded_status_timer) { 530 clearInterval(rewarded_status_timer); 531 rewarded_status_timer = null; 532 } 533 534 if(watch_rewarded_ad_button) { 535 watch_rewarded_ad_button.style.display = 'none'; 536 } 537 538 if(block_unfilled_rewarded_ad) { 539 setRewardedStatus('Rewarded ad unavailable. Please try again in a bit, or go Premium to skip this.'); 540 return; 541 } 542 543 setRewardedStatus('Rewarded ad unavailable, letting you download anyway ;)'); 544 setTimeout(function() { 545 executeDownload(downloadUrl); 546 closeModal(); 547 }, 2500); 548 } 549 550 function setRewardedStatus(text) { 551 if(!rewarded_message) { 552 return; 553 } 554 555 rewarded_message.style.display = ''; 556 rewarded_message.textContent = text; 557 } 558 559 function startCountdown() { 560 console.log('[Rewarded Ad] Falling back to countdown'); 561 if(countdown_message) { 562 countdown_message.style.display = ''; 563 } 564 if(rewarded_message) { 565 rewarded_message.style.display = 'none'; 566 } 567 if(watch_rewarded_ad_button) { 568 watch_rewarded_ad_button.style.display = 'none'; 569 } 570 571 function updateCountdown() { 572 if(countdownElement) { 573 countdownElement.textContent = countdown; 574 } 575 if (countdown <= 0) { 576 executeDownload(downloadUrl); 577 closeModal(); 578 } else { 579 countdown--; 580 setTimeout(updateCountdown, 1000); 581 } 582 } 583 584 updateCountdown(); 585 } 586 587 function startRewardedAd() { 588 console.log('[Rewarded Ad] startRewardedAd'); 589 console.log('[Rewarded Ad] optidigitalQueue defined:', typeof optidigitalQueue !== 'undefined'); 590 console.log('[Rewarded Ad] optidigitalToolbox defined:', typeof optidigitalToolbox !== 'undefined'); 591 console.log('[Rewarded Ad] googletag defined:', typeof googletag !== 'undefined'); 592 console.log('[Rewarded Ad] googletag.apiReady:', typeof googletag !== 'undefined' ? googletag.apiReady : 'n/a'); 593 console.log('[Rewarded Ad] googletag.cmd type:', typeof googletag !== 'undefined' && googletag.cmd ? typeof googletag.cmd.push : 'n/a'); 594 console.log('[Rewarded Ad] slot name:', rewarded_ad_slot_name); 595 596 if(typeof optidigitalQueue === 'undefined' || !optidigitalQueue.cmd) { 597 console.log('[Rewarded Ad] optidigitalQueue missing, cannot create slot'); 598 handleRewardedUnavailable(); 599 return; 600 } 601 602 if(watch_rewarded_ad_button) { 603 watch_rewarded_ad_button.style.display = ''; 604 watch_rewarded_ad_button.disabled = true; 605 watch_rewarded_ad_button.textContent = 'Loading Ad...'; 606 console.log('[Rewarded Ad] Watch button set to Loading Ad...'); 607 } else { 608 console.log('[Rewarded Ad] Watch button element not found'); 609 } 610 611 setRewardedStatus('Finding a rewarded ad...'); 612 var loading_status_step = 0; 613 rewarded_status_timer = setInterval(function() { 614 if(rewarded_flow_settled) { 615 clearInterval(rewarded_status_timer); 616 rewarded_status_timer = null; 617 return; 618 } 619 620 loading_status_step++; 621 if(loading_status_step == 1) { 622 setRewardedStatus('Requesting an ad...'); 623 if(watch_rewarded_ad_button) { 624 watch_rewarded_ad_button.textContent = 'Still Loading...'; 625 } 626 } else if(loading_status_step == 2) { 627 setRewardedStatus('Still looking for an ad...'); 628 } else { 629 setRewardedStatus('This is taking a bit longer than usual...'); 630 } 631 }, 3000); 632 633 var rewarded_ready_event = null; 634 635 function assignOptiHandlers() { 636 if(typeof optidigitalToolbox === 'undefined') { 637 return; 638 } 639 640 var rewarded_ad_configuration = { 641 rewardedSlotClosed: function(event) { 642 onRewardedClosed(event, 'optidigital.rewardedSlotClosed'); 643 }, 644 rewardedSlotGranted: function(event) { 645 onRewardedGranted(event, 'optidigital.rewardedSlotGranted'); 646 }, 647 rewardedSlotReady: function(event) { 648 enableWatchButton(event, 'optidigital.rewardedSlotReady'); 649 }, 650 rewardedSlotUnfilled: function(slotName) { 651 console.log('[Rewarded Ad] rewardedSlotUnfilled', slotName); 652 handleRewardedUnavailable(); 653 } 654 }; 655 656 optidigitalToolbox.rewardedAdConfiguration = rewarded_ad_configuration; 657 optidigitalToolbox.rewardedSlotClosed = rewarded_ad_configuration.rewardedSlotClosed; 658 optidigitalToolbox.rewardedSlotGranted = rewarded_ad_configuration.rewardedSlotGranted; 659 optidigitalToolbox.rewardedSlotReady = rewarded_ad_configuration.rewardedSlotReady; 660 optidigitalToolbox.rewardedSlotUnfilled = rewarded_ad_configuration.rewardedSlotUnfilled; 661 } 662 663 function attachGptListeners() { 664 if(window.__download_rewarded_gpt_listeners) { 665 console.log('[Rewarded Ad] GPT listeners already attached'); 666 return; 667 } 668 669 window.__download_rewarded_gpt_listeners = true; 670 console.log('[Rewarded Ad] Attaching googletag.pubads rewarded listeners'); 671 googletag.pubads().addEventListener('rewardedSlotReady', function(event) { 672 enableWatchButton(event, 'googletag.rewardedSlotReady'); 673 }); 674 googletag.pubads().addEventListener('rewardedSlotGranted', function(event) { 675 onRewardedGranted(event, 'googletag.rewardedSlotGranted'); 676 }); 677 googletag.pubads().addEventListener('rewardedSlotClosed', function(event) { 678 onRewardedClosed(event, 'googletag.rewardedSlotClosed'); 679 }); 680 googletag.pubads().addEventListener('slotRenderEnded', function(event) { 681 console.log('[Rewarded Ad] googletag.slotRenderEnded isEmpty:', event.isEmpty, event); 682 if(event.isEmpty && event.slot === rewarded_slot) { 683 handleRewardedUnavailable(); 684 } 685 }); 686 googletag.pubads().addEventListener('slotRequested', function(event) { 687 console.log('[Rewarded Ad] googletag.slotRequested', event); 688 }); 689 } 690 691 function createNativeRewardedSlot() { 692 var ad_unit = '/4594367/rewarded_background_removal'; 693 if(window.odT && window.odT.initConfig && window.odT.initConfig.adUnit) { 694 ad_unit = window.odT.initConfig.adUnit; 695 } 696 697 console.log('[Rewarded Ad] Creating native GPT rewarded slot', ad_unit); 698 var slot = googletag.defineOutOfPageSlot(ad_unit, googletag.enums.OutOfPageFormat.REWARDED); 699 if(!slot) { 700 console.log('[Rewarded Ad] defineOutOfPageSlot returned null for', ad_unit); 701 if(ad_unit !== '/4594367/rewarded_background_removal') { 702 ad_unit = '/4594367/rewarded_background_removal'; 703 console.log('[Rewarded Ad] Retrying native slot with', ad_unit); 704 slot = googletag.defineOutOfPageSlot(ad_unit, googletag.enums.OutOfPageFormat.REWARDED); 705 } 706 } 707 708 if(!slot) { 709 console.log('[Rewarded Ad] Native rewarded slot not supported on this page'); 710 handleRewardedUnavailable(); 711 return; 712 } 713 714 slot.addService(googletag.pubads()); 715 if(slot.setTargeting) { 716 slot.setTargeting('adslot', rewarded_ad_slot_name); 717 } 718 rewarded_slot = slot; 719 displayAndRefreshSlot(slot); 720 } 721 722 function displayAndRefreshSlot(slot) { 723 console.log('[Rewarded Ad] displayAndRefreshSlot', slot); 724 try { 725 googletag.display(slot); 726 console.log('[Rewarded Ad] googletag.display() called'); 727 } catch (display_error) { 728 console.log('[Rewarded Ad] googletag.display() error', display_error); 729 } 730 731 try { 732 googletag.pubads().refresh([slot]); 733 console.log('[Rewarded Ad] googletag.pubads().refresh() called'); 734 } catch (refresh_error) { 735 console.log('[Rewarded Ad] googletag.pubads().refresh() error', refresh_error); 736 } 737 } 738 739 function enableWatchButton(event, source) { 740 console.log('[Rewarded Ad] enabling Watch button from', source, event); 741 rewarded_flow_settled = true; 742 rewarded_ready_event = event; 743 if(rewarded_status_timer) { 744 clearInterval(rewarded_status_timer); 745 rewarded_status_timer = null; 746 } 747 setRewardedStatus('Ad ready. Watch it to start your download.'); 748 if(!watch_rewarded_ad_button) { 749 console.log('[Rewarded Ad] Watch button missing in enableWatchButton'); 750 return; 751 } 752 753 watch_rewarded_ad_button.style.display = ''; 754 watch_rewarded_ad_button.disabled = false;
755 watch_rewarded_ad_button.textContent = 'Watch Rewarded Ad'; 756 watch_rewarded_ad_button.onclick = function() { 757 console.log('[Rewarded Ad] Watch button clicked, calling makeRewardedVisible'); 758 if(rewarded_ready_event && rewarded_ready_event.makeRewardedVisible) { 759 rewarded_ready_event.makeRewardedVisible(); 760 } else { 761 console.log('[Rewarded Ad] makeRewardedVisible not available on ready event', rewarded_ready_event); 762 } 763 }; 764 } 765 766 function getOptiRewardedSlot() { 767 if(window.odT && window.odT.gptAdSlots && window.odT.gptAdSlots[rewarded_ad_slot_name]) { 768 return window.odT.gptAdSlots[rewarded_ad_slot_name]; 769 } 770 771 if(window.odT && window.odT.adAdaptersFactory && window.odT.adAdaptersFactory.rewardedAdsAdapter && window.odT.adAdaptersFactory.rewardedAdsAdapter.getGPTSlot) { 772 var adapter_slots = window.odT.adAdaptersFactory.rewardedAdsAdapter.getGPTSlot(rewarded_ad_slot_name); 773 if(adapter_slots && adapter_slots.length) { 774 return adapter_slots[0]; 775 } 776 } 777 778 return null; 779 } 780 781 function onRewardedClosed(event, source) { 782 console.log('[Rewarded Ad] closed from', source, 'reward_granted:', reward_granted, event); 783 if(event && event.slot) { 784 rewarded_slot = event.slot; 785 } 786 787 if(rewarded_slot && typeof googletag !== 'undefined' && googletag.destroySlots) { 788 googletag.destroySlots([rewarded_slot]); 789 rewarded_slot = null; 790 } 791 } 792 793 function onRewardedGranted(event, source) { 794 console.log('[Rewarded Ad] granted from', source, event); 795 rewarded_flow_settled = true; 796 reward_granted = true; 797 if(event && event.slot) { 798 rewarded_slot = event.slot; 799 } 800 executeDownload(downloadUrl); 801 closeModal(); 802 } 803 804 function runCreate() { 805 console.log('[Rewarded Ad] runCreate'); 806 attachGptListeners(); 807 assignOptiHandlers(); 808 809 var created = false; 810 if(window.odT && window.odT.adAdaptersFactory && window.odT.adAdaptersFactory.rewardedAdsAdapter && window.odT.adAdaptersFactory.rewardedAdsAdapter.createRewardedAdSlot) { 811 created = window.odT.adAdaptersFactory.rewardedAdsAdapter.createRewardedAdSlot(rewarded_ad_slot_name, true); 812 console.log('[Rewarded Ad] adapter.createRewardedAdSlot returned', created); 813 } else if(typeof optidigitalToolbox !== 'undefined' && optidigitalToolbox.createRewardedAdSlot) { 814 console.log('[Rewarded Ad] adapter missing, using toolbox.createRewardedAdSlot'); 815 optidigitalToolbox.createRewardedAdSlot(rewarded_ad_slot_name); 816 } else { 817 console.log('[Rewarded Ad] No OptiDigital rewarded API, using native GPT'); 818 createNativeRewardedSlot(); 819 return; 820 } 821 822 var slot = getOptiRewardedSlot(); 823 console.log('[Rewarded Ad] OptiDigital GPT slot:', slot); 824 if(slot) { 825 rewarded_slot = slot; 826 displayAndRefreshSlot(slot); 827 return; 828 } 829 830 console.log('[Rewarded Ad] OptiDigital did not leave a GPT slot, using native fallback'); 831 createNativeRewardedSlot(); 832 } 833 834 function whenGptReady(callback) { 835 var ran = false;
836 837 function run() { 838 if(ran) { 839 return; 840 } 841 ran = true; 842 console.log('[Rewarded Ad] GPT ready, running create'); 843 callback(); 844 } 845 846 if(typeof googletag !== 'undefined' && googletag.cmd) { 847 console.log('[Rewarded Ad] Pushing create onto googletag.cmd'); 848 googletag.cmd.push(run); 849 } 850 851 var attempts = 0; 852 var timer = setInterval(function() { 853 attempts++; 854 if(typeof googletag !== 'undefined' && googletag.apiReady) { 855 clearInterval(timer); 856 run(); 857 return; 858 } 859 if(attempts >= 40) { 860 clearInterval(timer); 861 if(!ran) { 862 console.log('[Rewarded Ad] GPT never became ready'); 863 handleRewardedUnavailable(); 864 } 865 } 866 }, 250); 867 } 868 869 console.log('[Rewarded Ad] Pushing to optidigitalQueue.cmd'); 870 optidigitalQueue.cmd.push(function() { 871 console.log('[Rewarded Ad] optidigitalQueue.cmd callback running'); 872 assignOptiHandlers(); 873 whenGptReady(runCreate); 874 }); 875 876 setTimeout(function() { 877 if(!rewarded_flow_settled) { 878 console.log('[Rewarded Ad] Timed out waiting for rewarded ad'); 879 handleRewardedUnavailable(); 880 } 881 }, 10000); 882 } 883 884 if(cancelBtn) { 885 cancelBtn.addEventListener('click', closeModal); 886 } 887 888 if(!require_rewarded_ad) { 889 document.addEventListener('click', function(e) { 890 if (modal && !modal.contains(e.target)) { 891 closeModal(); 892 } 893 }); 894 } 895 896 console.log('[Rewarded Ad] setupModalFunctionality require_rewarded_ad:', require_rewarded_ad, 'content_table_entry_id:', content_table_entry_id); 897 if(require_rewarded_ad) { 898 startRewardedAd(); 899 } else { 900 startCountdown(); 901 } 902 } 903 904 905 async function interactSite(content_type, content_id, user_interaction, page_type = "") { 906 907 url = "https://api.alphacoders.com/site/interact"; 908 909 data = { 910 content_type: content_type, 911 content_id: content_id, 912 user_interaction: user_interaction, 913 page_type: page_type 914 915 } 916 917 918 response = await fetch(url, { 919 method: 'POST', 920 headers: { 921 'Content-Type': 'application/json' 922 }, 923 body: JSON.stringify(data) 924 }); 925 926 if(!response.ok) { 927 const message = `Error ${response.status}: ${response.statusText}`; 928 showNotice('error', message); 929 return; 930 } 931 932 response_data = await response.json(); 933 934 interaction_element = document.getElementById(`${content_type}_${content_id}_${user_interaction}`); 935 936 if(response_data.hasOwnProperty('success') && response_data.success == true) { 937 938 /* 939 if(response_data.hasOwnProperty('is_favorite') && response_data.is_favorite == true) { 940 favorite_tag_button.textContent = "A Favorite!"; 941 } else { 942 favorite_tag_button.textContent = "Favorite"; 943 } 944 */ 945 946 if(user_interaction == 'down') { 947 interaction_element.innerHTML = '<img class="svg svg-black" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/sad-tear.svg">'; 948 } else if(user_interaction == 'favorite' && content_type == 'tag' && response_data.hasOwnProperty('removed') && response_data.removed == true) { 949 950 951 showNotice('success', 'Favorite Removed'); 952 953 let favorite_wrapper_div = document.getElementById(`tag_${content_id}_favorite_wrapper`); 954 let new_html = `
955 <span class='button button-favorite' 956 title="Favorite This" 957 onclick="interactSite('tag', ${content_id}, 'favorite'); return false;" 958 id="tag_${content_id}_favorite"> 959 <img class="svg svg-black" alt="Favorite Icon" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/star.svg"> 960 Favorite 961 </span> 962 `; 963 favorite_wrapper_div.innerHTML = new_html; 964 965 } else if(user_interaction == 'favorite' && content_type == 'tag') { 966 967 968 showNotice('success', 'Thanks for the feedback! Login or register to save your favorites!'); 969 970 971 } 972 else if(user_interaction == "favorite" && response_data.hasOwnProperty('removed') && response_data.removed == true && 973 content_type == "content" && response_data.page_type == "content_view") { 974 975 let favorite_wrapper_div = document.getElementById(`favorite_${content_id}`); 976 977 let new_html = ` 978 <span class='button button-favorite' 979 title="Favorite This" 980 onclick="interactSite('content', ${content_id}, 'favorite', 'content_view'); return false;" 981 id="content_${content_id}_favorite"> 982 <img class="svg svg-black" alt="Favorite Icon" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/heart.svg"> 983 ${response_data.favorites} Favorite 984 </span> 985 `; 986 987 favorite_wrapper_div.innerHTML = new_html; 988 989 990 } 991 else if(user_interaction == "favorite" && content_type == "content" && response_data.page_type == "content_view") { 992 993 994 995 } 996 // Non tag favorites - like a piece of content! 997 else if(user_interaction == 'favorite') { 998 999 showNotice('success', 'Favorite Added!'); 1000 interaction_element.textContent = "A Favorite!"; 1001 1002 } else if(user_interaction == "more") { 1003 interaction_element.innerHTML = "We're On It!"; 1004 more_message_element = document.getElementById(`more_message`); 1005 more_message_element.innerHTML = 'You can see what the community is most requesting <a href="https://alphacoders.com/contest">at our community page</a>'; 1006 } 1007 // Removed like on content view page 1008 else if(user_interaction == "up" && response_data.hasOwnProperty('removed') && response_data.removed == true && 1009 content_type == "content" && response_data.page_type == "content_view") { 1010 1011 let rate_wrapper_div = document.getElementById(`rate_${content_id}`); 1012 1013 let new_html = ` 1014 <span class='button button-green rate-content' 1015 title="Like This" 1016 onclick="interactSite('content', ${content_id}, 'up', 'content_view'); return false;" 1017 id="content_${content_id}_up"> 1018 <img class="svg svg-black" 1019 alt="Like Icon" 1020 src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/thumbs-up.svg"> 1021 ${response_data.votes_up} Like 1022 </span> 1023 `; 1024 1025 rate_wrapper_div.innerHTML = new_html; 1026 } 1027 // Like on content view page 1028 else if(user_interaction == "up" && content_type == "content" && response_data.page_type == "content_view") { 1029 console.log("Rated up on content view page"); 1030 let rate_wrapper_div = document.getElementById(`rate_${content_id}`); 1031 1032 let new_html = ` 1033 <img class="svg svg-black" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/smile-beam.svg"> 1034 <img class="svg svg-black" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/thumbs-up.svg"> 1035 ${response_data.votes_up} 1036 `; 1037 1038 interaction_element.innerHTML = new_html; 1039 1040 1041 } else if(user_interaction == 'up') { 1042 1043 let new_html = ` 1044 <img class="svg svg-black" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/smile-beam.svg"> 1045 <img class="svg svg-black" src="https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs/solid/thumbs-up.svg"> 1046 ${response_data.votes_up} 1047 `; 1048 1049 interaction_element.innerHTML = new_html; 1050 } 1051 1052 } else { 1053 if(response_data.hasOwnProperty('error')) { 1054 showNotice('error', response_data.error); 1055 } else { 1056 showNotice('error', 'Unknown error'); 1057 } 1058 1059 } 1060 } 1061 1062 function hideNotice() { 1063 const notice = document.getElementById('notice'); 1064 1065 // Fade out the notice 1066 notice.style.opacity = '0'; 1067 1068 // Actually hide the notice after the fade-out transition is complete 1069 setTimeout(() => notice.className = 'notice', 500); 1070 } 1071 1072 function showNotice(notice_type, notice_message) { 1073 1074 const notice = document.getElementById('notice'); 1075 notice.style.opacity = '100'; 1076 const notice_close_button = document.getElementById('notice-close'); 1077 const messageElement = document.getElementById('notice-message'); 1078 1079 messageElement.innerHTML = notice_message; 1080 1081 if(notice_type == 'success') { 1082 1083 notice.className = 'notice-visible notice-success'; 1084 notice_close_button.className = 'notice-close notice-close-success'; 1085 1086 1087 } else if(notice_type == 'error') { 1088 notice.className = 'notice-visible notice-error'; 1089 notice_close_button.className = 'notice-close notice-close-error'; 1090 } 1091 1092 // Automatically hide the notice after 4 seconds 1093 setTimeout(hideNotice, 4000); 1094 1095 } 1096 1097 function toggleMenu() { 1098 1099 var header_menu = document.querySelector('div.header-menu'); 1100 var header_menu_display_style = window.getComputedStyle(header_menu).display; 1101 1102 // SHOW IT 1103 if(header_menu_display_style == 'none' || header_menu_display_style == '' || header_menu_display_style == false) { 1104 1105 header_menu.style.display = 'flex'; 1106 } 1107 // HIDE IT 1108 else { 1109 header_menu.style.display = 'none'; 1110 1111 } 1112 1113 } 1114 1115 1116 // Theme Toggle 1117 (function() { 1118 var svg_base = "https://static.alphacoders.com/fontawesome-pro-5.15.4-web/svgs"; 1119 var theme_icons = { 1120 'dark': svg_base + '/solid/moon.svg', 1121 'light': svg_base + '/solid/sun.svg' 1122 }; 1123 var default_icon = svg_base + '/solid/adjust.svg'; 1124 var toggle_btn = document.getElementById('theme-toggle-btn'); 1125 var dropdown = document.getElementById('theme-toggle-dropdown'); 1126 1127 function resolveSystemTheme() { 1128 if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) { 1129 return 'light'; 1130 } 1131 return 'dark'; 1132 } 1133 1134 function getCookie(name) { 1135 var value = '; ' + document.cookie; 1136 var parts = value.split('; ' + name + '='); 1137 if (parts.length === 2) { 1138 return parts.pop().split(';').shift(); 1139 } 1140 return null; 1141 } 1142 1143 function setThemePreference(choice) { 1144 try { 1145 localStorage.setItem('theme', choice); 1146 } catch (e) { 1147 } 1148 1149 var max_age = 60 * 60 * 24 * 365 * 5; 1150 var cookie = 'theme=' + encodeURIComponent(choice) + '; Max-Age=' + max_age + '; Path=/; SameSite=Lax'; 1151 var host = window.location.hostname; 1152 if (host && host.indexOf('.') !== -1) { 1153 var parts = host.split('.'); 1154 if (parts.length >= 2) { 1155 var base_domain = parts.slice(-2).join('.'); 1156 cookie += '; Domain=.' + base_domain; 1157 } 1158 } 1159 document.cookie = cookie; 1160 } 1161 1162 function getStoredTheme() { 1163 var cookie_theme = getCookie('theme'); 1164 if (cookie_theme) { 1165 return cookie_theme; 1166 } 1167 1168 try { 1169 return localStorage.getItem('theme'); 1170 } catch (e) { 1171 return null; 1172 } 1173 } 1174 1175 function applyTheme(choice) { 1176 var effective = choice; 1177 if (choice === 'system' || !choice) { 1178 effective = resolveSystemTheme(); 1179 } 1180 document.documentElement.setAttribute('data-theme', effective); 1181 1182 if (toggle_btn) { 1183 if (choice && theme_icons[choice]) { 1184 toggle_btn.src = theme_icons[choice]; 1185 } else { 1186 toggle_btn.src = default_icon; 1187 } 1188 } 1189 1190 var options = document.querySelectorAll('.theme-toggle-option'); 1191 for (var i = 0; i < options.length; i++) { 1192 var opt = options[i]; 1193 if (opt.getAttribute('data-theme-value') === choice) { 1194 opt.classList.add('active'); 1195 } else { 1196 opt.classList.remove('active'); 1197 } 1198 } 1199 } 1200 1201 var stored_theme = getStoredTheme(); 1202 applyTheme(stored_theme || 'system'); 1203 1204 if (toggle_btn && dropdown) { 1205 toggle_btn.addEventListener('click', function(e) { 1206 e.stopPropagation(); 1207 dropdown.classList.toggle('show'); 1208 }); 1209 1210 var options = dropdown.querySelectorAll('.theme-toggle-option'); 1211 for (var i = 0; i < options.length; i++) { 1212 options[i].addEventListener('click', function(e) { 1213 var choice = this.getAttribute('data-theme-value'); 1214 setThemePreference(choice); 1215 applyTheme(choice); 1216 dropdown.classList.remove('show'); 1217 }); 1218 } 1219 1220 document.addEventListener('click', function(e) { 1221 if (!toggle_btn.contains(e.target) && !dropdown.contains(e.target)) { 1222 dropdown.classList.remove('show'); 1223 } 1224 }); 1225 } 1226 1227 if (window.matchMedia) { 1228 window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function() { 1229 var current = getStoredTheme(); 1230 if (!current || current === 'system') { 1231 applyTheme('system'); 1232 } 1233 }); 1234 } 1235 })(); 1236 1237 1238 function applyRecentContentPanelState() { 1239 recent_content_items = document.getElementById('recent_content_items'); 1240 recent_content_toggle = document.getElementById('recent_content_toggle'); 1241 if(!recent_content_items || !recent_content_toggle) { 1242 return; 1243 } 1244 1245 if(window.localStorage.getItem('recent_content_minimized') == '1') { 1246 recent_content_items.style.display = 'none'; 1247 recent_content_toggle.textContent = 'Show Recent'; 1248 } else { 1249 recent_content_items.style.display = 'flex';
1250 recent_content_toggle.textContent = 'Minimize'; 1251 } 1252 } 1253 1254 function authorFilter(author_id, filter_type, new_tab = false) { 1255 const form = document.createElement("form"); 1256 form.method = "POST"; 1257 form.action = "https://alphacoders.com/author/view/" + author_id; 1258 if(new_tab == true) { 1259 form.target = "_blank"; 1260 } 1261 1262 const hidden_field = document.createElement("input"); 1263 hidden_field.type = "hidden"; 1264 hidden_field.name = "filter"; 1265 hidden_field.value = filter_type; 1266 1267 form.appendChild(hidden_field); 1268 document.body.appendChild(form); 1269 1270 form.submit(); 1271 } 1272 1273 function getSiteInteractionContentType(legacy_ac_type) { 1274 if(legacy_ac_type == 'mobile_wallpaper') { 1275 return 'mobile'; 1276 } 1277 if(legacy_ac_type == 'pic') { 1278 return 'picture'; 1279 } 1280 return legacy_ac_type; 1281 } 1282 1283 function profileFilter(profile_user_id, profile_user_name, filter_type) { 1284 const form = document.createElement("form"); 1285 form.method = "POST"; 1286 form.action = "https://alphacoders.com/users/profile/" + profile_user_id + "/" + encodeURIComponent(profile_user_name); 1287 1288 const hidden_field = document.createElement("input"); 1289 hidden_field.type = "hidden"; 1290 hidden_field.name = "filter"; 1291 hidden_field.value = filter_type; 1292 1293 form.appendChild(hidden_field); 1294 document.body.appendChild(form); 1295 1296 form.submit(); 1297 } 1298 1299 function toggleRecentContentPanel() { 1300 if(window.localStorage.getItem('recent_content_minimized') == '1') { 1301 window.localStorage.setItem('recent_content_minimized', '0'); 1302 } else { 1303 window.localStorage.setItem('recent_content_minimized', '1'); 1304 } 1305 1306 applyRecentContentPanelState(); 1307 } 1308 1309 recent_content_container = document.getElementById('recent_content'); 1310 if(recent_content_container) { 1311 recent_content_observer = new MutationObserver(function() { 1312 applyRecentContentPanelState(); 1313 }); 1314 recent_content_observer.observe(recent_content_container, { childList: true }); 1315 } 1316 1317 1318 </script>
1318 1319 1320 1321
1321<script> 1322 document.addEventListener('DOMContentLoaded', function() { 1323 const dropdownButton = document.querySelector('.button-dropdown'); 1324 const dropdownContent = document.querySelector('.button-dropdown-content'); 1325 1326 if(dropdownButton && dropdownContent) { 1327 dropdownButton.addEventListener('click', function(e) { 1328 e.preventDefault(); 1329 dropdownContent.classList.toggle('show'); 1330 }); 1331 1332 // Close the dropdown when clicking outside of it 1333 document.addEventListener('click', function(e) { 1334 if (!dropdownButton.contains(e.target) && !dropdownContent.contains(e.target)) { 1335 dropdownContent.classList.remove('show'); 1336 } 1337 }); 1338 } 1339 1340 }); 1341 </script>
1341 1342 1343 1344 1345</body> 1346 1347</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.