diff --git a/.DS_Store b/.DS_Store index f60bf01..a040a1a 100755 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/._webball b/._webball new file mode 100755 index 0000000..dcde5b8 Binary files /dev/null and b/._webball differ diff --git a/index.gmi b/index.gmi index 0024dbd..6e4d92c 100644 --- a/index.gmi +++ b/index.gmi @@ -69,6 +69,7 @@ Currently, I code amazing stuff for Sneed Group. My focus is on building efficie => https://sneedgit.nodemixaholic.com Public Code Copies (HTTPS) => https://ollama.com/sparksammy My Ollama Projects (HTTPS) => https://search.sparksammy.com/ Sparksammy Search (HTTPS) +=> https://nodemixaholic.com/webball WebBall (A port of Space Cadet Pinball by alula on GitHub) ## Private Network Links (SNEED GROUP USE ONLY! SOME INTERNAL!) => https://rfs.sparksammy.com/browse LordCloud diff --git a/index.html b/index.html index a37acc9..2cd3e54 100644 --- a/index.html +++ b/index.html @@ -7,4 +7,4 @@ `--- ---' `--- ---'

About Me

Hello! I'm NodeMixaholic, also known as Sparksammy, Sammy L, and Charles D. Spellman. I'm a passionate programmer dedicated to crafting awesome software solutions.

I:

Now on Gemini!

You can also find me on Gemini at:

gemini://gemini.nodemixaholic.com
-

Note that this Gemini Capsule is best viewed with Lagrange, with the media player set to VLC.

Skills

Languages

Scripting

AI

Work

Currently, I code amazing stuff for Sneed Group. My focus is on building efficient, scalable applications that enhance user experience and drive innovation.

Projects

Gemini Links

Capitan's Log
Wallpapers
Guides
Videos
Old Blog Posts
Download Unofficial Parsec Boot ISO

HTTPS Links

Public Code Copies (HTTPS)
My Ollama Projects (HTTPS)
Sparksammy Search (HTTPS)

Private Network Links (SNEED GROUP USE ONLY! SOME INTERNAL!)

LordCloud
Jellyfin
Passwords
WebTop
VSCode Online
ArchiveBox

---

Copyright Sammy Lord, all rights reserved.

+

Note that this Gemini Capsule is best viewed with Lagrange, with the media player set to VLC.

Skills

Languages

Scripting

AI

Work

Currently, I code amazing stuff for Sneed Group. My focus is on building efficient, scalable applications that enhance user experience and drive innovation.

Projects

Gemini Links

Capitan's Log
Wallpapers
Guides
Videos
Old Blog Posts
Download Unofficial Parsec Boot ISO

HTTPS Links

Public Code Copies (HTTPS)
My Ollama Projects (HTTPS)
Sparksammy Search (HTTPS)
WebBall (A port of Space Cadet Pinball by alula on GitHub)

Private Network Links (SNEED GROUP USE ONLY! SOME INTERNAL!)

LordCloud
Jellyfin
Passwords
WebTop
VSCode Online
ArchiveBox

---

Copyright Sammy Lord, all rights reserved.

diff --git a/log/index.html b/log/index.html index 6930f2b..ffea93a 100644 --- a/log/index.html +++ b/log/index.html @@ -1 +1 @@ -Mirrored Gemini content.

Capitan's Log

Nov 3rd 2024 - Hello, welcome to my Gemini log!

Just setting up my Gemini log.

Nov 3rd 2024 - Project 2025 is bleak

Sun Nov 3 11:36:31 PM UTC 2024 - I added dates now.

wow.

Mon Nov 4 03:51:16 PM UTC 2024 - Old guides, new home.

I have ported all my old guides from "tech-docs" on my old GitHub Pages

site to the new "/guides" page so it's easier for people to refer to them,

and this makes them even more lightweight and easy on the eyes.

Enjoy, and have a great day!

Mon Nov 4 07:29:04 PM UTC 2024 - Apple's Sneaky ChatGPT Plus Upgrade: A Misleading Move?

Apple's latest iOS 18.2 Beta has sparked a bit of controversy among tech enthusiasts. A newly added button labeled "Upgrade to ChatGPT Plus" within the Apple Intelligence settings has left many scratching their heads.

At first glance, it might seem like Apple is offering a seamless integration of ChatGPT Plus into its AI ecosystem. However, a closer look reveals a more nuanced situation. The upgrade itself is free, but the additional features and capabilities that ChatGPT Plus provides come with a separate subscription fee.

This has led to some confusion and disappointment among users who had initially assumed that ChatGPT Plus would be included as part of the Apple Intelligence package. After all, Apple has a history of integrating powerful AI tools into its products, and many speculated that ChatGPT Plus would be no exception.

While it's understandable that Apple would want to monetize its AI offerings, the way they've presented the ChatGPT Plus upgrade seems a bit misleading. It's as if they're hinting at a more generous integration than what's actually available.

It's a classic case of setting expectations high and then delivering a less-than-stellar outcome.

It remains to be seen how Apple will address this issue and whether they will clarify their intentions regarding ChatGPT Plus and Apple Intelligence. In the meantime, users will have to decide if the additional cost of a ChatGPT Plus subscription is worth the extra features.

Mon Nov 4 07:35:38 PM UTC 2024 - Why Apple's Ecosystem Shines: A Deep Dive into Security, Privacy, and Integration

Apple's devices, from the sleek MacBooks to the versatile iPhones, have consistently topped consumer preference lists. A significant reason for this is the seamless integration within Apple's ecosystem. Let's delve into the key factors:

Unmatched Security and Privacy

Seamless Integration

User-Friendly Experience

While other platforms have their merits, Apple's ecosystem provides a unique blend of security, privacy, and seamless integration that sets it apart from the competition.

Mon Nov 4 07:56:32 PM UTC 2024 - The Future of AI: A Deep Dive into Generative AI and Its Implications

Generative AI, a subset of artificial intelligence, has the potential to revolutionize industries and reshape our world. From crafting realistic images and videos to generating human-quality text, generative AI is rapidly advancing. This article explores the cutting-edge techniques driving this revolution, such as Generative Adversarial Networks (GANs) and Large Language Models (LLMs). GANs, for instance, pit two neural networks against each other, a generator and a discriminator, to create highly realistic synthetic data. LLMs, on the other hand, are trained on massive datasets of text and code, enabling them to generate coherent and contextually relevant text.

The implications of generative AI are far-reaching. In the creative industries, AI can assist artists and designers by generating new ideas and automating repetitive tasks. In healthcare, AI can analyze medical images to detect diseases early and develop personalized treatment plans. In the automotive industry, AI can power self-driving cars and optimize traffic flow. However, the rapid advancement of generative AI also raises ethical concerns. As AI systems become more sophisticated, there is a risk of misuse, such as deepfakes and AI-generated misinformation. It is crucial to develop ethical guidelines and regulations to ensure the responsible development and deployment of AI.

In conclusion, generative AI is a powerful tool with the potential to transform society. By understanding the underlying techniques and addressing the ethical implications, we can harness the power of AI for the betterment of humanity.

Mon Nov 4 07:57:18 PM UTC 2024 - Cybersecurity in the Age of AI: Protecting Our Digital World

As AI becomes increasingly integrated into our daily lives, so too do the cyber threats it poses. Cybercriminals are leveraging AI to launch more sophisticated attacks, such as targeted phishing campaigns and automated hacking tools. This article examines the evolving landscape of cybersecurity, highlighting the new challenges and opportunities presented by AI. Traditional security measures, such as firewalls and antivirus software, may not be sufficient to protect against these advanced threats. AI-powered defense mechanisms, such as advanced threat detection and automated response systems, are essential to stay ahead of cybercriminals.  

AI can also be used to enhance cybersecurity by automating routine tasks, such as vulnerability scanning and patch management. Additionally, AI can analyze large datasets of network traffic to identify anomalies and potential threats. However, AI itself can be a target for cyberattacks. Adversarial attacks, for instance, can manipulate AI models to make incorrect decisions. It is crucial to develop robust security measures to protect AI systems from these attacks.

In conclusion, AI offers both opportunities and challenges for cybersecurity. By understanding the risks and adopting advanced security measures, organizations can protect their digital assets and mitigate the impact of cyberattacks.

Mon Nov 4 07:57:58 PM UTC 2024 - The Internet of Things (IoT): A Connected Future or a Privacy Nightmare?

The IoT, a network of interconnected devices, promises to transform our homes, cities, and industries. From smart homes to smart cities, the IoT has the potential to improve our lives in countless ways. However, the proliferation of IoT devices also raises concerns about privacy, security, and data breaches. With billions of devices connected to the internet, the potential for data breaches is significant. Cybercriminals can exploit vulnerabilities in IoT devices to gain access to sensitive information or launch attacks on critical infrastructure.

To mitigate these risks, it is essential to prioritize security and privacy by design. Manufacturers should implement robust security measures, such as encryption and secure authentication protocols, to protect IoT devices from attacks. Additionally, consumers should be aware of the privacy implications of using IoT devices and take steps to protect their data.

In conclusion, the IoT has the potential to revolutionize our world, but it is essential to address the security and privacy challenges to ensure a safe and secure connected future.

Mon Nov 4 07:58:24 PM UTC 2024 - Blockchain Beyond Cryptocurrency: Exploring the Potential of Distributed Ledger Technology

Blockchain, the technology underpinning cryptocurrencies like Bitcoin, offers a decentralized and transparent way to record transactions. This article explores the broader applications of blockchain technology, such as supply chain management, healthcare, and finance. In supply chain management, blockchain can track the movement of goods from origin to destination, reducing fraud and increasing transparency. In healthcare, blockchain can secure patient records and facilitate the sharing of medical information. In finance, blockchain can streamline payment processing and reduce the risk of fraud.

One of the key advantages of blockchain is its immutability, meaning that once data is recorded on the blockchain, it cannot be altered. This makes blockchain a highly secure and reliable technology. Additionally, blockchain is decentralized, which means that there is no single point of failure. This makes it more resilient to attacks and censorship.

However, blockchain technology is not without its challenges. Scalability, energy consumption, and regulatory uncertainty are some of the key issues that need to be addressed. Despite these challenges, blockchain has the potential to revolutionize many industries and drive innovation.

Mon Nov 4 07:58:49 PM UTC 2024 - The Impact of 5G on Our Daily Lives: Faster Speeds, Lower Latency, and More

The advent of 5G technology promises to revolutionize connectivity, enabling faster speeds, lower latency, and greater capacity. This article explores the potential impact of 5G on various industries, including healthcare, transportation, and entertainment. In healthcare, 5G can enable remote surgery, telemedicine, and real-time monitoring of patient health. In transportation, 5G can power autonomous vehicles and improve traffic management. In entertainment, 5G can deliver immersive virtual and augmented reality experiences.

The lower latency of 5G will enable real-time applications that were previously impossible. For example, 5G can enable self-driving cars to make split-second decisions based on real-time sensor data. Additionally, 5G can support a massive number of connected devices, enabling the development of smart cities and the Internet of Things.

However, the deployment of 5G infrastructure is a complex and costly endeavor. Additionally, there are concerns about the potential health impacts of 5G radiation. Despite these challenges, 5G has the potential to transform our society and economy.

Mon Nov 4 07:59:12 PM UTC 2024 - The Future of Work: How AI and Automation Will Reshape the Workplace

AI and automation are rapidly transforming the workplace, leading to increased efficiency and productivity. However, these advancements also raise concerns about job displacement and the future of work. As AI and automation technologies continue to evolve, it is essential to prepare for the future of work by developing new skills and adapting to changing job markets.

While AI and automation can eliminate repetitive and mundane tasks, they can also create new opportunities for innovation and creativity. For example, AI can assist human workers in making complex decisions, such as medical diagnoses and financial analysis. Additionally, AI can generate new ideas and insights, leading to breakthroughs in various fields.

To ensure a smooth transition to the future of work, it is crucial to invest in education and training programs. By equipping workers with the necessary skills, we can mitigate the negative impacts of automation and create a more equitable and prosperous future.

Mon Nov 4 07:59:49 PM UTC 2024 - The Role of Open Source Software in Driving Innovation

Open-source software, freely available for use and modification, has played a crucial role in the development of technology. This article explores the benefits of open-source software, including transparency, collaboration, and innovation. Open-source software is developed collaboratively by a global community of developers, which leads to rapid innovation and bug fixes. Additionally, open-source software is often more secure than proprietary software, as it is subject to scrutiny by a large community of experts.

Open-source software has had a significant impact on various industries, including web development, cloud computing, and artificial intelligence. Popular open-source projects, such as Linux, Apache, and Python, have become the foundation of modern computing. By leveraging open-source software, organizations can reduce costs, increase flexibility, and accelerate development.

However, open-source software also faces challenges, such as licensing, security, and sustainability. It is essential to address these challenges to ensure the continued growth and development of open-source software. By fostering a culture of open innovation, we can drive technological advancement and benefit society as a whole.

Mon Nov 4 08:01:23 PM UTC 2024 - Apple's Design Aesthetic: A Timeless Classic

Apple has always been synonymous with sleek, minimalist design. From the iconic iPod to the latest iPhone, Apple's products are not just functional but also beautiful. The company's attention to detail is evident in every aspect of its devices, from the curved edges of the iPhone to the precision-machined aluminum chassis of the MacBook Pro.

Beyond the physical design, Apple's software is equally elegant. The intuitive user interface of iOS and macOS is a testament to the company's commitment to user experience. Apple's software is not just visually appealing but also highly functional, offering a seamless experience across all devices.

Mon Nov 4 08:01:34 PM UTC 2024 - The Power of the Apple Ecosystem

One of the key strengths of Apple's products is their seamless integration. The Apple ecosystem allows users to effortlessly sync their devices, share files, and pick up where they left off. For example, you can start a document on your iPhone, continue editing it on your iPad, and finish it on your Mac.

iCloud, Apple's cloud storage service, provides a centralized hub for your photos, documents, and other data. This ensures that your files are always accessible, regardless of which device you're using. Additionally, features like Handoff and Universal Clipboard make it easy to switch between devices without missing a beat.

Mon Nov 4 08:02:08 PM UTC 2024 - Apple's Commitment to Privacy

In an era of increasing surveillance and data breaches, Apple has consistently prioritized user privacy. The company has implemented strong security measures to protect user data, including end-to-end encryption for messages and secure authentication methods.

Apple's commitment to privacy extends beyond its products. The company has been a vocal advocate for user rights and has fought for stronger privacy regulations. By prioritizing privacy, Apple has earned the trust of millions of users around the world.

Mon Nov 4 08:02:32 PM UTC 2024 - The Future of Apple: Innovation and Sustainability

Apple continues to push the boundaries of technology, with innovations such as the M-series chips, which offer unparalleled performance and efficiency. The company is also committed to sustainability, using recycled materials in its products and reducing its carbon footprint.

As Apple looks to the future, it is likely to continue to innovate and deliver groundbreaking products. With a focus on design, performance, and privacy, Apple is poised to remain a leader in the tech industry for years to come.

Wed Nov 6 07:47:31 PM UTC 2024 - Oh no! Trump won!

Oh shit! That orange bastard won!?! Really??? He TOTALLY didn't

cheat either. Anyways, what can you do? What's done is done,

and now he's going to make Project 2025 a reality. A

dystopian nightmare is soon going to be active for all Americans

if someone doesn't do something to protest, and *fast.*

Thu Nov 7 05:00:43 PM UTC 2024 - Christmas 2024-2025 Song Giveaway - The Krampus Song

Hello, world! We at CD/DC are giving away our new release "The Krampus Song" for FREE

exclusive to NodeMixaholic Gemini Capsule viewers! Click the link below for the song!

A 1 USD value for FREE. A steal of a deal!

The Krampus Song (FREE DOWNLOAD)

Signed,

Sparksammy/NodeMixaholic, from CD/DC.

Merry Christmas, and...

"...Go to hell, you scrooge."

Thu Nov 7 06:04:03 PM UTC 2024 - The Mac mini M4: A Tiny Powerhouse

Apple's latest Mac mini M4 is a compact powerhouse that packs a punch. This sleek little device, measuring just 5 inches by 5 inches by 2 inches and weighing in at a mere ~1.6 pounds, is a testament to Apple's commitment to innovation and performance. With its powerful M4 chip, the Mac mini M4 delivers incredible speed and efficiency, making it perfect for a wide range of tasks.

From content creation to software development, the Mac mini M4 can handle it all. Its lightning-fast processor and ample storage options ensure smooth multitasking and seamless performance. Whether you're editing videos, designing graphics, or coding complex software, the Mac mini M4 won't let you down.

One of the most impressive aspects of the Mac mini M4 is its versatility. It can be easily connected to a variety of displays, keyboards, and mice, making it a flexible and adaptable solution for any workspace. Plus, its compact design allows you to take it with you wherever you go, making it the perfect companion for remote work or travel.

If you're looking for a powerful, efficient, and stylish desktop computer, the Mac mini M4 is an excellent choice. Its combination of performance, versatility, and affordability makes it a standout in the market. So why wait? Upgrade your computing experience today with the Mac mini M4.

Thu Nov 7 06:08:04 PM UTC 2024 - Gemini Protocol: A Simple, Private Web

Simplicity and Lightweight

Privacy-Focused

Community-Driven

Nostalgic and Novel

Accessibility

Fri Nov 8 07:52:43 PM UTC 2024 - I was (am) mirroring archive.org *CANCELED*

Hello, world! I am mirroring the Internet Archive. Why, you may

ask? The world is going to shit, everyone is suing the Archive,

and I'm afraid such an awesome resource either won't be the

same anymore, OR WORSE, could be shut down forever. Why? Fuck

you, that's why. (The companies, all they care about is that

all mighty dollar.) Anyways, when it's done (heavy wip at the

moment) you can find it below:

*Internet Archive Archive is CANCELED*

Mon Nov 11 10:17:46 PM UTC 2024 - Why I'm Scared for the future of FOSS on the Mac...

+Mirrored Gemini content.

Capitan's Log

Nov 3rd 2024 - Hello, welcome to my Gemini log!

Just setting up my Gemini log.

Nov 3rd 2024 - Project 2025 is bleak

Sun Nov 3 11:36:31 PM UTC 2024 - I added dates now.

wow.

Mon Nov 4 03:51:16 PM UTC 2024 - Old guides, new home.

I have ported all my old guides from "tech-docs" on my old GitHub Pages

site to the new "/guides" page so it's easier for people to refer to them,

and this makes them even more lightweight and easy on the eyes.

Enjoy, and have a great day!

Mon Nov 4 07:29:04 PM UTC 2024 - Apple's Sneaky ChatGPT Plus Upgrade: A Misleading Move?

Apple's latest iOS 18.2 Beta has sparked a bit of controversy among tech enthusiasts. A newly added button labeled "Upgrade to ChatGPT Plus" within the Apple Intelligence settings has left many scratching their heads.

At first glance, it might seem like Apple is offering a seamless integration of ChatGPT Plus into its AI ecosystem. However, a closer look reveals a more nuanced situation. The upgrade itself is free, but the additional features and capabilities that ChatGPT Plus provides come with a separate subscription fee.

This has led to some confusion and disappointment among users who had initially assumed that ChatGPT Plus would be included as part of the Apple Intelligence package. After all, Apple has a history of integrating powerful AI tools into its products, and many speculated that ChatGPT Plus would be no exception.

While it's understandable that Apple would want to monetize its AI offerings, the way they've presented the ChatGPT Plus upgrade seems a bit misleading. It's as if they're hinting at a more generous integration than what's actually available.

It's a classic case of setting expectations high and then delivering a less-than-stellar outcome.

It remains to be seen how Apple will address this issue and whether they will clarify their intentions regarding ChatGPT Plus and Apple Intelligence. In the meantime, users will have to decide if the additional cost of a ChatGPT Plus subscription is worth the extra features.

Mon Nov 4 07:35:38 PM UTC 2024 - Why Apple's Ecosystem Shines: A Deep Dive into Security, Privacy, and Integration

Apple's devices, from the sleek MacBooks to the versatile iPhones, have consistently topped consumer preference lists. A significant reason for this is the seamless integration within Apple's ecosystem. Let's delve into the key factors:

Unmatched Security and Privacy

Seamless Integration

User-Friendly Experience

While other platforms have their merits, Apple's ecosystem provides a unique blend of security, privacy, and seamless integration that sets it apart from the competition.

Mon Nov 4 07:56:32 PM UTC 2024 - The Future of AI: A Deep Dive into Generative AI and Its Implications

Generative AI, a subset of artificial intelligence, has the potential to revolutionize industries and reshape our world. From crafting realistic images and videos to generating human-quality text, generative AI is rapidly advancing. This article explores the cutting-edge techniques driving this revolution, such as Generative Adversarial Networks (GANs) and Large Language Models (LLMs). GANs, for instance, pit two neural networks against each other, a generator and a discriminator, to create highly realistic synthetic data. LLMs, on the other hand, are trained on massive datasets of text and code, enabling them to generate coherent and contextually relevant text.

The implications of generative AI are far-reaching. In the creative industries, AI can assist artists and designers by generating new ideas and automating repetitive tasks. In healthcare, AI can analyze medical images to detect diseases early and develop personalized treatment plans. In the automotive industry, AI can power self-driving cars and optimize traffic flow. However, the rapid advancement of generative AI also raises ethical concerns. As AI systems become more sophisticated, there is a risk of misuse, such as deepfakes and AI-generated misinformation. It is crucial to develop ethical guidelines and regulations to ensure the responsible development and deployment of AI.

In conclusion, generative AI is a powerful tool with the potential to transform society. By understanding the underlying techniques and addressing the ethical implications, we can harness the power of AI for the betterment of humanity.

Mon Nov 4 07:57:18 PM UTC 2024 - Cybersecurity in the Age of AI: Protecting Our Digital World

As AI becomes increasingly integrated into our daily lives, so too do the cyber threats it poses. Cybercriminals are leveraging AI to launch more sophisticated attacks, such as targeted phishing campaigns and automated hacking tools. This article examines the evolving landscape of cybersecurity, highlighting the new challenges and opportunities presented by AI. Traditional security measures, such as firewalls and antivirus software, may not be sufficient to protect against these advanced threats. AI-powered defense mechanisms, such as advanced threat detection and automated response systems, are essential to stay ahead of cybercriminals.  

AI can also be used to enhance cybersecurity by automating routine tasks, such as vulnerability scanning and patch management. Additionally, AI can analyze large datasets of network traffic to identify anomalies and potential threats. However, AI itself can be a target for cyberattacks. Adversarial attacks, for instance, can manipulate AI models to make incorrect decisions. It is crucial to develop robust security measures to protect AI systems from these attacks.

In conclusion, AI offers both opportunities and challenges for cybersecurity. By understanding the risks and adopting advanced security measures, organizations can protect their digital assets and mitigate the impact of cyberattacks.

Mon Nov 4 07:57:58 PM UTC 2024 - The Internet of Things (IoT): A Connected Future or a Privacy Nightmare?

The IoT, a network of interconnected devices, promises to transform our homes, cities, and industries. From smart homes to smart cities, the IoT has the potential to improve our lives in countless ways. However, the proliferation of IoT devices also raises concerns about privacy, security, and data breaches. With billions of devices connected to the internet, the potential for data breaches is significant. Cybercriminals can exploit vulnerabilities in IoT devices to gain access to sensitive information or launch attacks on critical infrastructure.

To mitigate these risks, it is essential to prioritize security and privacy by design. Manufacturers should implement robust security measures, such as encryption and secure authentication protocols, to protect IoT devices from attacks. Additionally, consumers should be aware of the privacy implications of using IoT devices and take steps to protect their data.

In conclusion, the IoT has the potential to revolutionize our world, but it is essential to address the security and privacy challenges to ensure a safe and secure connected future.

Mon Nov 4 07:58:24 PM UTC 2024 - Blockchain Beyond Cryptocurrency: Exploring the Potential of Distributed Ledger Technology

Blockchain, the technology underpinning cryptocurrencies like Bitcoin, offers a decentralized and transparent way to record transactions. This article explores the broader applications of blockchain technology, such as supply chain management, healthcare, and finance. In supply chain management, blockchain can track the movement of goods from origin to destination, reducing fraud and increasing transparency. In healthcare, blockchain can secure patient records and facilitate the sharing of medical information. In finance, blockchain can streamline payment processing and reduce the risk of fraud.

One of the key advantages of blockchain is its immutability, meaning that once data is recorded on the blockchain, it cannot be altered. This makes blockchain a highly secure and reliable technology. Additionally, blockchain is decentralized, which means that there is no single point of failure. This makes it more resilient to attacks and censorship.

However, blockchain technology is not without its challenges. Scalability, energy consumption, and regulatory uncertainty are some of the key issues that need to be addressed. Despite these challenges, blockchain has the potential to revolutionize many industries and drive innovation.

Mon Nov 4 07:58:49 PM UTC 2024 - The Impact of 5G on Our Daily Lives: Faster Speeds, Lower Latency, and More

The advent of 5G technology promises to revolutionize connectivity, enabling faster speeds, lower latency, and greater capacity. This article explores the potential impact of 5G on various industries, including healthcare, transportation, and entertainment. In healthcare, 5G can enable remote surgery, telemedicine, and real-time monitoring of patient health. In transportation, 5G can power autonomous vehicles and improve traffic management. In entertainment, 5G can deliver immersive virtual and augmented reality experiences.

The lower latency of 5G will enable real-time applications that were previously impossible. For example, 5G can enable self-driving cars to make split-second decisions based on real-time sensor data. Additionally, 5G can support a massive number of connected devices, enabling the development of smart cities and the Internet of Things.

However, the deployment of 5G infrastructure is a complex and costly endeavor. Additionally, there are concerns about the potential health impacts of 5G radiation. Despite these challenges, 5G has the potential to transform our society and economy.

Mon Nov 4 07:59:12 PM UTC 2024 - The Future of Work: How AI and Automation Will Reshape the Workplace

AI and automation are rapidly transforming the workplace, leading to increased efficiency and productivity. However, these advancements also raise concerns about job displacement and the future of work. As AI and automation technologies continue to evolve, it is essential to prepare for the future of work by developing new skills and adapting to changing job markets.

While AI and automation can eliminate repetitive and mundane tasks, they can also create new opportunities for innovation and creativity. For example, AI can assist human workers in making complex decisions, such as medical diagnoses and financial analysis. Additionally, AI can generate new ideas and insights, leading to breakthroughs in various fields.

To ensure a smooth transition to the future of work, it is crucial to invest in education and training programs. By equipping workers with the necessary skills, we can mitigate the negative impacts of automation and create a more equitable and prosperous future.

Mon Nov 4 07:59:49 PM UTC 2024 - The Role of Open Source Software in Driving Innovation

Open-source software, freely available for use and modification, has played a crucial role in the development of technology. This article explores the benefits of open-source software, including transparency, collaboration, and innovation. Open-source software is developed collaboratively by a global community of developers, which leads to rapid innovation and bug fixes. Additionally, open-source software is often more secure than proprietary software, as it is subject to scrutiny by a large community of experts.

Open-source software has had a significant impact on various industries, including web development, cloud computing, and artificial intelligence. Popular open-source projects, such as Linux, Apache, and Python, have become the foundation of modern computing. By leveraging open-source software, organizations can reduce costs, increase flexibility, and accelerate development.

However, open-source software also faces challenges, such as licensing, security, and sustainability. It is essential to address these challenges to ensure the continued growth and development of open-source software. By fostering a culture of open innovation, we can drive technological advancement and benefit society as a whole.

Mon Nov 4 08:01:23 PM UTC 2024 - Apple's Design Aesthetic: A Timeless Classic

Apple has always been synonymous with sleek, minimalist design. From the iconic iPod to the latest iPhone, Apple's products are not just functional but also beautiful. The company's attention to detail is evident in every aspect of its devices, from the curved edges of the iPhone to the precision-machined aluminum chassis of the MacBook Pro.

Beyond the physical design, Apple's software is equally elegant. The intuitive user interface of iOS and macOS is a testament to the company's commitment to user experience. Apple's software is not just visually appealing but also highly functional, offering a seamless experience across all devices.

Mon Nov 4 08:01:34 PM UTC 2024 - The Power of the Apple Ecosystem

One of the key strengths of Apple's products is their seamless integration. The Apple ecosystem allows users to effortlessly sync their devices, share files, and pick up where they left off. For example, you can start a document on your iPhone, continue editing it on your iPad, and finish it on your Mac.

iCloud, Apple's cloud storage service, provides a centralized hub for your photos, documents, and other data. This ensures that your files are always accessible, regardless of which device you're using. Additionally, features like Handoff and Universal Clipboard make it easy to switch between devices without missing a beat.

Mon Nov 4 08:02:08 PM UTC 2024 - Apple's Commitment to Privacy

In an era of increasing surveillance and data breaches, Apple has consistently prioritized user privacy. The company has implemented strong security measures to protect user data, including end-to-end encryption for messages and secure authentication methods.

Apple's commitment to privacy extends beyond its products. The company has been a vocal advocate for user rights and has fought for stronger privacy regulations. By prioritizing privacy, Apple has earned the trust of millions of users around the world.

Mon Nov 4 08:02:32 PM UTC 2024 - The Future of Apple: Innovation and Sustainability

Apple continues to push the boundaries of technology, with innovations such as the M-series chips, which offer unparalleled performance and efficiency. The company is also committed to sustainability, using recycled materials in its products and reducing its carbon footprint.

As Apple looks to the future, it is likely to continue to innovate and deliver groundbreaking products. With a focus on design, performance, and privacy, Apple is poised to remain a leader in the tech industry for years to come.

Wed Nov 6 07:47:31 PM UTC 2024 - Oh no! Trump won!

Oh shit! That orange bastard won!?! Really??? He TOTALLY didn't

cheat either. Anyways, what can you do? What's done is done,

and now he's going to make Project 2025 a reality. A

dystopian nightmare is soon going to be active for all Americans

if someone doesn't do something to protest, and *fast.*

Thu Nov 7 05:00:43 PM UTC 2024 - Christmas 2024-2025 Song Giveaway - The Krampus Song

Hello, world! We at CD/DC are giving away our new release "The Krampus Song" for FREE

exclusive to NodeMixaholic Gemini Capsule viewers! Click the link below for the song!

A 1 USD value for FREE. A steal of a deal!

The Krampus Song (FREE DOWNLOAD)

Signed,

Sparksammy/NodeMixaholic, from CD/DC.

Merry Christmas, and...

"...Go to hell, you scrooge."

Thu Nov 7 06:04:03 PM UTC 2024 - The Mac mini M4: A Tiny Powerhouse

Apple's latest Mac mini M4 is a compact powerhouse that packs a punch. This sleek little device, measuring just 5 inches by 5 inches by 2 inches and weighing in at a mere ~1.6 pounds, is a testament to Apple's commitment to innovation and performance. With its powerful M4 chip, the Mac mini M4 delivers incredible speed and efficiency, making it perfect for a wide range of tasks.

From content creation to software development, the Mac mini M4 can handle it all. Its lightning-fast processor and ample storage options ensure smooth multitasking and seamless performance. Whether you're editing videos, designing graphics, or coding complex software, the Mac mini M4 won't let you down.

One of the most impressive aspects of the Mac mini M4 is its versatility. It can be easily connected to a variety of displays, keyboards, and mice, making it a flexible and adaptable solution for any workspace. Plus, its compact design allows you to take it with you wherever you go, making it the perfect companion for remote work or travel.

If you're looking for a powerful, efficient, and stylish desktop computer, the Mac mini M4 is an excellent choice. Its combination of performance, versatility, and affordability makes it a standout in the market. So why wait? Upgrade your computing experience today with the Mac mini M4.

Thu Nov 7 06:08:04 PM UTC 2024 - Gemini Protocol: A Simple, Private Web

Simplicity and Lightweight

Privacy-Focused

Community-Driven

Nostalgic and Novel

Accessibility

Fri Nov 8 07:52:43 PM UTC 2024 - I was (am) mirroring archive.org *CANCELED*

Hello, world! I am mirroring the Internet Archive. Why, you may

ask? The world is going to shit, everyone is suing the Archive,

and I'm afraid such an awesome resource either won't be the

same anymore, OR WORSE, could be shut down forever. Why? Fuck

you, that's why. (The companies, all they care about is that

all mighty dollar.) Anyways, when it's done (heavy wip at the

moment) you can find it below:

*Internet Archive Archive is CANCELED*

Mon Nov 11 10:17:46 PM UTC 2024 - Why I'm Scared for the future of FOSS on the Mac...

Thu Nov 21 05:15:00 PM UTC 2024 - Reasons macOS is Better than Windows and Linux...

1. User Experience:

* macOS is known for its intuitive and consistent user interface, making it easier for users to navigate and operate compared to the more fragmented experiences often found in Windows and Linux environments.

2. Integration with Apple Ecosystem:

* Seamless integration with other Apple devices (iPhone, iPad, etc.) enhances usability, allowing for easy file sharing and continuity across devices.

3. Stability and Reliability:

* macOS generally offers greater stability due to Apple's control over both hardware and software, resulting in fewer crashes and system errors compared to Windows, which can be affected by diverse hardware configurations.

4. Security:

* Macs are less vulnerable to viruses and malware, partly due to their smaller market share and Apple's stringent security measures. This contrasts with Windows, which is more frequently targeted by malicious software.

5. Quality of Built-in Applications:

* macOS comes with high-quality built-in applications like iMovie, GarageBand, and the iWork suite, which are well-integrated into the system. These tools are often praised for their ease of use and functionality.

6. Design and Build Quality:

* Apple products are known for their premium materials and sleek design, contributing to a more aesthetically pleasing user experience.

7. Customer Support:

* Apple provides excellent customer service and support, which can be a significant advantage over the often variable support experiences with Windows PCs or Linux systems.

8. Less Maintenance Required:

* Users report that macOS requires less maintenance than Windows systems, which often need regular updates and troubleshooting due to driver issues or software conflicts.

9. Performance Optimization:

* Macs are optimized for performance with their hardware-software integration, resulting in faster boot times and efficient resource management compared to many Windows PCs.

10. Creative Industry Preference:

* Many professionals in creative fields (graphic design, video editing, music production) prefer Macs due to the availability of industry-standard software that is often better supported on macOS.

diff --git a/webball/.DS_Store b/webball/.DS_Store new file mode 100755 index 0000000..33fc33b Binary files /dev/null and b/webball/.DS_Store differ diff --git a/webball/._.DS_Store b/webball/._.DS_Store new file mode 100755 index 0000000..28c42fb Binary files /dev/null and b/webball/._.DS_Store differ diff --git a/webball/._SpaceCadetPinball.data b/webball/._SpaceCadetPinball.data new file mode 100755 index 0000000..0eb1deb Binary files /dev/null and b/webball/._SpaceCadetPinball.data differ diff --git a/webball/._SpaceCadetPinball.js b/webball/._SpaceCadetPinball.js new file mode 100755 index 0000000..0eb1deb Binary files /dev/null and b/webball/._SpaceCadetPinball.js differ diff --git a/webball/._SpaceCadetPinball.wasm b/webball/._SpaceCadetPinball.wasm new file mode 100755 index 0000000..0eb1deb Binary files /dev/null and b/webball/._SpaceCadetPinball.wasm differ diff --git a/webball/._game_resources b/webball/._game_resources new file mode 100755 index 0000000..cb55e27 Binary files /dev/null and b/webball/._game_resources differ diff --git a/webball/._index.html b/webball/._index.html new file mode 100755 index 0000000..30535f9 Binary files /dev/null and b/webball/._index.html differ diff --git a/webball/SpaceCadetPinball.data b/webball/SpaceCadetPinball.data new file mode 100755 index 0000000..0667ebc Binary files /dev/null and b/webball/SpaceCadetPinball.data differ diff --git a/webball/SpaceCadetPinball.js b/webball/SpaceCadetPinball.js new file mode 100755 index 0000000..041b2b0 --- /dev/null +++ b/webball/SpaceCadetPinball.js @@ -0,0 +1 @@ +var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="../bin/SpaceCadetPinball.data";var REMOTE_PACKAGE_BASE="SpaceCadetPinball.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","game_resources",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="SpaceCadetPinball.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Gd"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Id"];addOnInit(Module["asm"]["Hd"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={3402188:function($0){var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},3402413:function($0,$1){alert(UTF8ToString($0)+"\n\n"+UTF8ToString($1))},3402470:function($0,$1,$2){var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer)}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},3404914:function($0){if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}return 0},3405007:function(){if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},3405076:function(){return screen.width},3405101:function(){return screen.height},3405127:function(){return window.innerWidth},3405157:function(){return window.innerHeight},3405188:function($0){if(typeof setWindowTitle!=="undefined"){setWindowTitle(UTF8ToString($0))}return 0},3405283:function(){if(typeof AudioContext!=="undefined"){return 1}else if(typeof webkitAudioContext!=="undefined"){return 1}return 0},3405420:function(){if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return 1}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return 1}return 0},3405644:function($0){if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},3406137:function(){var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},3406205:function($0,$1,$2,$3){var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},3407857:function($0,$1,$2,$3){var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},3408267:function($0,$1){var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c>2]}}},3409352:function($0){var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}var ExceptionInfoAttrs={DESTRUCTOR_OFFSET:0,REFCOUNT_OFFSET:4,TYPE_OFFSET:8,CAUGHT_OFFSET:12,RETHROWN_OFFSET:13,SIZE:16};function ___cxa_allocate_exception(size){return _malloc(size+ExceptionInfoAttrs.SIZE)+ExceptionInfoAttrs.SIZE}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-ExceptionInfoAttrs.SIZE;this.set_type=function(type){HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]=type};this.get_type=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=prev-1;return prev===1}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,65536);var ptr=_malloc(alignedSize);while(size=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_mkdir(path,mode){try{path=SYSCALLS.getStr(path);return SYSCALLS.doMkdir(path,mode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function registerType(rawType,registeredInstance,options){options=options||{};if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(function(cb){cb()})}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.includes("unsigned");registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function _abort(){abort()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};var _emscripten_get_now_is_monotonic=true;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function _dlclose(handle){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function _exit(status){exit(status)}function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){if(e instanceof ExitStatus){return}throw e}}}function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function callUserCallback(func,synchronous){if(ABORT){return}if(synchronous){func();return}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e!=="unwind"){if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){callUserCallback(func)})},safeSetTimeout:function(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglBindAPI(api){if(api==12448){EGL.setErrorCode(12288);return 1}else{EGL.setErrorCode(12300);return 0}}function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;canvas.getContext=function(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}}var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);{GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion!=2){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetConfigAttrib(display,config,attribute,value){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglGetError(){return EGL.errorCode}function _eglInitialize(display,majorVersion,minorVersion){if(display==62e3){if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}else{EGL.setErrorCode(12296);return 0}}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglQueryString(display,name){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=allocateUTF8("Emscripten");break;case 12372:ret=allocateUTF8("1.4 Emscripten EGL");break;case 12373:ret=allocateUTF8("");break;case 12429:ret=allocateUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret}function _eglSwapBuffers(){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}function _eglWaitClient(){EGL.setErrorCode(12288);return 1}function _eglWaitGL(){return _eglWaitClient()}function _eglWaitNative(nativeEngineId){EGL.setErrorCode(12288);return 1}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}function getCanvasElementSize(target){var stackTop=stackSave();var w=stackAlloc(8);var h=w+4;var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];stackRestore(stackTop);return size}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function setCanvasElementSize(target,width,height){if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{var stackTop=stackSave();var targetInt=stackAlloc(target.id.length+1);stringToUTF8(target.id,targetInt,target.id.length+1);_emscripten_set_canvas_element_size(targetInt,width,height);stackRestore(stackTop)}}function registerRestoreOldStyle(canvas){var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement||document.msFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){wasmTable.get(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle}function setLetterbox(element,topBottom,leftRight){element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _JSEvents_resizeCanvasForFullscreen(target,strategy){var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;{param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;{param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s&&stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)}function _emscripten_glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_has_asyncify(){return 0}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function doRequestFullscreen(target,strategy){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(_JSEvents_requestFullscreen,1,[target,strategy]);return 1}else{return-2}}return _JSEvents_requestFullscreen(target,strategy)}function _emscripten_request_fullscreen_strategy(target,deferUntilInEventHandler,fullscreenStrategy){var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock&&!target.msRequestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}else{return-2}}return requestPointerLock(target)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(ev){var e=ev||event;var confirmationMessage=wasmTable.get(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_beforeunload_callback_on_thread(userData,callbackfunc,targetThread){if(typeof onbeforeunload==="undefined")return-1;if(targetThread!==1)return-5;registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload");return 0}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(ev){var e=ev||event;var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(wasmTable.get(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);return 0}function _emscripten_set_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);return 0}function _emscripten_set_main_loop_arg(func,arg,fps,simulateInfiniteLoop){var browserIterationFunc=function(){wasmTable.get(func)(arg)};setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg)}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);return 0}function _emscripten_set_mouseenter_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);return 0}function _emscripten_set_mouseleave_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);return 0}function fillPointerlockChangeEventData(eventStruct){var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)}function registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=function(ev){var e=ev||event;var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_pointerlockchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return 0}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(ev){var e=ev||event;if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(wasmTable.get(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);return 0}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function fillVisibilityChangeEventData(eventStruct){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState}function registerVisibilityChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=function(ev){var e=ev||event;var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_visibilitychange_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!specialHTMLTargets[1]){return-4}registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread);return 0}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(96);var wheelHandlerFunc=function(ev){var e=ev||event;var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+64>>3]=e["deltaX"];HEAPF64[wheelEvent+72>>3]=e["deltaY"];HEAPF64[wheelEvent+80>>3]=e["deltaZ"];HEAP32[wheelEvent+88>>2]=e["deltaMode"];if(wasmTable.get(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(typeof target.onwheel!=="undefined"){registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread);return 0}else{return-1}}function _emscripten_sleep(){throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _setTempRet0(val){setTempRet0(val)}function _sigaction(signum,act,oldact){return 0}var __sigalrm_handler=0;function _signal(sig,func){if(sig==14){__sigalrm_handler=func}else{}return 0}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"W":___cxa_allocate_exception,"V":___cxa_throw,"Sa":___sys_chdir,"R":___sys_fcntl64,"Ua":___sys_ioctl,"Wa":___sys_mkdir,"Va":___sys_open,"Ma":__embind_register_bigint,"Da":__embind_register_bool,"Ca":__embind_register_emval,"o":__embind_register_float,"c":__embind_register_integer,"b":__embind_register_memory_view,"p":__embind_register_std_string,"j":__embind_register_std_wstring,"Ea":__embind_register_void,"m":_abort,"g":_clock_gettime,"Ha":_dlclose,"kd":_eglBindAPI,"qa":_eglChooseConfig,"sb":_eglCreateContext,"Pb":_eglCreateWindowSurface,"Db":_eglDestroyContext,"_b":_eglDestroySurface,"Ba":_eglGetConfigAttrib,"U":_eglGetDisplay,"hb":_eglGetError,"Fd":_eglInitialize,"jc":_eglMakeCurrent,"Ya":_eglQueryString,"uc":_eglSwapBuffers,"Fc":_eglSwapInterval,"fa":_eglTerminate,"$c":_eglWaitGL,"Qc":_eglWaitNative,"a":_emscripten_asm_const_int,"Ia":_emscripten_exit_fullscreen,"Ka":_emscripten_exit_pointerlock,"i":_emscripten_get_device_pixel_ratio,"e":_emscripten_get_element_css_size,"s":_emscripten_get_gamepad_status,"Ga":_emscripten_get_num_gamepads,"ga":_emscripten_glActiveTexture,"ea":_emscripten_glAttachShader,"xa":_emscripten_glBeginQueryEXT,"da":_emscripten_glBindAttribLocation,"ca":_emscripten_glBindBuffer,"ba":_emscripten_glBindFramebuffer,"aa":_emscripten_glBindRenderbuffer,"$":_emscripten_glBindTexture,"oa":_emscripten_glBindVertexArrayOES,"_":_emscripten_glBlendColor,"Z":_emscripten_glBlendEquation,"Y":_emscripten_glBlendEquationSeparate,"X":_emscripten_glBlendFunc,"Ed":_emscripten_glBlendFuncSeparate,"Dd":_emscripten_glBufferData,"Cd":_emscripten_glBufferSubData,"Bd":_emscripten_glCheckFramebufferStatus,"Ad":_emscripten_glClear,"zd":_emscripten_glClearColor,"yd":_emscripten_glClearDepthf,"xd":_emscripten_glClearStencil,"wd":_emscripten_glColorMask,"vd":_emscripten_glCompileShader,"ud":_emscripten_glCompressedTexImage2D,"td":_emscripten_glCompressedTexSubImage2D,"sd":_emscripten_glCopyTexImage2D,"rd":_emscripten_glCopyTexSubImage2D,"qd":_emscripten_glCreateProgram,"pd":_emscripten_glCreateShader,"od":_emscripten_glCullFace,"nd":_emscripten_glDeleteBuffers,"md":_emscripten_glDeleteFramebuffers,"ld":_emscripten_glDeleteProgram,"za":_emscripten_glDeleteQueriesEXT,"jd":_emscripten_glDeleteRenderbuffers,"id":_emscripten_glDeleteShader,"hd":_emscripten_glDeleteTextures,"na":_emscripten_glDeleteVertexArraysOES,"gd":_emscripten_glDepthFunc,"fd":_emscripten_glDepthMask,"ed":_emscripten_glDepthRangef,"dd":_emscripten_glDetachShader,"cd":_emscripten_glDisable,"bd":_emscripten_glDisableVertexAttribArray,"ad":_emscripten_glDrawArrays,"ja":_emscripten_glDrawArraysInstancedANGLE,"ka":_emscripten_glDrawBuffersWEBGL,"_c":_emscripten_glDrawElements,"ia":_emscripten_glDrawElementsInstancedANGLE,"Zc":_emscripten_glEnable,"Yc":_emscripten_glEnableVertexAttribArray,"wa":_emscripten_glEndQueryEXT,"Xc":_emscripten_glFinish,"Wc":_emscripten_glFlush,"Vc":_emscripten_glFramebufferRenderbuffer,"Uc":_emscripten_glFramebufferTexture2D,"Tc":_emscripten_glFrontFace,"Sc":_emscripten_glGenBuffers,"Pc":_emscripten_glGenFramebuffers,"Aa":_emscripten_glGenQueriesEXT,"Oc":_emscripten_glGenRenderbuffers,"Nc":_emscripten_glGenTextures,"ma":_emscripten_glGenVertexArraysOES,"Rc":_emscripten_glGenerateMipmap,"Mc":_emscripten_glGetActiveAttrib,"Lc":_emscripten_glGetActiveUniform,"Kc":_emscripten_glGetAttachedShaders,"Jc":_emscripten_glGetAttribLocation,"Ic":_emscripten_glGetBooleanv,"Hc":_emscripten_glGetBufferParameteriv,"Gc":_emscripten_glGetError,"Ec":_emscripten_glGetFloatv,"Dc":_emscripten_glGetFramebufferAttachmentParameteriv,"Cc":_emscripten_glGetIntegerv,"Ac":_emscripten_glGetProgramInfoLog,"Bc":_emscripten_glGetProgramiv,"ra":_emscripten_glGetQueryObjecti64vEXT,"ta":_emscripten_glGetQueryObjectivEXT,"pa":_emscripten_glGetQueryObjectui64vEXT,"sa":_emscripten_glGetQueryObjectuivEXT,"ua":_emscripten_glGetQueryivEXT,"zc":_emscripten_glGetRenderbufferParameteriv,"xc":_emscripten_glGetShaderInfoLog,"wc":_emscripten_glGetShaderPrecisionFormat,"vc":_emscripten_glGetShaderSource,"yc":_emscripten_glGetShaderiv,"tc":_emscripten_glGetString,"sc":_emscripten_glGetTexParameterfv,"rc":_emscripten_glGetTexParameteriv,"oc":_emscripten_glGetUniformLocation,"qc":_emscripten_glGetUniformfv,"pc":_emscripten_glGetUniformiv,"lc":_emscripten_glGetVertexAttribPointerv,"nc":_emscripten_glGetVertexAttribfv,"mc":_emscripten_glGetVertexAttribiv,"kc":_emscripten_glHint,"ic":_emscripten_glIsBuffer,"hc":_emscripten_glIsEnabled,"gc":_emscripten_glIsFramebuffer,"fc":_emscripten_glIsProgram,"ya":_emscripten_glIsQueryEXT,"ec":_emscripten_glIsRenderbuffer,"dc":_emscripten_glIsShader,"cc":_emscripten_glIsTexture,"la":_emscripten_glIsVertexArrayOES,"bc":_emscripten_glLineWidth,"ac":_emscripten_glLinkProgram,"$b":_emscripten_glPixelStorei,"Zb":_emscripten_glPolygonOffset,"va":_emscripten_glQueryCounterEXT,"Yb":_emscripten_glReadPixels,"Xb":_emscripten_glReleaseShaderCompiler,"Wb":_emscripten_glRenderbufferStorage,"Vb":_emscripten_glSampleCoverage,"Ub":_emscripten_glScissor,"Tb":_emscripten_glShaderBinary,"Sb":_emscripten_glShaderSource,"Rb":_emscripten_glStencilFunc,"Qb":_emscripten_glStencilFuncSeparate,"Ob":_emscripten_glStencilMask,"Nb":_emscripten_glStencilMaskSeparate,"Mb":_emscripten_glStencilOp,"Lb":_emscripten_glStencilOpSeparate,"Kb":_emscripten_glTexImage2D,"Jb":_emscripten_glTexParameterf,"Ib":_emscripten_glTexParameterfv,"Hb":_emscripten_glTexParameteri,"Gb":_emscripten_glTexParameteriv,"Fb":_emscripten_glTexSubImage2D,"Cb":_emscripten_glUniform1f,"Bb":_emscripten_glUniform1fv,"Ab":_emscripten_glUniform1i,"zb":_emscripten_glUniform1iv,"yb":_emscripten_glUniform2f,"xb":_emscripten_glUniform2fv,"wb":_emscripten_glUniform2i,"vb":_emscripten_glUniform2iv,"ub":_emscripten_glUniform3f,"tb":_emscripten_glUniform3fv,"rb":_emscripten_glUniform3i,"qb":_emscripten_glUniform3iv,"pb":_emscripten_glUniform4f,"ob":_emscripten_glUniform4fv,"nb":_emscripten_glUniform4i,"mb":_emscripten_glUniform4iv,"lb":_emscripten_glUniformMatrix2fv,"kb":_emscripten_glUniformMatrix3fv,"jb":_emscripten_glUniformMatrix4fv,"ib":_emscripten_glUseProgram,"gb":_emscripten_glValidateProgram,"fb":_emscripten_glVertexAttrib1f,"eb":_emscripten_glVertexAttrib1fv,"db":_emscripten_glVertexAttrib2f,"cb":_emscripten_glVertexAttrib2fv,"bb":_emscripten_glVertexAttrib3f,"ab":_emscripten_glVertexAttrib3fv,"$a":_emscripten_glVertexAttrib4f,"_a":_emscripten_glVertexAttrib4fv,"ha":_emscripten_glVertexAttribDivisorANGLE,"Za":_emscripten_glVertexAttribPointer,"Xa":_emscripten_glViewport,"n":_emscripten_has_asyncify,"Na":_emscripten_memcpy_big,"Ja":_emscripten_request_fullscreen_strategy,"P":_emscripten_request_pointerlock,"Oa":_emscripten_resize_heap,"t":_emscripten_sample_gamepad_data,"u":_emscripten_set_beforeunload_callback_on_thread,"G":_emscripten_set_blur_callback_on_thread,"h":_emscripten_set_canvas_element_size,"k":_emscripten_set_element_css_size,"H":_emscripten_set_focus_callback_on_thread,"x":_emscripten_set_fullscreenchange_callback_on_thread,"r":_emscripten_set_gamepadconnected_callback_on_thread,"q":_emscripten_set_gamepaddisconnected_callback_on_thread,"A":_emscripten_set_keydown_callback_on_thread,"y":_emscripten_set_keypress_callback_on_thread,"z":_emscripten_set_keyup_callback_on_thread,"Eb":_emscripten_set_main_loop_arg,"M":_emscripten_set_mousedown_callback_on_thread,"K":_emscripten_set_mouseenter_callback_on_thread,"J":_emscripten_set_mouseleave_callback_on_thread,"N":_emscripten_set_mousemove_callback_on_thread,"L":_emscripten_set_mouseup_callback_on_thread,"B":_emscripten_set_pointerlockchange_callback_on_thread,"w":_emscripten_set_resize_callback_on_thread,"C":_emscripten_set_touchcancel_callback_on_thread,"E":_emscripten_set_touchend_callback_on_thread,"D":_emscripten_set_touchmove_callback_on_thread,"F":_emscripten_set_touchstart_callback_on_thread,"v":_emscripten_set_visibilitychange_callback_on_thread,"I":_emscripten_set_wheel_callback_on_thread,"l":_emscripten_sleep,"Ra":_emscripten_thread_sleep,"Pa":_environ_get,"Qa":_environ_sizes_get,"O":_exit,"T":_fd_close,"Ta":_fd_read,"La":_fd_seek,"S":_fd_write,"f":_gettimeofday,"Q":_setTempRet0,"d":_sigaction,"Fa":_signal};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["Hd"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Jd"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Kd"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Ld"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Md"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Nd"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Od"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Pd"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Qd"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Rd"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Sd"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["Td"]).apply(null,arguments)};var dynCall_iiji=Module["dynCall_iiji"]=function(){return(dynCall_iiji=Module["dynCall_iiji"]=Module["asm"]["Ud"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(implicit&&keepRuntimeAlive()&&status===0){return}if(keepRuntimeAlive()){}else{exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/webball/SpaceCadetPinball.wasm b/webball/SpaceCadetPinball.wasm new file mode 100755 index 0000000..138525e Binary files /dev/null and b/webball/SpaceCadetPinball.wasm differ diff --git a/webball/game_resources/._FONT.DAT b/webball/game_resources/._FONT.DAT new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._FONT.DAT differ diff --git a/webball/game_resources/._PINBALL.DAT b/webball/game_resources/._PINBALL.DAT new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._PINBALL.DAT differ diff --git a/webball/game_resources/._PINBALL.MID b/webball/game_resources/._PINBALL.MID new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._PINBALL.MID differ diff --git a/webball/game_resources/._PINBALL2.MID b/webball/game_resources/._PINBALL2.MID new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._PINBALL2.MID differ diff --git a/webball/game_resources/._README.txt b/webball/game_resources/._README.txt new file mode 100755 index 0000000..10da023 Binary files /dev/null and b/webball/game_resources/._README.txt differ diff --git a/webball/game_resources/._SOUND1.WAV b/webball/game_resources/._SOUND1.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND1.WAV differ diff --git a/webball/game_resources/._SOUND104.WAV b/webball/game_resources/._SOUND104.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND104.WAV differ diff --git a/webball/game_resources/._SOUND105.WAV b/webball/game_resources/._SOUND105.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND105.WAV differ diff --git a/webball/game_resources/._SOUND108.WAV b/webball/game_resources/._SOUND108.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND108.WAV differ diff --git a/webball/game_resources/._SOUND111.WAV b/webball/game_resources/._SOUND111.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND111.WAV differ diff --git a/webball/game_resources/._SOUND112.WAV b/webball/game_resources/._SOUND112.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND112.WAV differ diff --git a/webball/game_resources/._SOUND12.WAV b/webball/game_resources/._SOUND12.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND12.WAV differ diff --git a/webball/game_resources/._SOUND13.WAV b/webball/game_resources/._SOUND13.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND13.WAV differ diff --git a/webball/game_resources/._SOUND131.WAV b/webball/game_resources/._SOUND131.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND131.WAV differ diff --git a/webball/game_resources/._SOUND136.WAV b/webball/game_resources/._SOUND136.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND136.WAV differ diff --git a/webball/game_resources/._SOUND14.WAV b/webball/game_resources/._SOUND14.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND14.WAV differ diff --git a/webball/game_resources/._SOUND16.WAV b/webball/game_resources/._SOUND16.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND16.WAV differ diff --git a/webball/game_resources/._SOUND17.WAV b/webball/game_resources/._SOUND17.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND17.WAV differ diff --git a/webball/game_resources/._SOUND18.WAV b/webball/game_resources/._SOUND18.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND18.WAV differ diff --git a/webball/game_resources/._SOUND181.WAV b/webball/game_resources/._SOUND181.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND181.WAV differ diff --git a/webball/game_resources/._SOUND19.WAV b/webball/game_resources/._SOUND19.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND19.WAV differ diff --git a/webball/game_resources/._SOUND20.WAV b/webball/game_resources/._SOUND20.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND20.WAV differ diff --git a/webball/game_resources/._SOUND21.WAV b/webball/game_resources/._SOUND21.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND21.WAV differ diff --git a/webball/game_resources/._SOUND22.WAV b/webball/game_resources/._SOUND22.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND22.WAV differ diff --git a/webball/game_resources/._SOUND24.WAV b/webball/game_resources/._SOUND24.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND24.WAV differ diff --git a/webball/game_resources/._SOUND240.WAV b/webball/game_resources/._SOUND240.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND240.WAV differ diff --git a/webball/game_resources/._SOUND243.WAV b/webball/game_resources/._SOUND243.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND243.WAV differ diff --git a/webball/game_resources/._SOUND25.WAV b/webball/game_resources/._SOUND25.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND25.WAV differ diff --git a/webball/game_resources/._SOUND26.WAV b/webball/game_resources/._SOUND26.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND26.WAV differ diff --git a/webball/game_resources/._SOUND27.WAV b/webball/game_resources/._SOUND27.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND27.WAV differ diff --git a/webball/game_resources/._SOUND28.WAV b/webball/game_resources/._SOUND28.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND28.WAV differ diff --git a/webball/game_resources/._SOUND29.WAV b/webball/game_resources/._SOUND29.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND29.WAV differ diff --git a/webball/game_resources/._SOUND3.WAV b/webball/game_resources/._SOUND3.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND3.WAV differ diff --git a/webball/game_resources/._SOUND30.WAV b/webball/game_resources/._SOUND30.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND30.WAV differ diff --git a/webball/game_resources/._SOUND34.WAV b/webball/game_resources/._SOUND34.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND34.WAV differ diff --git a/webball/game_resources/._SOUND35.WAV b/webball/game_resources/._SOUND35.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND35.WAV differ diff --git a/webball/game_resources/._SOUND36.WAV b/webball/game_resources/._SOUND36.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND36.WAV differ diff --git a/webball/game_resources/._SOUND38.WAV b/webball/game_resources/._SOUND38.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND38.WAV differ diff --git a/webball/game_resources/._SOUND39.WAV b/webball/game_resources/._SOUND39.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND39.WAV differ diff --git a/webball/game_resources/._SOUND4.WAV b/webball/game_resources/._SOUND4.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND4.WAV differ diff --git a/webball/game_resources/._SOUND42.WAV b/webball/game_resources/._SOUND42.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND42.WAV differ diff --git a/webball/game_resources/._SOUND43.WAV b/webball/game_resources/._SOUND43.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND43.WAV differ diff --git a/webball/game_resources/._SOUND45.WAV b/webball/game_resources/._SOUND45.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND45.WAV differ diff --git a/webball/game_resources/._SOUND49.WAV b/webball/game_resources/._SOUND49.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND49.WAV differ diff --git a/webball/game_resources/._SOUND49D.WAV b/webball/game_resources/._SOUND49D.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND49D.WAV differ diff --git a/webball/game_resources/._SOUND5.WAV b/webball/game_resources/._SOUND5.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND5.WAV differ diff --git a/webball/game_resources/._SOUND50.WAV b/webball/game_resources/._SOUND50.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND50.WAV differ diff --git a/webball/game_resources/._SOUND528.WAV b/webball/game_resources/._SOUND528.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND528.WAV differ diff --git a/webball/game_resources/._SOUND53.WAV b/webball/game_resources/._SOUND53.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND53.WAV differ diff --git a/webball/game_resources/._SOUND54.WAV b/webball/game_resources/._SOUND54.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND54.WAV differ diff --git a/webball/game_resources/._SOUND55.WAV b/webball/game_resources/._SOUND55.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND55.WAV differ diff --git a/webball/game_resources/._SOUND560.WAV b/webball/game_resources/._SOUND560.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND560.WAV differ diff --git a/webball/game_resources/._SOUND563.WAV b/webball/game_resources/._SOUND563.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND563.WAV differ diff --git a/webball/game_resources/._SOUND57.WAV b/webball/game_resources/._SOUND57.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND57.WAV differ diff --git a/webball/game_resources/._SOUND58.WAV b/webball/game_resources/._SOUND58.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND58.WAV differ diff --git a/webball/game_resources/._SOUND6.WAV b/webball/game_resources/._SOUND6.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND6.WAV differ diff --git a/webball/game_resources/._SOUND65.WAV b/webball/game_resources/._SOUND65.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND65.WAV differ diff --git a/webball/game_resources/._SOUND68.WAV b/webball/game_resources/._SOUND68.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND68.WAV differ diff --git a/webball/game_resources/._SOUND7.WAV b/webball/game_resources/._SOUND7.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND7.WAV differ diff --git a/webball/game_resources/._SOUND713.WAV b/webball/game_resources/._SOUND713.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND713.WAV differ diff --git a/webball/game_resources/._SOUND735.WAV b/webball/game_resources/._SOUND735.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND735.WAV differ diff --git a/webball/game_resources/._SOUND8.WAV b/webball/game_resources/._SOUND8.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND8.WAV differ diff --git a/webball/game_resources/._SOUND827.WAV b/webball/game_resources/._SOUND827.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND827.WAV differ diff --git a/webball/game_resources/._SOUND9.WAV b/webball/game_resources/._SOUND9.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND9.WAV differ diff --git a/webball/game_resources/._SOUND999.WAV b/webball/game_resources/._SOUND999.WAV new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._SOUND999.WAV differ diff --git a/webball/game_resources/._table.bmp b/webball/game_resources/._table.bmp new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._table.bmp differ diff --git a/webball/game_resources/._wavemix.inf b/webball/game_resources/._wavemix.inf new file mode 100755 index 0000000..749f11f Binary files /dev/null and b/webball/game_resources/._wavemix.inf differ diff --git a/webball/game_resources/FONT.DAT b/webball/game_resources/FONT.DAT new file mode 100755 index 0000000..7a7f98c Binary files /dev/null and b/webball/game_resources/FONT.DAT differ diff --git a/webball/game_resources/PINBALL.DAT b/webball/game_resources/PINBALL.DAT new file mode 100755 index 0000000..e6049ac Binary files /dev/null and b/webball/game_resources/PINBALL.DAT differ diff --git a/webball/game_resources/PINBALL.MID b/webball/game_resources/PINBALL.MID new file mode 100755 index 0000000..f39e48d Binary files /dev/null and b/webball/game_resources/PINBALL.MID differ diff --git a/webball/game_resources/PINBALL2.MID b/webball/game_resources/PINBALL2.MID new file mode 100755 index 0000000..e66810e Binary files /dev/null and b/webball/game_resources/PINBALL2.MID differ diff --git a/webball/game_resources/README.txt b/webball/game_resources/README.txt new file mode 100755 index 0000000..9f92bc4 --- /dev/null +++ b/webball/game_resources/README.txt @@ -0,0 +1,3 @@ +This directory is used for emscripten builds. + +Place all game files, excluding the .exe in this directory. diff --git a/webball/game_resources/SOUND1.WAV b/webball/game_resources/SOUND1.WAV new file mode 100755 index 0000000..f02fe6b Binary files /dev/null and b/webball/game_resources/SOUND1.WAV differ diff --git a/webball/game_resources/SOUND104.WAV b/webball/game_resources/SOUND104.WAV new file mode 100755 index 0000000..2314aea Binary files /dev/null and b/webball/game_resources/SOUND104.WAV differ diff --git a/webball/game_resources/SOUND105.WAV b/webball/game_resources/SOUND105.WAV new file mode 100755 index 0000000..32f2d89 Binary files /dev/null and b/webball/game_resources/SOUND105.WAV differ diff --git a/webball/game_resources/SOUND108.WAV b/webball/game_resources/SOUND108.WAV new file mode 100755 index 0000000..4e899dd Binary files /dev/null and b/webball/game_resources/SOUND108.WAV differ diff --git a/webball/game_resources/SOUND111.WAV b/webball/game_resources/SOUND111.WAV new file mode 100755 index 0000000..f3ffd7e Binary files /dev/null and b/webball/game_resources/SOUND111.WAV differ diff --git a/webball/game_resources/SOUND112.WAV b/webball/game_resources/SOUND112.WAV new file mode 100755 index 0000000..a44627c Binary files /dev/null and b/webball/game_resources/SOUND112.WAV differ diff --git a/webball/game_resources/SOUND12.WAV b/webball/game_resources/SOUND12.WAV new file mode 100755 index 0000000..c5117f7 Binary files /dev/null and b/webball/game_resources/SOUND12.WAV differ diff --git a/webball/game_resources/SOUND13.WAV b/webball/game_resources/SOUND13.WAV new file mode 100755 index 0000000..ad66af1 Binary files /dev/null and b/webball/game_resources/SOUND13.WAV differ diff --git a/webball/game_resources/SOUND131.WAV b/webball/game_resources/SOUND131.WAV new file mode 100755 index 0000000..89f62e1 Binary files /dev/null and b/webball/game_resources/SOUND131.WAV differ diff --git a/webball/game_resources/SOUND136.WAV b/webball/game_resources/SOUND136.WAV new file mode 100755 index 0000000..fb562ed Binary files /dev/null and b/webball/game_resources/SOUND136.WAV differ diff --git a/webball/game_resources/SOUND14.WAV b/webball/game_resources/SOUND14.WAV new file mode 100755 index 0000000..bf1d5b0 Binary files /dev/null and b/webball/game_resources/SOUND14.WAV differ diff --git a/webball/game_resources/SOUND16.WAV b/webball/game_resources/SOUND16.WAV new file mode 100755 index 0000000..9c29c1b Binary files /dev/null and b/webball/game_resources/SOUND16.WAV differ diff --git a/webball/game_resources/SOUND17.WAV b/webball/game_resources/SOUND17.WAV new file mode 100755 index 0000000..0764909 Binary files /dev/null and b/webball/game_resources/SOUND17.WAV differ diff --git a/webball/game_resources/SOUND18.WAV b/webball/game_resources/SOUND18.WAV new file mode 100755 index 0000000..18cd05a Binary files /dev/null and b/webball/game_resources/SOUND18.WAV differ diff --git a/webball/game_resources/SOUND181.WAV b/webball/game_resources/SOUND181.WAV new file mode 100755 index 0000000..9a463e1 Binary files /dev/null and b/webball/game_resources/SOUND181.WAV differ diff --git a/webball/game_resources/SOUND19.WAV b/webball/game_resources/SOUND19.WAV new file mode 100755 index 0000000..02b86a8 Binary files /dev/null and b/webball/game_resources/SOUND19.WAV differ diff --git a/webball/game_resources/SOUND20.WAV b/webball/game_resources/SOUND20.WAV new file mode 100755 index 0000000..ac43bf7 Binary files /dev/null and b/webball/game_resources/SOUND20.WAV differ diff --git a/webball/game_resources/SOUND21.WAV b/webball/game_resources/SOUND21.WAV new file mode 100755 index 0000000..1ac0c31 Binary files /dev/null and b/webball/game_resources/SOUND21.WAV differ diff --git a/webball/game_resources/SOUND22.WAV b/webball/game_resources/SOUND22.WAV new file mode 100755 index 0000000..2eb83a3 Binary files /dev/null and b/webball/game_resources/SOUND22.WAV differ diff --git a/webball/game_resources/SOUND24.WAV b/webball/game_resources/SOUND24.WAV new file mode 100755 index 0000000..43937d6 Binary files /dev/null and b/webball/game_resources/SOUND24.WAV differ diff --git a/webball/game_resources/SOUND240.WAV b/webball/game_resources/SOUND240.WAV new file mode 100755 index 0000000..44c10d2 Binary files /dev/null and b/webball/game_resources/SOUND240.WAV differ diff --git a/webball/game_resources/SOUND243.WAV b/webball/game_resources/SOUND243.WAV new file mode 100755 index 0000000..e034454 Binary files /dev/null and b/webball/game_resources/SOUND243.WAV differ diff --git a/webball/game_resources/SOUND25.WAV b/webball/game_resources/SOUND25.WAV new file mode 100755 index 0000000..b1bf825 Binary files /dev/null and b/webball/game_resources/SOUND25.WAV differ diff --git a/webball/game_resources/SOUND26.WAV b/webball/game_resources/SOUND26.WAV new file mode 100755 index 0000000..c1b4399 Binary files /dev/null and b/webball/game_resources/SOUND26.WAV differ diff --git a/webball/game_resources/SOUND27.WAV b/webball/game_resources/SOUND27.WAV new file mode 100755 index 0000000..a1fc851 Binary files /dev/null and b/webball/game_resources/SOUND27.WAV differ diff --git a/webball/game_resources/SOUND28.WAV b/webball/game_resources/SOUND28.WAV new file mode 100755 index 0000000..54332df Binary files /dev/null and b/webball/game_resources/SOUND28.WAV differ diff --git a/webball/game_resources/SOUND29.WAV b/webball/game_resources/SOUND29.WAV new file mode 100755 index 0000000..7f126e9 Binary files /dev/null and b/webball/game_resources/SOUND29.WAV differ diff --git a/webball/game_resources/SOUND3.WAV b/webball/game_resources/SOUND3.WAV new file mode 100755 index 0000000..cf1a2d7 Binary files /dev/null and b/webball/game_resources/SOUND3.WAV differ diff --git a/webball/game_resources/SOUND30.WAV b/webball/game_resources/SOUND30.WAV new file mode 100755 index 0000000..d85e976 Binary files /dev/null and b/webball/game_resources/SOUND30.WAV differ diff --git a/webball/game_resources/SOUND34.WAV b/webball/game_resources/SOUND34.WAV new file mode 100755 index 0000000..769b760 Binary files /dev/null and b/webball/game_resources/SOUND34.WAV differ diff --git a/webball/game_resources/SOUND35.WAV b/webball/game_resources/SOUND35.WAV new file mode 100755 index 0000000..1defb48 Binary files /dev/null and b/webball/game_resources/SOUND35.WAV differ diff --git a/webball/game_resources/SOUND36.WAV b/webball/game_resources/SOUND36.WAV new file mode 100755 index 0000000..c08cf56 Binary files /dev/null and b/webball/game_resources/SOUND36.WAV differ diff --git a/webball/game_resources/SOUND38.WAV b/webball/game_resources/SOUND38.WAV new file mode 100755 index 0000000..906c6ba Binary files /dev/null and b/webball/game_resources/SOUND38.WAV differ diff --git a/webball/game_resources/SOUND39.WAV b/webball/game_resources/SOUND39.WAV new file mode 100755 index 0000000..c68a4c1 Binary files /dev/null and b/webball/game_resources/SOUND39.WAV differ diff --git a/webball/game_resources/SOUND4.WAV b/webball/game_resources/SOUND4.WAV new file mode 100755 index 0000000..210cd76 Binary files /dev/null and b/webball/game_resources/SOUND4.WAV differ diff --git a/webball/game_resources/SOUND42.WAV b/webball/game_resources/SOUND42.WAV new file mode 100755 index 0000000..b6c563e Binary files /dev/null and b/webball/game_resources/SOUND42.WAV differ diff --git a/webball/game_resources/SOUND43.WAV b/webball/game_resources/SOUND43.WAV new file mode 100755 index 0000000..7d4fea4 Binary files /dev/null and b/webball/game_resources/SOUND43.WAV differ diff --git a/webball/game_resources/SOUND45.WAV b/webball/game_resources/SOUND45.WAV new file mode 100755 index 0000000..ac00718 Binary files /dev/null and b/webball/game_resources/SOUND45.WAV differ diff --git a/webball/game_resources/SOUND49.WAV b/webball/game_resources/SOUND49.WAV new file mode 100755 index 0000000..80d25fc Binary files /dev/null and b/webball/game_resources/SOUND49.WAV differ diff --git a/webball/game_resources/SOUND49D.WAV b/webball/game_resources/SOUND49D.WAV new file mode 100755 index 0000000..e5db96a Binary files /dev/null and b/webball/game_resources/SOUND49D.WAV differ diff --git a/webball/game_resources/SOUND5.WAV b/webball/game_resources/SOUND5.WAV new file mode 100755 index 0000000..fdbe979 Binary files /dev/null and b/webball/game_resources/SOUND5.WAV differ diff --git a/webball/game_resources/SOUND50.WAV b/webball/game_resources/SOUND50.WAV new file mode 100755 index 0000000..de55503 Binary files /dev/null and b/webball/game_resources/SOUND50.WAV differ diff --git a/webball/game_resources/SOUND528.WAV b/webball/game_resources/SOUND528.WAV new file mode 100755 index 0000000..d2469e2 Binary files /dev/null and b/webball/game_resources/SOUND528.WAV differ diff --git a/webball/game_resources/SOUND53.WAV b/webball/game_resources/SOUND53.WAV new file mode 100755 index 0000000..6d32d86 Binary files /dev/null and b/webball/game_resources/SOUND53.WAV differ diff --git a/webball/game_resources/SOUND54.WAV b/webball/game_resources/SOUND54.WAV new file mode 100755 index 0000000..0340620 Binary files /dev/null and b/webball/game_resources/SOUND54.WAV differ diff --git a/webball/game_resources/SOUND55.WAV b/webball/game_resources/SOUND55.WAV new file mode 100755 index 0000000..b9ad920 Binary files /dev/null and b/webball/game_resources/SOUND55.WAV differ diff --git a/webball/game_resources/SOUND560.WAV b/webball/game_resources/SOUND560.WAV new file mode 100755 index 0000000..357c583 Binary files /dev/null and b/webball/game_resources/SOUND560.WAV differ diff --git a/webball/game_resources/SOUND563.WAV b/webball/game_resources/SOUND563.WAV new file mode 100755 index 0000000..4856d80 Binary files /dev/null and b/webball/game_resources/SOUND563.WAV differ diff --git a/webball/game_resources/SOUND57.WAV b/webball/game_resources/SOUND57.WAV new file mode 100755 index 0000000..7181923 Binary files /dev/null and b/webball/game_resources/SOUND57.WAV differ diff --git a/webball/game_resources/SOUND58.WAV b/webball/game_resources/SOUND58.WAV new file mode 100755 index 0000000..161ffaf Binary files /dev/null and b/webball/game_resources/SOUND58.WAV differ diff --git a/webball/game_resources/SOUND6.WAV b/webball/game_resources/SOUND6.WAV new file mode 100755 index 0000000..7cc419b Binary files /dev/null and b/webball/game_resources/SOUND6.WAV differ diff --git a/webball/game_resources/SOUND65.WAV b/webball/game_resources/SOUND65.WAV new file mode 100755 index 0000000..21ec9a9 Binary files /dev/null and b/webball/game_resources/SOUND65.WAV differ diff --git a/webball/game_resources/SOUND68.WAV b/webball/game_resources/SOUND68.WAV new file mode 100755 index 0000000..29e7dd6 Binary files /dev/null and b/webball/game_resources/SOUND68.WAV differ diff --git a/webball/game_resources/SOUND7.WAV b/webball/game_resources/SOUND7.WAV new file mode 100755 index 0000000..992d806 Binary files /dev/null and b/webball/game_resources/SOUND7.WAV differ diff --git a/webball/game_resources/SOUND713.WAV b/webball/game_resources/SOUND713.WAV new file mode 100755 index 0000000..a1347bd Binary files /dev/null and b/webball/game_resources/SOUND713.WAV differ diff --git a/webball/game_resources/SOUND735.WAV b/webball/game_resources/SOUND735.WAV new file mode 100755 index 0000000..d0237f0 Binary files /dev/null and b/webball/game_resources/SOUND735.WAV differ diff --git a/webball/game_resources/SOUND8.WAV b/webball/game_resources/SOUND8.WAV new file mode 100755 index 0000000..3adedee Binary files /dev/null and b/webball/game_resources/SOUND8.WAV differ diff --git a/webball/game_resources/SOUND827.WAV b/webball/game_resources/SOUND827.WAV new file mode 100755 index 0000000..46990e6 Binary files /dev/null and b/webball/game_resources/SOUND827.WAV differ diff --git a/webball/game_resources/SOUND9.WAV b/webball/game_resources/SOUND9.WAV new file mode 100755 index 0000000..5368c30 Binary files /dev/null and b/webball/game_resources/SOUND9.WAV differ diff --git a/webball/game_resources/SOUND999.WAV b/webball/game_resources/SOUND999.WAV new file mode 100755 index 0000000..e77a4fb Binary files /dev/null and b/webball/game_resources/SOUND999.WAV differ diff --git a/webball/game_resources/table.bmp b/webball/game_resources/table.bmp new file mode 100755 index 0000000..66776a7 Binary files /dev/null and b/webball/game_resources/table.bmp differ diff --git a/webball/game_resources/wavemix.inf b/webball/game_resources/wavemix.inf new file mode 100755 index 0000000..a0c3401 --- /dev/null +++ b/webball/game_resources/wavemix.inf @@ -0,0 +1,100 @@ +[general] +; if ShowDevices exists and is non-zero then will display wave out devices and other stuff +; +; ShowDevices=0 : default +; ShowDevices=1 : show output from waveOutGetDevCaps +ShowDevices=0 + +; if WaveOutDevice exists it should be between zero and one less num devices +; the default is WAVE_MAPPER +; +; WaveOutDevice=0 : use the first device (default) +; WaveOutDevice=1 : use the second device +; WaveOutDevice=-1: use WAVE_MAPPER (will use [Unknow Device] setttings) +; +; +WaveOutDevice=-1 + +; Wavemix will detect if it is running on a 286 and not use any 386 instructions +; you can force it to use the 286 only code on a 386 by setting cmixit=1 +; cmixit=0 (default) +; cmixit=1 uses only 286 code (even on a 386 or >) + +[WinNT:default] +; Remix=1 = ResetRemix() +; Remix=2 = NoResetRemix() +; default=1 +Remix=1 + +; GoodWavePos=0 = uses timeGetTime() (default) +; GoodWavePos=1 = uses waveOutGetPosition() +GoodWavePos=0 + +; WaveBlocks=# (2<=#<=6) the number of ping pong buffers to use +; default=3 +WaveBlocks=3 + +; WaveBlockLen=# min = 512 max = 4096 +; if a number is not specified Wavemix.dll will try to determine a size +; + +; SamplesPerSec=11 (11.025 Khz) (default) +; =22 (22.04 KHz) +; =44 (44.1 KHz) +SamplesPerSec=11 + +[WinNT:Windows Sound System Playback] +; Need to set do11khzmce=FALSE in system.ini->[sndsys.drv] if want to use Remix=1 and SamplesPerSec=11 +Remix=1 +GoodWavePos=1 +WaveBlocks=4 +SamplesPerSec=22 +;WaveBlockLen= + +[WinNT:MultiSound Wave Out] +Remix=2 +GoodWavePos=1 +WaveBlocks=3 +;WaveBlockLen= + +[WinNT:SB16 Wave Out] +Remix=1 +GoodWavePos=0 +WaveBlocks=5 +SamplesPerSec=22 +;WaveBlockLen= + +[WinNT:SBPro Wave Out] +Remix=1 +GoodWavePos=0 +WaveBlocks=5 +;WaveBlockLen= + +[WinNT:Media Vision Waveform Output] +Remix=1 +GoodWavePos=0 +WaveBlocks=4 +;WaveBlockLen= + +[WinNT:MVI Pro Audio/CDPC Wave Output] +Remix=1 +GoodWavePos=0 +WaveBlocks=4 +;WaveBlockLen= + +[WinNT:UltraSound Waveform Output] +Remix=2 +GoodWavePos=0 +WaveBlocks=3 +SamplesPerSec=11 + +[not compatible] +; sound drivers that are not compatible with wavemix can be added here +; (the =1 is necessary). One of the major conflicts occur with the PC Speaker +; drivers. The wavemix.dll will only work with devices that support asynchronous +; operation - most of the pc speaker drivers are synchronous. The name of the devices +; can be easily seen by setting ShowDevices=1 in the [general] section and then running +; a program which uses the wavemixer. One major problem with some of the pc speaker +; drivers is that they report that they are asynchronous when they are really not. + +Wave driver for PC Speaker=1 \ No newline at end of file diff --git a/webball/index.html b/webball/index.html new file mode 100755 index 0000000..ddaf98c --- /dev/null +++ b/webball/index.html @@ -0,0 +1 @@ +3D Pinball for Windows - Space Cadet
3D Pinball for Windows - Space Cadet
Downloading...

Probably the best showcase of web bloat. Thanks to alula on GitHub for the page.

\ No newline at end of file