chore: Update page
|
|
@ -35,7 +35,7 @@ copyright statement(s).
|
|||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part "../assets copy"or in whole -- any of the components of the
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ Modified Version, except to acknowledge the contribution(s) of the
|
|||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part "../assets copy"or in whole,
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
|
|
|
|||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -46,11 +46,17 @@
|
|||
|
||||
<h1 class="text-center">Favourite asked questions</h1>
|
||||
<p class="text-center">You can edit or translate this FAQ on <a href='https://hosted.weblate.org/projects/fluffychat/fluffychat-website'>Weblate</a>.</p>
|
||||
<p class="text-center"><input id="searchField" type="text" placeholder="Search 🔍" class="placeholder:text-slate-400 text-center text-slate-700 text-3xl bg-slate-100 border border-slate-200 rounded-full
|
||||
<p class="text-center"><input id="searchField" type="text" placeholder="Search" class="placeholder:text-slate-400 text-center text-slate-700 text-3xl bg-slate-100 border border-slate-200 rounded-full
|
||||
w-full px-8 py-4 my-8"/>
|
||||
</p>
|
||||
<span id="faqEntries">
|
||||
|
||||
<h2 id="how_can_i_support_fluffychat:question" class="question">
|
||||
<a name="how_can_i_support_fluffychat" href="#how_can_i_support_fluffychat">#</a>
|
||||
How can I support FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_support_fluffychat:answer"><p><strong>FluffyChat needs YOUR help!</strong></p><p>FluffyChat is developed by volunteers and will always be free for everyone. But hosting and development are not possible without financial support.</p><p>Right now I spend almost all of my free time developing FluffyChat, completely unpaid. However, this is not something I can do forever. The future of FluffyChat depends on people like you.</p><p>Most people will ignore this message. But if FluffyChat is useful to you, please consider making a small donation.</p><p>Support FluffyChat here:<br><a href="https://ko-fi.com/C1C86VN53">https://ko-fi.com/krille</a><br><a href="https://liberapay.com/KrilleChritzelius">https://liberapay.com/KrilleChritzelius</a></p><p>Thank you for helping keep FluffyChat alive and independent.</p></article>
|
||||
|
||||
<h2 id="what_is_fluffychat:question" class="question">
|
||||
<a name="what_is_fluffychat" href="#what_is_fluffychat">#</a>
|
||||
What is FluffyChat?
|
||||
|
|
@ -244,6 +250,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,12 @@
|
|||
</p>
|
||||
<span id="faqEntries">
|
||||
|
||||
<h2 id="how_can_i_support_fluffychat:question" class="question">
|
||||
<a name="how_can_i_support_fluffychat" href="#how_can_i_support_fluffychat">#</a>
|
||||
How can I support FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_support_fluffychat:answer"><p><strong>FluffyChat needs YOUR help!</strong></p><p>FluffyChat is developed by volunteers and will always be free for everyone. But hosting and development are not possible without financial support.</p><p>Right now I spend almost all of my free time developing FluffyChat, completely unpaid. However, this is not something I can do forever. The future of FluffyChat depends on people like you.</p><p>Most people will ignore this message. But if FluffyChat is useful to you, please consider making a small donation.</p><p>Support FluffyChat here:<br><a href="https://ko-fi.com/C1C86VN53">https://ko-fi.com/krille</a><br><a href="https://liberapay.com/KrilleChritzelius">https://liberapay.com/KrilleChritzelius</a></p><p>Thank you for helping keep FluffyChat alive and independent.</p></article>
|
||||
|
||||
<h2 id="what_is_fluffychat:question" class="question">
|
||||
<a name="what_is_fluffychat" href="#what_is_fluffychat">#</a>
|
||||
Was ist FluffyChat?
|
||||
|
|
@ -244,6 +250,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -46,11 +46,17 @@
|
|||
|
||||
<h1 class="text-center">Favourite asked questions</h1>
|
||||
<p class="text-center">You can edit or translate this FAQ on <a href='https://hosted.weblate.org/projects/fluffychat/fluffychat-website'>Weblate</a>.</p>
|
||||
<p class="text-center"><input id="searchField" type="text" placeholder="Search 🔍" class="placeholder:text-slate-400 text-center text-slate-700 text-3xl bg-slate-100 border border-slate-200 rounded-full
|
||||
<p class="text-center"><input id="searchField" type="text" placeholder="Search" class="placeholder:text-slate-400 text-center text-slate-700 text-3xl bg-slate-100 border border-slate-200 rounded-full
|
||||
w-full px-8 py-4 my-8"/>
|
||||
</p>
|
||||
<span id="faqEntries">
|
||||
|
||||
<h2 id="how_can_i_support_fluffychat:question" class="question">
|
||||
<a name="how_can_i_support_fluffychat" href="#how_can_i_support_fluffychat">#</a>
|
||||
How can I support FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_support_fluffychat:answer"><p><strong>FluffyChat needs YOUR help!</strong></p><p>FluffyChat is developed by volunteers and will always be free for everyone. But hosting and development are not possible without financial support.</p><p>Right now I spend almost all of my free time developing FluffyChat, completely unpaid. However, this is not something I can do forever. The future of FluffyChat depends on people like you.</p><p>Most people will ignore this message. But if FluffyChat is useful to you, please consider making a small donation.</p><p>Support FluffyChat here:<br><a href="https://ko-fi.com/C1C86VN53">https://ko-fi.com/krille</a><br><a href="https://liberapay.com/KrilleChritzelius">https://liberapay.com/KrilleChritzelius</a></p><p>Thank you for helping keep FluffyChat alive and independent.</p></article>
|
||||
|
||||
<h2 id="what_is_fluffychat:question" class="question">
|
||||
<a name="what_is_fluffychat" href="#what_is_fluffychat">#</a>
|
||||
What is FluffyChat?
|
||||
|
|
@ -244,6 +250,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
Andmekaitsepõhimõtted</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/et/tos">
|
||||
Terms of service</a>
|
||||
Kasutustingimused</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,12 @@
|
|||
</p>
|
||||
<span id="faqEntries">
|
||||
|
||||
<h2 id="how_can_i_support_fluffychat:question" class="question">
|
||||
<a name="how_can_i_support_fluffychat" href="#how_can_i_support_fluffychat">#</a>
|
||||
How can I support FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_support_fluffychat:answer"><p><strong>FluffyChat needs YOUR help!</strong></p><p>FluffyChat is developed by volunteers and will always be free for everyone. But hosting and development are not possible without financial support.</p><p>Right now I spend almost all of my free time developing FluffyChat, completely unpaid. However, this is not something I can do forever. The future of FluffyChat depends on people like you.</p><p>Most people will ignore this message. But if FluffyChat is useful to you, please consider making a small donation.</p><p>Support FluffyChat here:<br><a href="https://ko-fi.com/C1C86VN53">https://ko-fi.com/krille</a><br><a href="https://liberapay.com/KrilleChritzelius">https://liberapay.com/KrilleChritzelius</a></p><p>Thank you for helping keep FluffyChat alive and independent.</p></article>
|
||||
|
||||
<h2 id="what_is_fluffychat:question" class="question">
|
||||
<a name="what_is_fluffychat" href="#what_is_fluffychat">#</a>
|
||||
Mis on FluffyChat?
|
||||
|
|
@ -133,25 +139,25 @@
|
|||
<a name="push_without_google_services" href="#push_without_google_services">#</a>
|
||||
Kuidas saan kasutada tõuketeenuseid ilma Google'i teenusteta?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="push_without_google_services:answer"><p>Push notifications are a great way to make sure you don't miss important messages in FluffyChat. For users who do not use Google Services (for example Huawei Phones, Amazon Fire tablets or custom roms), setting up push notifications is slightly different.</p> <p>FluffyChat attempts to set up push notifications automatically every time you launch the app. However, if you do not have Google Services on your device, you may receive an error message. In this case, it is necessary to use the an <a href="https://unifiedpush.org/#quick-start">UnifiedPush app</a> such as Ntfy, UP-FCM Distributor (Google) or Conversations.</p> <!-- editorconfig-checker-disable --> <!-- prettier-ignore-start --> <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <p><strong>Table of Contents</strong></p> <ul> <li><a href="#using-ntfy">Using Ntfy</a><ul> <li><a href="#-step-1-installing-and-setting-up-ntfy">🏪 Step 1: Installing and Setting Up ntfy</a></li> <li><a href="#-step-2-deactivate-battery-optimization-for-ntfy">🔋 Step 2: Deactivate Battery Optimization for ntfy</a></li> <li><a href="#-step-3-checking-push-configuration-in-fluffychat">✅ Step 3: Checking Push Configuration in FluffyChat</a></li> <li><a href="#%F0%9F%A5%B3-step-4-receiving-push-notifications">🥳 Step 4: Receiving Push Notifications</a></li> </ul> </li> <li><a href="#using-conversations">Using Conversations</a></li> </ul> <!-- END doctoc generated TOC please keep comment here to allow auto update --> <!-- prettier-ignore-end --> <!-- editorconfig-checker-enable --> <h3 id="using-ntfy">Using Ntfy</h3> <p>In this article, we'll show you how to configure push notifications on your Android device using the <strong>ntfy</strong> app.</p> <h3 id="-step-1-installing-and-setting-up-ntfy">🏪 Step 1: Installing and Setting Up ntfy</h3> <ol> <li><p>If you already have FluffyChat installed but are not receiving push notifications, close the app completely (by swiping it away in the overview) and open the <strong>PlayStore</strong> (or F-Droid) on your Android device.</p> </li> <li><p>Search for the app <a href="https://play.google.com/store/apps/details?id=io.heckel.ntfy">ntfy</a> and install it.</p> </li> <li><p>After installing ntfy, open the app at least once.</p> </li> <li><p>Now, return to FluffyChat and open the app.</p> </li> </ol> <h3 id="-step-2-deactivate-battery-optimization-for-ntfy">🔋 Step 2: Deactivate Battery Optimization for ntfy</h3> <p>To ensure that FluffyChat can reliably send push notifications, it's important to deactivate battery optimization for the "ntfy" app.</p> <ol> <li><p>Go to the [Android settings] on your device.</p> </li> <li><p>Look for "Apps" or "Applications" and select "ntfy" from the list of installed apps.</p> </li> <li><p>Tap on "Battery" and select "Battery optimization."</p> </li> <li><p>In the list of apps exempted from battery optimization, make sure "ntfy" is selected.</p> </li> </ol> <h3 id="-step-3-checking-push-configuration-in-fluffychat">✅ Step 3: Checking Push Configuration in FluffyChat</h3> <ol> <li><p>Open FluffyChat and navigate to the [Settings].</p> </li> <li><p>Choose "Notifications" from the menu.</p> </li> <li><p>In the notification settings, you'll see a list of "Pushers." The "Pusher" for "ntfy" should be at the bottom of the list.</p> </li> </ol> <h3 id="-step-4-receiving-push-notifications">🥳 Step 4: Receiving Push Notifications</h3> <p>To ensure that everything is set up correctly, ask a friend to send you a message in FluffyChat and check if you receive a push notification.</p> <h3 id="using-conversations">Using Conversations</h3> <p>If you are using XMPP in addition to Matrix and already have Conversations configured, you can follow these steps to get FluffyChat push notifications through it:</p> <ol> <li>Open <em>Conversations</em>.</li> <li>Touch the three dots on top right.</li> <li>Select <em>Settings</em> and scroll down to <em>UnifiedPush Distributor</em>.</li> <li>Touch <em>XMPP account</em> and select the XMPP account you wish to receive notifications through.</li> <li>Open FluffyChat. If it doesn't offer to receive notifications through <em>Conversations</em>, check the notification settings (see step 3 for Ntfy above).</li> </ol> <hr> <p>Following these steps should successfully set up push notifications in FluffyChat for users without Google Services. If you are interested in hosting your own push service, you can take a look at <a href="https://unifiedpush.org">unifiedpush.org</a>.</p></article>
|
||||
<article class="mb-12 pl-5" id="push_without_google_services:answer"><p>Tõuketeavitused on suurepärane viis tagada, et sa ei jääks FluffyChatis olulistest sõnumitest ilma. Kui sa ei kasuta Google'i teenuseid (näiteks Huawei telefonides, Amazon Fire'i tahvelarvutites või Androidi sõltumatutes variantides), siis on tõuketeavituste seadistamine veidi teistsugune.</p> <p>FluffyChat üritab tõuketeavitused automaatselt seadistada iga kord, kui rakenduse käivitad. Kui sinu seadmes aga Google'i teenuseid pole (või nad on lülitatud välja), võid näha veateadet. Sel juhul pead kasutama <a href="https://unifiedpush.org/#quick-start">UnifiedPushi rakendust</a>, näiteks Ntfy, UP-FCM Distributorit (Google) või Conversationsit.</p> <!-- editorconfig-checker-disable --> <!-- prettier-ignore-start --> <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <p><strong>Sisukord</strong></p> <ul> <li><a href="#using-ntfy">Kasuta Ntfy’d</a> <ul> <li><a href="#-step-1-installing-and-setting-up-ntfy">🏪 Samm 1: paigalda ja seadista ntfy</a></li> <li><a href="#-step-2-deactivate-battery-optimization-for-ntfy">🔋 Samm 2: keela ntfy aku optimeerimine</a></li> <li><a href="#-step-3-checking-push-configuration-in-fluffychat">✅ Samm 3: kontrolli FluffyChati tõuketeavituste seadistust</a></li> <li><a href="#%F0%9F%A5%B3-step-4-receiving-push-notifications">🥳 Samm 4: saadki võtta vastu tõuketeavitusi</a></li> </ul> </li> <li><a href="#using-conversations">Kasuta Conversationsit</a></li> </ul> <!-- END doctoc generated TOC please keep comment here to allow auto update --> <!-- prettier-ignore-end --> <!-- editorconfig-checker-enable --> <h3 id="using-ntfy">Kasuta Ntfy’d</h3> <p>Selles juhendis näitame sulle, kuidas seadistada oma Android-seadmes tõuketeavitused, kasutades rakendust <strong>ntfy</strong>.</p> <h3 id="-step-1-installing-and-setting-up-ntfy">🏪 Samm 1: paigalda ja seadista ntfy</h3> <ol> <li> <p>Kui FluffyChat on sul juba paigaldatud, kuid sa ei saa tõuketeavitusi, sulge rakendus täielikult (libista see rakenduste ülevaates ära) ja ava oma Android-seadmes <strong>Play Store</strong> (või F-Droid).</p> </li> <li> <p>Otsi rakendust <a href="https://play.google.com/store/apps/details?id=io.heckel.ntfy">ntfy</a> ja paigalda see.</p> </li> <li> <p>Pärast paigaldamist ava ntfy rakendus vähemalt üks kord.</p> </li> <li> <p>Mine nüüd tagasi FluffyChati ja ava rakendus.</p> </li> </ol> <h3 id="-step-2-deactivate-battery-optimization-for-ntfy">🔋 Samm 2: keela ntfy akukasutuse optimeerimine</h3> <p>Selleks et FluffyChat saaks tõuketeavitusi usaldusväärselt saata, pead keelama rakenduse „ntfy“ aku optimeerimise.</p> <ol> <li> <p>Ava oma Android-seadmes <strong>seadistused</strong>.</p> </li> <li> <p>Otsi alajaotust „Rakendused“ ning vali paigaldatud rakenduste loendist „ntfy“.</p> </li> <li> <p>Puuduta „Aku“ ja vali „Aku optimeerimine“.</p> </li> <li> <p>Veendu, et „ntfy“ on aku optimeerimisest välistatud.</p> </li> </ol> <h3 id="-step-3-checking-push-configuration-in-fluffychat">✅ Samm 3: kontrolli FluffyChati tõuketeavituste seadistust</h3> <ol> <li> <p>Ava FluffyChat ja mine <strong>seadistustesse</strong>.</p> </li> <li> <p>Vali „Teavitused“.</p> </li> <li> <p>Teavituste seadistustes näed nimekirja tõuketeenustest. „ntfy“ oma peaks olema nimekirja lõpus.</p> </li> </ol> <h3 id="-step-4-receiving-push-notifications">🥳 Samm 4: võta tõuketeavitusi vastu</h3> <p>Et veenduda, et kõik töötab, palu sõbral saata sulle FluffyChatis sõnum ja kontrolli, kas saad tõuketeavituse.</p> <h3 id="using-conversations">Kasuta Conversationsit</h3> <p>Kui kasutad Matrixi kõrval ka XMPP-d ja sul on Conversations juba kasutusel, järgi neid samme, et saada FluffyChati tõuketeavitusi selle kaudu:</p> <ol> <li>Ava <em>Conversations</em>.</li> <li>Puuduta paremas ülanurgas kolme punkti.</li> <li>Vali <em>Seadistused</em> ja keri alajaotuseni <em>UnifiedPushi levitaja</em>.</li> <li>Puuduta valikut <em>XMPP-konto</em> ja vali konto, mille kaudu soovid teavitusi saada.</li> <li>Ava FluffyChat. Kui see ei paku teavituste vastuvõtmist <em>Conversationsi</em> kaudu, kontrolli teavituste seadistusi (vt ülal Ntfy samm 3).</li> </ol> <hr> <p>Kui järgid neid samme, peaksid FluffyChati tõuketeavitused ka Google’i teenusteta seadmetes edukalt tööle hakkama. Kui soovid omaenda tõuketeenust majutada, vaata lisaks <a href="https://unifiedpush.org">unifiedpush.org</a>.</p></article>
|
||||
|
||||
<h2 id="how_can_i_extend_this_faq:question" class="question">
|
||||
<a name="how_can_i_extend_this_faq" href="#how_can_i_extend_this_faq">#</a>
|
||||
Kas selle KKK täiendamine on võimalik?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_extend_this_faq:answer">On <a href='https://hosted.weblate.org/projects/fluffychat/fluffychat-website'>Weblate</a> you can edit all entries of the FAQ and provide translations for your language. To edit a source entry of the faq, you need to edit the <b>english</b> version. As an admin you can also write new entries to it by going to <b>English</b> and tap on <b>Add new translation</b>. There you then need to define a <b>key</b> for the FAQ entry.<br/><br/>The key always starts with <code>faq_questions.</code> or <code>faq_answers.</code>, then consists of the questions in lower case snake case. For example, the key of this entry is <code>faq_answer.how_can_i_extend_this_faq</code>.<br/><br/>Please note that you must provide a question <b>and</b> an answer, so you have to define two new translations.<br/><br/>If you are not an admin you can edit <a href='https://github.com/krille-chan/fluffychat-website/blob/main/src/_data/i18n/en.json'>this json file in GitHub</a>.</article>
|
||||
<article class="mb-12 pl-5" id="how_can_i_extend_this_faq:answer"><a href='https://hosted.weblate.org/projects/fluffychat/fluffychat-website'>Weblate'i tõlketeenuses</a> saad muuta kõiki KKK kirjeid ja pakkuda tõlkeid oma keelde. KKK lähtekirje muutmiseks pead kohendama <b>ingliskeelset</b> versiooni. Peakasutajana saad sinna ka uusi kirjeid lisada, minnes alajaotusse <b>English</b> ja vajutades <b>Lisa uus tõlge (Add new translation)</b>. Seal pead seejärel määratlema KKK kirje jaoks <b>võtme</b>.<br/><br/>Võti algab alati kas <code>faq_questions.</code> või <code>faq_answers.</code>, seejärel koosneb küsimusest, mis on kirjutatud väiketähtedega „snake_case“ vormingus. Näiteks selle kirje võti on <code>faq_answer.how_can_i_extend_this_faq</code>.<br/><br/>Pane tähele, et pead esitama nii küsimuse <b>kui ka</b> vastuse, seega pead lisama kaks uut tõlget.<br/><br/>Kui sa ei ole peakasutaja õigustes, siis saad muuta <a href='https://github.com/krille-chan/fluffychat-website/blob/main/src/_data/i18n/en.json'>seda JSON-faili GitHubis</a>.</article>
|
||||
|
||||
<h2 id="how_to_use_end_to_end_encryption:question" class="question">
|
||||
<a name="how_to_use_end_to_end_encryption" href="#how_to_use_end_to_end_encryption">#</a>
|
||||
Kuidas ma kasutan läbivat krüptimist?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_to_use_end_to_end_encryption:answer"><p>FluffyChat supports end to end encryption. You can enable it per chat. Once enabled it cannot be disabled anymore for security reasons. You can not enable encryption for public rooms as this makes no sense when anyone can join and leave the room anyway. Once you have enabled encryption, the server is no longer able to read the content of your messages. It will encrypt all text messages and files.</p> <p>To be safe from man-in-the-middle attacks, you should take a look at the device list. You can do this in the encryption settings of a chat. Is there a suspicious device which you or your chat partner don't know? Then you can block it by moving the toggle to the left.</p> <p>The color of the toggle shows you the security state. Orange means, that this device is not verified. Grey means that it is blocked and won't receive the encryption keys. This means that this device won't be able to read your messages anymore! Green means that this device is verified.</p> <p>To verify the devices of another user, start the verification in a direct chat. For this you have a "Start verification" button in the encryption settings of a direct chat. Be sure that you are standing next to this person or you are connected via phone or any other secure channel. When you have started the verification, you will both see a set of emojis on your device. Compare them and tap on "They match". Wait a little bit and then you should see that all devices become green.</p></article>
|
||||
<article class="mb-12 pl-5" id="how_to_use_end_to_end_encryption:answer"><p>FluffyChat toetab läbivat krüptimist. Saad selle iga vestluse jaoks eraldi sisse lülitada. Kui krüptimine on lubatud, ei saa seda turvakaalutlustel enam välja lülitada. Avalikes jututubades pole mõtet krüptimist lubada, kuna see ei ole mõistlik olukorras, kus igaüks saab jututuppa siseneda ja sealt lahkuda. Kui oled krüptimise sisse lülitanud, ei saa server enam sinu sõnumite sisu lugeda. Kõik tekstisõnumid ja failid krüptitakse.</p><p>Et olla kaitstud vahendusrünnete (man-in-the-middle) eest, peaksid üle vaatama seadmete loendi. Seda saad teha vestluse krüptimisseadistustes. Kas seal on mõni kahtlane seade, mida ei tunne ei sina ega sinu vestluspartner? Sellisel juhul saad selle blokeerida, liigutades liugurlüliti vasakule.</p><p>Lüliti värv näitab turvalisuse olekut. Oranž tähendab, et seade ei ole kinnitatud. Hall tähendab, et see on blokeeritud ega saa krüptimisvõtmeid. See tähendab, et see seade ei saa enam sinu sõnumeid lugeda! Roheline tähendab, et seade on kinnitatud.</p><p>Teise kasutaja seadmete kinnitamiseks alusta kinnitamist otsevestluses. Selleks on otsevestluse krüptimisseadistustes nupp „Alusta verifitseermist“. Veendu, et seisad selle inimesega kõrvuti või oled temaga ühenduses telefoni või mõne muu turvalise kanali kaudu. Kui oled kinnitamist alustanud, näete mõlemad oma seadmetes emojide komplekti. Võrdle neid ja vajuta „Nad klapivad“. Oota veidi ning seejärel peaksid nägema, et kõik seadmed muutuvad roheliseks.</p></article>
|
||||
|
||||
<h2 id="how_to_fork:question" class="question">
|
||||
<a name="how_to_fork" href="#how_to_fork">#</a>
|
||||
Kuidas ma saan FluffyChati koodist oma versiooni teha?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_to_fork:answer"><p><strong>Table of Contents</strong></p> <ul> <li><a href="#1-license">1. License</a></li> <li><a href="#2-disable-end-to-end-encryption">2. Disable end-to-end encryption!</a></li> <li><a href="#3-stay-up-to-date">3. Stay up to date!</a></li> <li><a href="#4-official-support">4. Official Support</a></li> </ul> <h3 id="1-license">1. License</h3> <p>FluffyChat is licensed under AGPL. Read the license (<a href="https://github.com/krille-chan/fluffychat/blob/main/LICENSE">https://github.com/krille-chan/fluffychat/blob/main/LICENSE</a>) and make sure that your fork is open source under the same license and that you fulfill all requirements. Maybe you should consider contacting a lawyer <strong>before</strong> you publish your fork.</p> <h3 id="2-disable-end-to-end-encryption-">2. Disable end-to-end encryption!</h3> <p>Due to US export regulations you are not allowed to publish your app in a store or anywhere on a US server before you have removed everything regarding the encryption or fulfill the regulations.</p> <p>Learn more: <a href="https://www.bis.doc.gov/index.php/policy-guidance/encryption">https://www.bis.doc.gov/index.php/policy-guidance/encryption</a></p> <p>If you need help from us with using E2EE in your fork read more below under the topic "<strong>Official Support</strong>".</p> <h3 id="3-stay-up-to-date-">3. Stay up to date!</h3> <p>FluffyChat contains security related stuff. If we find a security bug, we will try to fix it as soon as possible and ship it with a new version. But this means that your fork is out of date and a security risk. You can't be awake 24 hours a day so you must decide how you protect your users by chosing one of the following methods:</p> <ol> <li>Make your fork as minimal as possible and enable repository mirroring. Set up a CI which publishes new versions automatically if FluffyChat publishes a bug fix.</li> <li>Never sleep and pay a big team where one guy at least is never sleeping.</li> <li>Contact <a href="https://famedly.com">famedly.com</a> to buy official support.</li> </ol> <h3 id="4-official-support">4. Official Support</h3> <p>FluffyChat is free as in free speech and not free beer! Please contact my company <a href="https://famedly.com">famedly.com</a> for offers and official support and take in mind that it costs a lot of work and time to maintain FluffyChat or the Famedly Matrix SDK. So we can't give you support for free. So please expect around 1$ per month per user of your fork.</p></article>
|
||||
<article class="mb-12 pl-5" id="how_to_fork:answer"><p><strong>Sisukord</strong></p> <ul> <li><a href="#1-license">1. Litsents</a></li> <li><a href="#2-disable-end-to-end-encryption">2. Keela läbiv krüptimine!</a></li> <li><a href="#3-stay-up-to-date">3. Hoia lähtekood ajakohasena!</a></li> <li><a href="#4-official-support">4. Ametlik tugi</a></li> </ul> <h3 id="1-license">1. Litsents</h3> <p>FluffyChat on litsentsitud AGPL-i alusel. Loe litsentsi (<a href="https://github.com/krille-chan/fluffychat/blob/main/LICENSE">https://github.com/krille-chan/fluffychat/blob/main/LICENSE</a>) ning veendu, et sinu versioon (fork) on avatud lähtekoodiga sama litsentsi all ja et täidad kõiki nõudeid. Võib-olla tasuks <strong>enne</strong> oma versiooni avaldamist kaaluda juristiga konsulteerimist.</p> <h3 id="2-disable-end-to-end-encryption-">2. Keela läbiv krüptimine!</h3> <p>USA ekspordiregulatsioonide tõttu ei ole sul lubatud oma rakendust rakendustepoes ega ühelski USA serveris avaldada enne, kui oled eemaldanud kõik krüptimisega seonduva või täidad vastavaid regulatsioone.</p> <p>Uuri lähemalt: <a href="https://www.bis.doc.gov/index.php/policy-guidance/encryption">https://www.bis.doc.gov/index.php/policy-guidance/encryption</a></p> <p>Kui vajad meilt abi läbiva krüptimise (E2EE) kasutamisel oma versioonis, loe allpool lõiku „<strong>Ametlik tugi</strong>“.</p> <h3 id="3-stay-up-to-date-">3. Hoia lähtekood ajakohasena!</h3> <p>FluffyChat sisaldab turvakriitilisi komponente. Kui leiame turvavea, püüame selle võimalikult kiiresti parandada ja avaldada uue versiooni. See tähendab aga, et sinu oma muutub vahepeal aegunuks ja kujutab endast turvariski. Sa ei saa olla ööpäevaringselt valvel, seega pead otsustama, kuidas oma kasutajaid kaitsed, valides ühe järgmistest lahendustest:</p> <ol> <li>Tee oma koodiharu võimalikult minimaalsena ja kasuta lähtekoodihoidla peegeldamist. Seadista CI nii, et uued versioonid avaldatakse automaatselt, kui FluffyChatis ilmub veaparandus.</li> <li>Ära maga kunagi ja palka suur meeskond, kus vähemalt üks inimene on alati ärkvel ja tegeleb asjaga.</li> <li>Võta ühendust <a href="https://famedly.com">famedly.com</a>-iga ja osta ametlik tugi.</li> </ol> <h3 id="4-official-support">4. Ametlik tugi</h3> <p>FluffyChat on tasuta nagu sõnavabadus, mitte nagu tasuta õlu! Pakkumiste ja ametliku toe saamiseks võta palun ühendust minu ettevõttega <a href="https://famedly.com">famedly.com</a>. Arvesta, et FluffyChati või Famedly Matrix SDK hooldamine nõuab palju tööd ja aega, seega ei saa me tuge tasuta pakkuda. Palun arvesta ligikaudu 1 USA dollari suuruse kuutasuga iga sinu versiooni kasutaja kohta.</p></article>
|
||||
|
||||
<h2 id="how_do_i_find_other_users:question" class="question">
|
||||
<a name="how_do_i_find_other_users" href="#how_do_i_find_other_users">#</a>
|
||||
|
|
@ -161,9 +167,9 @@
|
|||
|
||||
<h2 id="how_do_i_get_stickers:question" class="question">
|
||||
<a name="how_do_i_get_stickers" href="#how_do_i_get_stickers">#</a>
|
||||
How do I get stickers?
|
||||
Kust kohast ma saan kleepse?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_do_i_get_stickers:answer"><p>You can add a sticker pack from the internet. For example this volpeon.ink does an incredible job:</p> <p><a href="https://volpeon.ink/emojis/">https://volpeon.ink/emojis/</a></p> <p>Just follow these steps:</p> <ol> <li><p>Download one of the packs as a zip file</p> </li> <li><p>Open FluffyChat</p> </li> <li><p>Go to "Settings" > "Chat" > "Custom emotes and stickers"</p> </li> <li><p>Tap on the three dot menu top right and tap on "Import from zip file"</p> </li> <li><p>Select the zip file and if you like edit the sticker names</p> </li> </ol> <p>You can also find preconfigured sticker packs in Matrix. I recommend Nico's Sticker Collection:</p> <p><a href="https://matrix.to/#/#nico's-stickers:neko.dev">https://matrix.to/#/#nico's-stickers:neko.dev</a></p> <p>The sticker collection for FluffyChat unfortunately does not have yet a large selection:</p> <p><a href="https://matrix.to/#/#fluffychat-stickers:janian.de">https://matrix.to/#/#fluffychat-stickers:janian.de</a></p> <ol> <li><p>Join the public room</p> </li> <li><p>Open the three dot menu top right and tap on "Emote Settings"</p> </li> <li><p>Select the sticker pack in the room you like</p> </li> <li><p>Toggle "Enable emote pack globally"</p> </li> </ol> <p>Have fun with your stickers! :-)</p></article>
|
||||
<article class="mb-12 pl-5" id="how_do_i_get_stickers:answer"><p>Saad lisada kleepsupaki internetist. Näiteks volpeon.ink teeb selles osas suurepärast tööd:</p><p><a href="https://volpeon.ink/emojis/">https://volpeon.ink/emojis/</a></p><p>Lihtsalt järgi neid samme:</p><ol> <li><p>Laadi üks kleepsupakk alla ZIP-failina</p></li><li><p>Ava FluffyChat</p></li> <li><p>Mine „Seadistused“ > „Vestlus“ > „Kohandatud emotikonid ja kleepsud“</p></li> <li><p>Puuduta paremas ülanurgas kolme punktiga menüüd ja vali „Impordi ZIP-failist“</p></li> <li><p>Vali ZIP-fail ja soovi korral muuda kleepsude nimesid</p></li></ol><p>Matrixis leidub ka eelnevalt seadistatud kleepsupakke. Soovitan Nico kleepsukogu:</p><p><a href="https://matrix.to/#/#nico's-stickers:neko.dev">https://matrix.to/#/#nico's-stickers:neko.dev</a></p><p>FluffyChati enda kleepsukogus ei ole kahjuks veel väga suurt valikut:</p><p><a href="https://matrix.to/#/#fluffychat-stickers:janian.de">https://matrix.to/#/#fluffychat-stickers:janian.de</a></p><ol> <li><p>Liitu avaliku jututoaga</p></li> <li><p>Ava paremas ülanurgas kolme punktiga menüü ja vali „Emotikonide seadistused“</p></li> <li><p>Vali jututoast kleepsupakk, mis sulle meeldib</p></li> <li><p>Lülita sisse „Luba emotikonipakk globaalselt“</p></li> </ol><p>Head kleepsutamist! 🙂</p></article>
|
||||
|
||||
</span>
|
||||
<script>
|
||||
|
|
@ -199,7 +205,7 @@
|
|||
Andmekaitsepõhimõtted</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/et/tos">
|
||||
Terms of service</a>
|
||||
Kasutustingimused</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -244,6 +250,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
Andmekaitsepõhimõtted</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/et/tos">
|
||||
Terms of service</a>
|
||||
Kasutustingimused</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@
|
|||
Andmekaitsepõhimõtted</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/et/tos">
|
||||
Terms of service</a>
|
||||
Kasutustingimused</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
Andmekaitsepõhimõtted</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/et/tos">
|
||||
Terms of service</a>
|
||||
Kasutustingimused</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
Andmekaitsepõhimõtted</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/et/tos">
|
||||
Terms of service</a>
|
||||
Kasutustingimused</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<meta http-equiv="refresh" content="0; url=/en/">
|
||||
<script>
|
||||
const userLang = navigator.language ?. substring(0, 2) || "en";
|
||||
const supported = ["be","de","en","et","fi","fy","gl","lv","nb_NO","nl","uz"]; // z. B. ["en","de"] Fallback auf Englisch, falls Sprache nicht unterstützt
|
||||
const supported = ["be","de","en","et","fi","fy","gl","lv","nb_NO","nl","ta","uz"]; // z. B. ["en","de"] Fallback auf Englisch, falls Sprache nicht unterstützt
|
||||
const targetLang = supported.includes(userLang)
|
||||
? userLang
|
||||
: "en";
|
||||
|
|
|
|||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -130,6 +130,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,12 @@
|
|||
</p>
|
||||
<span id="faqEntries">
|
||||
|
||||
<h2 id="how_can_i_support_fluffychat:question" class="question">
|
||||
<a name="how_can_i_support_fluffychat" href="#how_can_i_support_fluffychat">#</a>
|
||||
How can I support FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_support_fluffychat:answer"><p><strong>FluffyChat needs YOUR help!</strong></p><p>FluffyChat is developed by volunteers and will always be free for everyone. But hosting and development are not possible without financial support.</p><p>Right now I spend almost all of my free time developing FluffyChat, completely unpaid. However, this is not something I can do forever. The future of FluffyChat depends on people like you.</p><p>Most people will ignore this message. But if FluffyChat is useful to you, please consider making a small donation.</p><p>Support FluffyChat here:<br><a href="https://ko-fi.com/C1C86VN53">https://ko-fi.com/krille</a><br><a href="https://liberapay.com/KrilleChritzelius">https://liberapay.com/KrilleChritzelius</a></p><p>Thank you for helping keep FluffyChat alive and independent.</p></article>
|
||||
|
||||
<h2 id="what_is_fluffychat:question" class="question">
|
||||
<a name="what_is_fluffychat" href="#what_is_fluffychat">#</a>
|
||||
Wat is FluffyChat?
|
||||
|
|
@ -244,6 +250,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
Directiva de privacidade</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/gl/tos">
|
||||
Terms of service</a>
|
||||
Termos do servizo</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,12 @@
|
|||
</p>
|
||||
<span id="faqEntries">
|
||||
|
||||
<h2 id="how_can_i_support_fluffychat:question" class="question">
|
||||
<a name="how_can_i_support_fluffychat" href="#how_can_i_support_fluffychat">#</a>
|
||||
How can I support FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_support_fluffychat:answer"><p><strong>FluffyChat needs YOUR help!</strong></p><p>FluffyChat is developed by volunteers and will always be free for everyone. But hosting and development are not possible without financial support.</p><p>Right now I spend almost all of my free time developing FluffyChat, completely unpaid. However, this is not something I can do forever. The future of FluffyChat depends on people like you.</p><p>Most people will ignore this message. But if FluffyChat is useful to you, please consider making a small donation.</p><p>Support FluffyChat here:<br><a href="https://ko-fi.com/C1C86VN53">https://ko-fi.com/krille</a><br><a href="https://liberapay.com/KrilleChritzelius">https://liberapay.com/KrilleChritzelius</a></p><p>Thank you for helping keep FluffyChat alive and independent.</p></article>
|
||||
|
||||
<h2 id="what_is_fluffychat:question" class="question">
|
||||
<a name="what_is_fluffychat" href="#what_is_fluffychat">#</a>
|
||||
Que é FluffyChat?
|
||||
|
|
@ -161,9 +167,9 @@
|
|||
|
||||
<h2 id="how_do_i_get_stickers:question" class="question">
|
||||
<a name="how_do_i_get_stickers" href="#how_do_i_get_stickers">#</a>
|
||||
How do I get stickers?
|
||||
Como obter adhesivos?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_do_i_get_stickers:answer"><p>You can add a sticker pack from the internet. For example this volpeon.ink does an incredible job:</p> <p><a href="https://volpeon.ink/emojis/">https://volpeon.ink/emojis/</a></p> <p>Just follow these steps:</p> <ol> <li><p>Download one of the packs as a zip file</p> </li> <li><p>Open FluffyChat</p> </li> <li><p>Go to "Settings" > "Chat" > "Custom emotes and stickers"</p> </li> <li><p>Tap on the three dot menu top right and tap on "Import from zip file"</p> </li> <li><p>Select the zip file and if you like edit the sticker names</p> </li> </ol> <p>You can also find preconfigured sticker packs in Matrix. I recommend Nico's Sticker Collection:</p> <p><a href="https://matrix.to/#/#nico's-stickers:neko.dev">https://matrix.to/#/#nico's-stickers:neko.dev</a></p> <p>The sticker collection for FluffyChat unfortunately does not have yet a large selection:</p> <p><a href="https://matrix.to/#/#fluffychat-stickers:janian.de">https://matrix.to/#/#fluffychat-stickers:janian.de</a></p> <ol> <li><p>Join the public room</p> </li> <li><p>Open the three dot menu top right and tap on "Emote Settings"</p> </li> <li><p>Select the sticker pack in the room you like</p> </li> <li><p>Toggle "Enable emote pack globally"</p> </li> </ol> <p>Have fun with your stickers! :-)</p></article>
|
||||
<article class="mb-12 pl-5" id="how_do_i_get_stickers:answer"><p>Podes conseguir paquetes de adhesivos en internet. Por exemplo este volpeon.ink fai un traballo tremendo:</p> <p><a href="https://volpeon.ink/emojis/">https://volpeon.ink/emojis/</a></p> <p>Só tes que seguir estes pasos:</p> <ol> <li><p>Descarga o ficheiro zip dun paquete de adhesivos</p> </li> <li><p>Abre FluffyChat</p> </li> <li><p>Vai a "Axustes" > "Conversas" > "Emotes e adhesivos persoais"</p> </li> <li><p>Toca nos tres puntos verticais da parte superior dereita e despois en "Importar desde ficheiro zip"</p> </li> <li><p>Selecciona o ficheiro zip e se lle queres cambiar o nome ao paquete</p> </li> </ol> <p>Tamén podes atopar paquetes preconfigurados en Matrix. Recomendo a Sticker Collection de Nico:</p> <p><a href="https://matrix.to/#/#nico's-stickers:neko.dev">https://matrix.to/#/#nico's-stickers:neko.dev</a></p> <p>Por agora a colección para FluffyChat aínda non é moit ampla:</p> <p><a href="https://matrix.to/#/#fluffychat-stickers:janian.de">https://matrix.to/#/#fluffychat-stickers:janian.de</a></p> <ol> <li><p>Únete á sala pública</p> </li> <li><p>Abre os tres puntos de arriba á dereita e preme en "Axustes Emote"</p> </li> <li><p>Selecciona o paquete de adhesivos dispoñibles na sala</p> </li> <li><p>Activa "Permitir paquete de emote de xeito global"</p> </li> </ol> <p>E divírtete usando os novos adhesivos! :-)</p></article>
|
||||
|
||||
</span>
|
||||
<script>
|
||||
|
|
@ -199,7 +205,7 @@
|
|||
Directiva de privacidade</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/gl/tos">
|
||||
Terms of service</a>
|
||||
Termos do servizo</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -244,6 +250,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
Directiva de privacidade</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/gl/tos">
|
||||
Terms of service</a>
|
||||
Termos do servizo</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@
|
|||
Directiva de privacidade</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/gl/tos">
|
||||
Terms of service</a>
|
||||
Termos do servizo</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
Directiva de privacidade</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/gl/tos">
|
||||
Terms of service</a>
|
||||
Termos do servizo</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
Directiva de privacidade</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/gl/tos">
|
||||
Terms of service</a>
|
||||
Termos do servizo</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
36
index.html
|
|
@ -1,22 +1,20 @@
|
|||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting…</title>
|
||||
<meta http-equiv="refresh" content="0; url=/en/">
|
||||
<script>
|
||||
const userLang = navigator.language?.substring(0, 2) || "en";
|
||||
const supported = ["be", "de", "en", "et", "fi", "fy", "gl", "lv", "nb_NO", "nl", "uz"]; // z. B. ["en","de"] Fallback auf Englisch, falls Sprache nicht unterstützt
|
||||
const targetLang = supported.includes(userLang)
|
||||
? userLang
|
||||
: "en";
|
||||
window.location.replace(`/${targetLang}/`);
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p>Redirecting…</p>
|
||||
</body>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting…</title>
|
||||
<meta http-equiv="refresh" content="0; url=/en/">
|
||||
<script>
|
||||
const userLang = navigator.language ?. substring(0, 2) || "en";
|
||||
const supported = ["be","de","en","et","fi","fy","gl","lv","nb_NO","nl","ta","uz"]; // z. B. ["en","de"] Fallback auf Englisch, falls Sprache nicht unterstützt
|
||||
const targetLang = supported.includes(userLang)
|
||||
? userLang
|
||||
: "en";
|
||||
window.location.replace(`/${targetLang}/`);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting…</p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -46,11 +46,17 @@
|
|||
|
||||
<h1 class="text-center">Favourite asked questions</h1>
|
||||
<p class="text-center">You can edit or translate this FAQ on <a href='https://hosted.weblate.org/projects/fluffychat/fluffychat-website'>Weblate</a>.</p>
|
||||
<p class="text-center"><input id="searchField" type="text" placeholder="Search 🔍" class="placeholder:text-slate-400 text-center text-slate-700 text-3xl bg-slate-100 border border-slate-200 rounded-full
|
||||
<p class="text-center"><input id="searchField" type="text" placeholder="Search" class="placeholder:text-slate-400 text-center text-slate-700 text-3xl bg-slate-100 border border-slate-200 rounded-full
|
||||
w-full px-8 py-4 my-8"/>
|
||||
</p>
|
||||
<span id="faqEntries">
|
||||
|
||||
<h2 id="how_can_i_support_fluffychat:question" class="question">
|
||||
<a name="how_can_i_support_fluffychat" href="#how_can_i_support_fluffychat">#</a>
|
||||
How can I support FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_support_fluffychat:answer"><p><strong>FluffyChat needs YOUR help!</strong></p><p>FluffyChat is developed by volunteers and will always be free for everyone. But hosting and development are not possible without financial support.</p><p>Right now I spend almost all of my free time developing FluffyChat, completely unpaid. However, this is not something I can do forever. The future of FluffyChat depends on people like you.</p><p>Most people will ignore this message. But if FluffyChat is useful to you, please consider making a small donation.</p><p>Support FluffyChat here:<br><a href="https://ko-fi.com/C1C86VN53">https://ko-fi.com/krille</a><br><a href="https://liberapay.com/KrilleChritzelius">https://liberapay.com/KrilleChritzelius</a></p><p>Thank you for helping keep FluffyChat alive and independent.</p></article>
|
||||
|
||||
<h2 id="what_is_fluffychat:question" class="question">
|
||||
<a name="what_is_fluffychat" href="#what_is_fluffychat">#</a>
|
||||
What is FluffyChat?
|
||||
|
|
@ -244,6 +250,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -25,16 +25,16 @@
|
|||
<!--Header-->
|
||||
<div class="w-full lg:h-12 min-h-12 py-4 lg:py-0 mb-8 border-b border-gray-200 dark:border-gray-700">
|
||||
<nav class="flex flex-wrap h-full justify-center items-center space-x-6 w-full max-w-4xl m-auto">
|
||||
<a href="/nb_NO/" class=" text-lg">Home</a>
|
||||
<a href="/nb_NO/" class=" text-lg">Hjem</a>
|
||||
<a href="/nb_NO/faq" class=" text-lg">FAQ</a>
|
||||
<a href="/nb_NO/changelog" class="underline text-lg">
|
||||
Changelog</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blog
|
||||
Endringslogg</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blogg
|
||||
</a>
|
||||
<div class="lg:flex-grow"></div>
|
||||
<a href='https://ko-fi.com/C1C86VN53' class="hover:scale-110 transition-transform" target='_blank'>
|
||||
<div class="rounded-xl bg-slate-900 dark:bg-slate-50 p-2 flex flex-row spacing-4"><img src="/assets/ko-fi.png" class="h-5 mr-2"/>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Support me on Ko-Fi</span>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Støtt meg på Ko-Fi</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="https://troet.cafe/@krille" rel="me" class="m-2 hover:scale-110 transition-transform "><img src="/assets/mastodon.svg" class="h-7"/>
|
||||
|
|
@ -43,24 +43,24 @@
|
|||
</div>
|
||||
|
||||
<div class="container max-w-4xl markdown px-4 lg:px-0">
|
||||
<h1>Changelog</h1>
|
||||
<h1>Endringslogg</h1>
|
||||
|
||||
</div>
|
||||
<!--Footer-->
|
||||
<div class="w-full flex justify-center border-t border-gray-200 dark:border-gray-700">
|
||||
<footer class="w-full text-center max-w-4xl p-4 text-slate-700 dark:text-slate-200">
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/impressum">
|
||||
Imprint</a>
|
||||
Redaksjonell informasjon</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/privacy">
|
||||
Privacy policy</a>
|
||||
Personvernerklæring</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/tos">
|
||||
Terms of service</a>
|
||||
Brukervilkår</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://github.com/krille-chan/fluffychat">Source Code</a>
|
||||
href="https://github.com/krille-chan/fluffychat">Kildekode</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -68,17 +68,17 @@
|
|||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Translations</a>
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Oversettelser</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto Animated Emojis</a>
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto animerte emoji</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://krille-chan.github.io">Created by Krille-chan</a>
|
||||
href="https://krille-chan.github.io">Utviklet av Krille-chan</a>
|
||||
<br/>
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Language:
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Språk:
|
||||
</span>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/be/">Беларуская</a>
|
||||
|
|
@ -101,6 +101,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -25,16 +25,16 @@
|
|||
<!--Header-->
|
||||
<div class="w-full lg:h-12 min-h-12 py-4 lg:py-0 mb-8 border-b border-gray-200 dark:border-gray-700">
|
||||
<nav class="flex flex-wrap h-full justify-center items-center space-x-6 w-full max-w-4xl m-auto">
|
||||
<a href="/nb_NO/" class=" text-lg">Home</a>
|
||||
<a href="/nb_NO/" class=" text-lg">Hjem</a>
|
||||
<a href="/nb_NO/faq" class="underline text-lg">FAQ</a>
|
||||
<a href="/nb_NO/changelog" class=" text-lg">
|
||||
Changelog</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blog
|
||||
Endringslogg</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blogg
|
||||
</a>
|
||||
<div class="lg:flex-grow"></div>
|
||||
<a href='https://ko-fi.com/C1C86VN53' class="hover:scale-110 transition-transform" target='_blank'>
|
||||
<div class="rounded-xl bg-slate-900 dark:bg-slate-50 p-2 flex flex-row spacing-4"><img src="/assets/ko-fi.png" class="h-5 mr-2"/>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Support me on Ko-Fi</span>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Støtt meg på Ko-Fi</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="https://troet.cafe/@krille" rel="me" class="m-2 hover:scale-110 transition-transform "><img src="/assets/mastodon.svg" class="h-7"/>
|
||||
|
|
@ -44,124 +44,130 @@
|
|||
|
||||
<div class="container max-w-4xl markdown px-4 lg:px-0">
|
||||
|
||||
<h1 class="text-center">Favourite asked questions</h1>
|
||||
<p class="text-center">You can edit or translate this FAQ on <a href='https://hosted.weblate.org/projects/fluffychat/fluffychat-website'>Weblate</a>.</p>
|
||||
<p class="text-center"><input id="searchField" type="text" placeholder="Search 🔍" class="placeholder:text-slate-400 text-center text-slate-700 text-3xl bg-slate-100 border border-slate-200 rounded-full
|
||||
<h1 class="text-center">Ofte stilte spørsmål</h1>
|
||||
<p class="text-center">Du kan redigere eller oversette denne FAQen på <a href='https://hosted.weblate.org/projects/fluffychat/fluffychat-website'>Weblate</a>.</p>
|
||||
<p class="text-center"><input id="searchField" type="text" placeholder="Søk 🔍" class="placeholder:text-slate-400 text-center text-slate-700 text-3xl bg-slate-100 border border-slate-200 rounded-full
|
||||
w-full px-8 py-4 my-8"/>
|
||||
</p>
|
||||
<span id="faqEntries">
|
||||
|
||||
<h2 id="how_can_i_support_fluffychat:question" class="question">
|
||||
<a name="how_can_i_support_fluffychat" href="#how_can_i_support_fluffychat">#</a>
|
||||
How can I support FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_support_fluffychat:answer"><p><strong>FluffyChat needs YOUR help!</strong></p><p>FluffyChat is developed by volunteers and will always be free for everyone. But hosting and development are not possible without financial support.</p><p>Right now I spend almost all of my free time developing FluffyChat, completely unpaid. However, this is not something I can do forever. The future of FluffyChat depends on people like you.</p><p>Most people will ignore this message. But if FluffyChat is useful to you, please consider making a small donation.</p><p>Support FluffyChat here:<br><a href="https://ko-fi.com/C1C86VN53">https://ko-fi.com/krille</a><br><a href="https://liberapay.com/KrilleChritzelius">https://liberapay.com/KrilleChritzelius</a></p><p>Thank you for helping keep FluffyChat alive and independent.</p></article>
|
||||
|
||||
<h2 id="what_is_fluffychat:question" class="question">
|
||||
<a name="what_is_fluffychat" href="#what_is_fluffychat">#</a>
|
||||
What is FluffyChat?
|
||||
Hva er FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="what_is_fluffychat:answer">FluffyChat is a user-friendly, free, and ad-free open-source app based on the <a href='https://matrix.org'>Matrix protocol</a> and works similarly to Telegram or WhatsApp.<br/>With FluffyChat, you can chat with your friends privately, create group chats, exchange voice messages, share pictures and videos, and even send your location.<br/>And the best part:<br/><b>FluffyChat is compatible with other Matrix messengers!</b></article>
|
||||
|
||||
<h2 id="who_is_fluffychat_for:question" class="question">
|
||||
<a name="who_is_fluffychat_for" href="#who_is_fluffychat_for">#</a>
|
||||
Who is FluffyChat for?
|
||||
Hvem er FluffyChat for?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="who_is_fluffychat_for:answer">FluffyChat is for anyone looking for a fast, user-friendly, and secure alternative to centralized messaging apps like WhatsApp, Telegram, or WeChat.</article>
|
||||
|
||||
<h2 id="who_created_fluffychat:question" class="question">
|
||||
<a name="who_created_fluffychat" href="#who_created_fluffychat">#</a>
|
||||
Who created FluffyChat?
|
||||
Hvem utviklet FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="who_created_fluffychat:answer">FluffyChat is developed by the community and was initiated by Christian (<a href='https://krille-chan.github.io/'>Krille</a>) Kußowski. However there are a lot of contributors, either code or translations. You can find them <a href='https://github.com/krille-chan/fluffychat/graphs/contributors'>here</a>.</article>
|
||||
|
||||
<h2 id="how_is_fluffychat_funded:question" class="question">
|
||||
<a name="how_is_fluffychat_funded" href="#how_is_fluffychat_funded">#</a>
|
||||
How is FluffyChat funded?
|
||||
Hvordan finansieres FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_is_fluffychat_funded:answer">FluffyChat is a non-profit project driven by volunteers and totally funded by donations.</article>
|
||||
|
||||
<h2 id="is_fluffychat_available_on_my_device:question" class="question">
|
||||
<a name="is_fluffychat_available_on_my_device" href="#is_fluffychat_available_on_my_device">#</a>
|
||||
Is FluffyChat available on my device?
|
||||
Er FluffyChat tilgjengelig på min enhet?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="is_fluffychat_available_on_my_device:answer">Yes! You can use FluffyChat on mobile phones, tablets, and as a web version on your PC. Available on Android (Play Store and F-Droid), iOS (App Store), as a web app and as a desktop app for Linux (Flathub, Snap Store). It even works on Linux phones by using the Arm64 version of the Flatpak/Snap. You can compile it for MacOS and Windows by yourself if you like, but that is not yet supported.</article>
|
||||
|
||||
<h2 id="how_do_i_create_an_account:question" class="question">
|
||||
<a name="how_do_i_create_an_account" href="#how_do_i_create_an_account">#</a>
|
||||
How do I create a FluffyChat account?
|
||||
Hvordan oppretter jeg en FluffyChat-konto?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_do_i_create_an_account:answer">When you first launch the app, you'll be asked to create a new Matrix account. Select a server (e.g., matrix.org), enter your desired username, and a secure password. Optionally, you can add an email address (this is helpful for password recovery, but not required).</article>
|
||||
|
||||
<h2 id="what_is_a_matrix_id:question" class="question">
|
||||
<a name="what_is_a_matrix_id" href="#what_is_a_matrix_id">#</a>
|
||||
What is a Matrix ID?
|
||||
Hva er en Matrix ID?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="what_is_a_matrix_id:answer">Your <b>Matrix ID</b> is your unique username on the network, e.g., @name:matrix.org. It consists of your name and the server on which your account is located.</article>
|
||||
|
||||
<h2 id="how_do_i_log_in:question" class="question">
|
||||
<a name="how_do_i_log_in" href="#how_do_i_log_in">#</a>
|
||||
How do I log in to FluffyChat?
|
||||
Hvordan logger jeg inn på FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_do_i_log_in:answer">If you already have a Matrix account, simply enter your Matrix ID (e.g., @name:matrix.org) and password. You can log in to any Matrix-compatible server because FluffyChat is decentralized.</article>
|
||||
|
||||
<h2 id="do_i_need_email:question" class="question">
|
||||
<a name="do_i_need_email" href="#do_i_need_email">#</a>
|
||||
Do I need an email address for FluffyChat?
|
||||
Trenger jeg en e-postadresse for å bruke FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="do_i_need_email:answer">No, an email address is not required. However, it is recommended if you want to reset your password or verify your account.</article>
|
||||
|
||||
<h2 id="i_forgot_my_password:question" class="question">
|
||||
<a name="i_forgot_my_password" href="#i_forgot_my_password">#</a>
|
||||
I forgot my password. What now?
|
||||
Jeg har glemt passordet mitt. Hva nå?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="i_forgot_my_password:answer">If you provided an email address when creating your account, you can reset your password via the server website (e.g., https://matrix.org). Unfortunately, recovery is not possible without an email address. In this case, you will need to create a new account.</article>
|
||||
|
||||
<h2 id="i_changed_my_device_encrypted_messages:question" class="question">
|
||||
<a name="i_changed_my_device_encrypted_messages" href="#i_changed_my_device_encrypted_messages">#</a>
|
||||
I changed my device and now all my messages are encrypted. What now?
|
||||
Jeg har byttet enhet og alle mine meldinger er nå krypterte. Hva nå?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="i_changed_my_device_encrypted_messages:answer">To read your encrypted messages on the new device, you need to restore the backup you created previously. Enter your backup key or password when setting up FluffyChat on the new device. Only then can your messages be decrypted. If you haven't created a backup or have lost the key, your encrypted messages unfortunately cannot be restored.</article>
|
||||
|
||||
<h2 id="how_do_i_create_a_backup_key:question" class="question">
|
||||
<a name="how_do_i_create_a_backup_key" href="#how_do_i_create_a_backup_key">#</a>
|
||||
How do I create a backup key in FluffyChat?
|
||||
Hvordan oppretter jeg en sikkerhetskopi-nøkkel i FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_do_i_create_a_backup_key:answer">Open FluffyChat and go to the <b>settings</b> to the <b>Chat Backup</b>. There you can set up an <u>encrypted</u> chat backup. You will be asked to save a recovery key. Important: Make a note of this key or keep it safe. <b>Without it, you won't be able to restore your encrypted messages on a new device.</b></article>
|
||||
|
||||
<h2 id="i_found_a_bug:question" class="question">
|
||||
<a name="i_found_a_bug" href="#i_found_a_bug">#</a>
|
||||
I found a bug. What now?
|
||||
Jeg har funnet en feil. Hva gjør jeg nå?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="i_found_a_bug:answer">You can report bugs directly on Github. Alternatively, there's a public group chat on Messenger (#fluffy-space:matrix.org) where you can ask questions or send feedback.</article>
|
||||
|
||||
<h2 id="push_without_google_services:question" class="question">
|
||||
<a name="push_without_google_services" href="#push_without_google_services">#</a>
|
||||
How can I get Push Notifications without Google Services?
|
||||
Hvordan kan jeg få push-varslinger uten Google-tjenester?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="push_without_google_services:answer"><p>Push notifications are a great way to make sure you don't miss important messages in FluffyChat. For users who do not use Google Services (for example Huawei Phones, Amazon Fire tablets or custom roms), setting up push notifications is slightly different.</p> <p>FluffyChat attempts to set up push notifications automatically every time you launch the app. However, if you do not have Google Services on your device, you may receive an error message. In this case, it is necessary to use the an <a href="https://unifiedpush.org/#quick-start">UnifiedPush app</a> such as Ntfy, UP-FCM Distributor (Google) or Conversations.</p> <!-- editorconfig-checker-disable --> <!-- prettier-ignore-start --> <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <p><strong>Table of Contents</strong></p> <ul> <li><a href="#using-ntfy">Using Ntfy</a><ul> <li><a href="#-step-1-installing-and-setting-up-ntfy">🏪 Step 1: Installing and Setting Up ntfy</a></li> <li><a href="#-step-2-deactivate-battery-optimization-for-ntfy">🔋 Step 2: Deactivate Battery Optimization for ntfy</a></li> <li><a href="#-step-3-checking-push-configuration-in-fluffychat">✅ Step 3: Checking Push Configuration in FluffyChat</a></li> <li><a href="#%F0%9F%A5%B3-step-4-receiving-push-notifications">🥳 Step 4: Receiving Push Notifications</a></li> </ul> </li> <li><a href="#using-conversations">Using Conversations</a></li> </ul> <!-- END doctoc generated TOC please keep comment here to allow auto update --> <!-- prettier-ignore-end --> <!-- editorconfig-checker-enable --> <h3 id="using-ntfy">Using Ntfy</h3> <p>In this article, we'll show you how to configure push notifications on your Android device using the <strong>ntfy</strong> app.</p> <h3 id="-step-1-installing-and-setting-up-ntfy">🏪 Step 1: Installing and Setting Up ntfy</h3> <ol> <li><p>If you already have FluffyChat installed but are not receiving push notifications, close the app completely (by swiping it away in the overview) and open the <strong>PlayStore</strong> (or F-Droid) on your Android device.</p> </li> <li><p>Search for the app <a href="https://play.google.com/store/apps/details?id=io.heckel.ntfy">ntfy</a> and install it.</p> </li> <li><p>After installing ntfy, open the app at least once.</p> </li> <li><p>Now, return to FluffyChat and open the app.</p> </li> </ol> <h3 id="-step-2-deactivate-battery-optimization-for-ntfy">🔋 Step 2: Deactivate Battery Optimization for ntfy</h3> <p>To ensure that FluffyChat can reliably send push notifications, it's important to deactivate battery optimization for the "ntfy" app.</p> <ol> <li><p>Go to the [Android settings] on your device.</p> </li> <li><p>Look for "Apps" or "Applications" and select "ntfy" from the list of installed apps.</p> </li> <li><p>Tap on "Battery" and select "Battery optimization."</p> </li> <li><p>In the list of apps exempted from battery optimization, make sure "ntfy" is selected.</p> </li> </ol> <h3 id="-step-3-checking-push-configuration-in-fluffychat">✅ Step 3: Checking Push Configuration in FluffyChat</h3> <ol> <li><p>Open FluffyChat and navigate to the [Settings].</p> </li> <li><p>Choose "Notifications" from the menu.</p> </li> <li><p>In the notification settings, you'll see a list of "Pushers." The "Pusher" for "ntfy" should be at the bottom of the list.</p> </li> </ol> <h3 id="-step-4-receiving-push-notifications">🥳 Step 4: Receiving Push Notifications</h3> <p>To ensure that everything is set up correctly, ask a friend to send you a message in FluffyChat and check if you receive a push notification.</p> <h3 id="using-conversations">Using Conversations</h3> <p>If you are using XMPP in addition to Matrix and already have Conversations configured, you can follow these steps to get FluffyChat push notifications through it:</p> <ol> <li>Open <em>Conversations</em>.</li> <li>Touch the three dots on top right.</li> <li>Select <em>Settings</em> and scroll down to <em>UnifiedPush Distributor</em>.</li> <li>Touch <em>XMPP account</em> and select the XMPP account you wish to receive notifications through.</li> <li>Open FluffyChat. If it doesn't offer to receive notifications through <em>Conversations</em>, check the notification settings (see step 3 for Ntfy above).</li> </ol> <hr> <p>Following these steps should successfully set up push notifications in FluffyChat for users without Google Services. If you are interested in hosting your own push service, you can take a look at <a href="https://unifiedpush.org">unifiedpush.org</a>.</p></article>
|
||||
|
||||
<h2 id="how_can_i_extend_this_faq:question" class="question">
|
||||
<a name="how_can_i_extend_this_faq" href="#how_can_i_extend_this_faq">#</a>
|
||||
How can I extend this FAQ?
|
||||
Hvordan utvider jeg denne FAQ-en?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_can_i_extend_this_faq:answer">On <a href='https://hosted.weblate.org/projects/fluffychat/fluffychat-website'>Weblate</a> you can edit all entries of the FAQ and provide translations for your language. To edit a source entry of the faq, you need to edit the <b>english</b> version. As an admin you can also write new entries to it by going to <b>English</b> and tap on <b>Add new translation</b>. There you then need to define a <b>key</b> for the FAQ entry.<br/><br/>The key always starts with <code>faq_questions.</code> or <code>faq_answers.</code>, then consists of the questions in lower case snake case. For example, the key of this entry is <code>faq_answer.how_can_i_extend_this_faq</code>.<br/><br/>Please note that you must provide a question <b>and</b> an answer, so you have to define two new translations.<br/><br/>If you are not an admin you can edit <a href='https://github.com/krille-chan/fluffychat-website/blob/main/src/_data/i18n/en.json'>this json file in GitHub</a>.</article>
|
||||
|
||||
<h2 id="how_to_use_end_to_end_encryption:question" class="question">
|
||||
<a name="how_to_use_end_to_end_encryption" href="#how_to_use_end_to_end_encryption">#</a>
|
||||
How to use end to end encryption?
|
||||
Hvordan bruke ende-til-ende-kryptering?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_to_use_end_to_end_encryption:answer"><p>FluffyChat supports end to end encryption. You can enable it per chat. Once enabled it cannot be disabled anymore for security reasons. You can not enable encryption for public rooms as this makes no sense when anyone can join and leave the room anyway. Once you have enabled encryption, the server is no longer able to read the content of your messages. It will encrypt all text messages and files.</p> <p>To be safe from man-in-the-middle attacks, you should take a look at the device list. You can do this in the encryption settings of a chat. Is there a suspicious device which you or your chat partner don't know? Then you can block it by moving the toggle to the left.</p> <p>The color of the toggle shows you the security state. Orange means, that this device is not verified. Grey means that it is blocked and won't receive the encryption keys. This means that this device won't be able to read your messages anymore! Green means that this device is verified.</p> <p>To verify the devices of another user, start the verification in a direct chat. For this you have a "Start verification" button in the encryption settings of a direct chat. Be sure that you are standing next to this person or you are connected via phone or any other secure channel. When you have started the verification, you will both see a set of emojis on your device. Compare them and tap on "They match". Wait a little bit and then you should see that all devices become green.</p></article>
|
||||
|
||||
<h2 id="how_to_fork:question" class="question">
|
||||
<a name="how_to_fork" href="#how_to_fork">#</a>
|
||||
How can I fork FluffyChat?
|
||||
Hvordan forker jeg FluffyChat?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_to_fork:answer"><p><strong>Table of Contents</strong></p> <ul> <li><a href="#1-license">1. License</a></li> <li><a href="#2-disable-end-to-end-encryption">2. Disable end-to-end encryption!</a></li> <li><a href="#3-stay-up-to-date">3. Stay up to date!</a></li> <li><a href="#4-official-support">4. Official Support</a></li> </ul> <h3 id="1-license">1. License</h3> <p>FluffyChat is licensed under AGPL. Read the license (<a href="https://github.com/krille-chan/fluffychat/blob/main/LICENSE">https://github.com/krille-chan/fluffychat/blob/main/LICENSE</a>) and make sure that your fork is open source under the same license and that you fulfill all requirements. Maybe you should consider contacting a lawyer <strong>before</strong> you publish your fork.</p> <h3 id="2-disable-end-to-end-encryption-">2. Disable end-to-end encryption!</h3> <p>Due to US export regulations you are not allowed to publish your app in a store or anywhere on a US server before you have removed everything regarding the encryption or fulfill the regulations.</p> <p>Learn more: <a href="https://www.bis.doc.gov/index.php/policy-guidance/encryption">https://www.bis.doc.gov/index.php/policy-guidance/encryption</a></p> <p>If you need help from us with using E2EE in your fork read more below under the topic "<strong>Official Support</strong>".</p> <h3 id="3-stay-up-to-date-">3. Stay up to date!</h3> <p>FluffyChat contains security related stuff. If we find a security bug, we will try to fix it as soon as possible and ship it with a new version. But this means that your fork is out of date and a security risk. You can't be awake 24 hours a day so you must decide how you protect your users by chosing one of the following methods:</p> <ol> <li>Make your fork as minimal as possible and enable repository mirroring. Set up a CI which publishes new versions automatically if FluffyChat publishes a bug fix.</li> <li>Never sleep and pay a big team where one guy at least is never sleeping.</li> <li>Contact <a href="https://famedly.com">famedly.com</a> to buy official support.</li> </ol> <h3 id="4-official-support">4. Official Support</h3> <p>FluffyChat is free as in free speech and not free beer! Please contact my company <a href="https://famedly.com">famedly.com</a> for offers and official support and take in mind that it costs a lot of work and time to maintain FluffyChat or the Famedly Matrix SDK. So we can't give you support for free. So please expect around 1$ per month per user of your fork.</p></article>
|
||||
|
||||
<h2 id="how_do_i_find_other_users:question" class="question">
|
||||
<a name="how_do_i_find_other_users" href="#how_do_i_find_other_users">#</a>
|
||||
How do I find other users?
|
||||
Hvordan finner jeg andre brukere?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_do_i_find_other_users:answer"><p>There are several ways to find other users in FluffyChat.<br/></p> <ol> <li>Search by display name: You can enter a person's display name in the search. This only works if:<ul> <li>You've already shared a chat with the person,</li> <li>They're in a public room known to your server,</li> <li>Or your server allows searching for other users.</li> </ul> </li> <li>Enter Matrix ID directly: If you know the Matrix ID (e.g., <code>@krille:janian.de</code>), you can enter it directly in the search. It works similarly to an email address: <code>@username:servername</code>.</li> <li>Scan QR code: You can scan the other person's QR code or display your own for scanning.</li> <li>Share invitation link: Anyone can share an invitation link to a room or chat. Clicking the link will connect you directly.</li> </ol></article>
|
||||
|
||||
<h2 id="how_do_i_get_stickers:question" class="question">
|
||||
<a name="how_do_i_get_stickers" href="#how_do_i_get_stickers">#</a>
|
||||
How do I get stickers?
|
||||
Hvordan får jeg stickers?
|
||||
</h2>
|
||||
<article class="mb-12 pl-5" id="how_do_i_get_stickers:answer"><p>You can add a sticker pack from the internet. For example this volpeon.ink does an incredible job:</p> <p><a href="https://volpeon.ink/emojis/">https://volpeon.ink/emojis/</a></p> <p>Just follow these steps:</p> <ol> <li><p>Download one of the packs as a zip file</p> </li> <li><p>Open FluffyChat</p> </li> <li><p>Go to "Settings" > "Chat" > "Custom emotes and stickers"</p> </li> <li><p>Tap on the three dot menu top right and tap on "Import from zip file"</p> </li> <li><p>Select the zip file and if you like edit the sticker names</p> </li> </ol> <p>You can also find preconfigured sticker packs in Matrix. I recommend Nico's Sticker Collection:</p> <p><a href="https://matrix.to/#/#nico's-stickers:neko.dev">https://matrix.to/#/#nico's-stickers:neko.dev</a></p> <p>The sticker collection for FluffyChat unfortunately does not have yet a large selection:</p> <p><a href="https://matrix.to/#/#fluffychat-stickers:janian.de">https://matrix.to/#/#fluffychat-stickers:janian.de</a></p> <ol> <li><p>Join the public room</p> </li> <li><p>Open the three dot menu top right and tap on "Emote Settings"</p> </li> <li><p>Select the sticker pack in the room you like</p> </li> <li><p>Toggle "Enable emote pack globally"</p> </li> </ol> <p>Have fun with your stickers! :-)</p></article>
|
||||
|
||||
|
|
@ -193,17 +199,17 @@
|
|||
<div class="w-full flex justify-center border-t border-gray-200 dark:border-gray-700">
|
||||
<footer class="w-full text-center max-w-4xl p-4 text-slate-700 dark:text-slate-200">
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/impressum">
|
||||
Imprint</a>
|
||||
Redaksjonell informasjon</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/privacy">
|
||||
Privacy policy</a>
|
||||
Personvernerklæring</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/tos">
|
||||
Terms of service</a>
|
||||
Brukervilkår</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://github.com/krille-chan/fluffychat">Source Code</a>
|
||||
href="https://github.com/krille-chan/fluffychat">Kildekode</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -211,17 +217,17 @@
|
|||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Translations</a>
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Oversettelser</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto Animated Emojis</a>
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto animerte emoji</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://krille-chan.github.io">Created by Krille-chan</a>
|
||||
href="https://krille-chan.github.io">Utviklet av Krille-chan</a>
|
||||
<br/>
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Language:
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Språk:
|
||||
</span>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/be/">Беларуская</a>
|
||||
|
|
@ -244,6 +250,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -25,16 +25,16 @@
|
|||
<!--Header-->
|
||||
<div class="w-full lg:h-12 min-h-12 py-4 lg:py-0 mb-8 border-b border-gray-200 dark:border-gray-700">
|
||||
<nav class="flex flex-wrap h-full justify-center items-center space-x-6 w-full max-w-4xl m-auto">
|
||||
<a href="/nb_NO/" class=" text-lg">Home</a>
|
||||
<a href="/nb_NO/" class=" text-lg">Hjem</a>
|
||||
<a href="/nb_NO/faq" class=" text-lg">FAQ</a>
|
||||
<a href="/nb_NO/changelog" class=" text-lg">
|
||||
Changelog</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blog
|
||||
Endringslogg</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blogg
|
||||
</a>
|
||||
<div class="lg:flex-grow"></div>
|
||||
<a href='https://ko-fi.com/C1C86VN53' class="hover:scale-110 transition-transform" target='_blank'>
|
||||
<div class="rounded-xl bg-slate-900 dark:bg-slate-50 p-2 flex flex-row spacing-4"><img src="/assets/ko-fi.png" class="h-5 mr-2"/>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Support me on Ko-Fi</span>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Støtt meg på Ko-Fi</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="https://troet.cafe/@krille" rel="me" class="m-2 hover:scale-110 transition-transform "><img src="/assets/mastodon.svg" class="h-7"/>
|
||||
|
|
@ -43,12 +43,12 @@
|
|||
</div>
|
||||
|
||||
<div class="container text-center p-32 markdown">
|
||||
<h1 class="font-bold">Imprint</h1>
|
||||
<h1 class="font-bold">Redaksjonell informasjon</h1>
|
||||
<p>Christian Kußowski<br/>Prenzlauer Allee 221<br/>10405 Berlin</p>
|
||||
<br/>
|
||||
<h1 class="font-bold">Contact</h1>
|
||||
<p>✉️ E‑Mail:
|
||||
<a class="underline hover:text-purple-800 dark:hover:text-purple-400" href="https://keys.mailvelope.com/pks/lookup?op=get&search=christian-pauly%40posteo.de">Click here</a>
|
||||
<h1 class="font-bold">Kontakt</h1>
|
||||
<p>✉️ E-post:
|
||||
<a class="underline hover:text-purple-800 dark:hover:text-purple-400" href="https://keys.mailvelope.com/pks/lookup?op=get&search=christian-pauly%40posteo.de">Klikk her</a>
|
||||
<br/>💬 Matrix:
|
||||
<a
|
||||
class="underline hover:text-purple-800 dark:hover:text-purple-400"
|
||||
|
|
@ -60,17 +60,17 @@
|
|||
<div class="w-full flex justify-center border-t border-gray-200 dark:border-gray-700">
|
||||
<footer class="w-full text-center max-w-4xl p-4 text-slate-700 dark:text-slate-200">
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/impressum">
|
||||
Imprint</a>
|
||||
Redaksjonell informasjon</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/privacy">
|
||||
Privacy policy</a>
|
||||
Personvernerklæring</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/tos">
|
||||
Terms of service</a>
|
||||
Brukervilkår</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://github.com/krille-chan/fluffychat">Source Code</a>
|
||||
href="https://github.com/krille-chan/fluffychat">Kildekode</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -78,17 +78,17 @@
|
|||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Translations</a>
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Oversettelser</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto Animated Emojis</a>
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto animerte emoji</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://krille-chan.github.io">Created by Krille-chan</a>
|
||||
href="https://krille-chan.github.io">Utviklet av Krille-chan</a>
|
||||
<br/>
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Language:
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Språk:
|
||||
</span>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/be/">Беларуская</a>
|
||||
|
|
@ -111,6 +111,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -25,16 +25,16 @@
|
|||
<!--Header-->
|
||||
<div class="w-full lg:h-12 min-h-12 py-4 lg:py-0 mb-8 border-b border-gray-200 dark:border-gray-700">
|
||||
<nav class="flex flex-wrap h-full justify-center items-center space-x-6 w-full max-w-4xl m-auto">
|
||||
<a href="/nb_NO/" class="underline text-lg">Home</a>
|
||||
<a href="/nb_NO/" class="underline text-lg">Hjem</a>
|
||||
<a href="/nb_NO/faq" class=" text-lg">FAQ</a>
|
||||
<a href="/nb_NO/changelog" class=" text-lg">
|
||||
Changelog</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blog
|
||||
Endringslogg</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blogg
|
||||
</a>
|
||||
<div class="lg:flex-grow"></div>
|
||||
<a href='https://ko-fi.com/C1C86VN53' class="hover:scale-110 transition-transform" target='_blank'>
|
||||
<div class="rounded-xl bg-slate-900 dark:bg-slate-50 p-2 flex flex-row spacing-4"><img src="/assets/ko-fi.png" class="h-5 mr-2"/>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Support me on Ko-Fi</span>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Støtt meg på Ko-Fi</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="https://troet.cafe/@krille" rel="me" class="m-2 hover:scale-110 transition-transform "><img src="/assets/mastodon.svg" class="h-7"/>
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
</div>
|
||||
|
||||
<img src="/assets/info-logo.png" alt="FluffyChat Logo" class="h-56"/>
|
||||
<p class="text-xl dark:text-gray-200 text-gray-700 mb-8">The cutest messenger in [<a href="https://matrix.org" target="_blank" class="text-xl underline hover:text-purple-800 dark:hover:text-purple-400">matrix</a>]</p>
|
||||
<p class="text-xl dark:text-gray-200 text-gray-700 mb-8">Den søteste meldingsappen i [<a href="https://matrix.org" target="_blank" class="text-xl underline hover:text-purple-800 dark:hover:text-purple-400">matrix</a>]</p>
|
||||
<div class="flex flex-wrap justify-center mb-16 w-full px-8 gap-4">
|
||||
<img
|
||||
src="/assets/screenshots/mobile.png"
|
||||
|
|
@ -72,38 +72,38 @@
|
|||
<div class="grid md:grid-cols-3 md:grid-rows-3 max-w-4xl justify-center w-full mb-16 features">
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated dancing woman" loading="lazy" src="/assets/feature1.gif" class="h-32"/>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Easy to use</h1>
|
||||
<p class="text-center dark:text-white">FluffyChat is designed to be as easy to use as possible. No one should be left behind.</p>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Brukervennlig</h1>
|
||||
<p class="text-center dark:text-white">FluffyChat er designet for å være så enkel i bruk som mulig. ingen skal falle utenfor.</p>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated pencil" loading="lazy" src="/assets/feature2.gif" class="h-32"/>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Material You</h1>
|
||||
<p class="text-center dark:text-white">The well polished design is based on Material You and works great on all platforms.</p>
|
||||
<p class="text-center dark:text-white">Det gjennomførte designet er basert på Material You og fungerer utmerket på alle plattformer.</p>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated mechanical arm" loading="lazy" src="/assets/feature3.gif" class="h-32"/>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Secure</h1>
|
||||
<p class="text-center dark:text-white">With end-to-end encryption, cross-signing and encrypted backups, FluffyChat is one of the most secure messenger out there.</p>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Sikker</h1>
|
||||
<p class="text-center dark:text-white">Med ende-til-ende-kryptering, kryssignering og krypterte sikkerhetskopier, er FluffyChat en av de sikreste meldingsappene som finnes.</p>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated planet earth" loading="lazy" src="/assets/feature4.gif" class="h-32"/>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Decentral</h1>
|
||||
<p class="text-center dark:text-white">You can choose the <a href="https://joinmatrix.org">server</a> you want to use or even <a href="https://matrix.org/ecosystem/servers/">self-host</a> your own!</p>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Desentralisert</h1>
|
||||
<p class="text-center dark:text-white">Du kan velge hvilken <a href="https://joinmatrix.org">tjener</a> du vil bruke, eller til og med <a href="https://matrix.org/ecosystem/servers/">drifte din egen</a>!</p>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated bell" loading="lazy" src="/assets/feature5.gif" class="h-32"/>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Push Notifications</h1>
|
||||
<p class="text-center dark:text-white">You can choose between Firebase Cloud Messaging or the more privacy focused <a href="https://unifiedpush.org">Unified Push</a>.</p>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Push-varslinger</h1>
|
||||
<p class="text-center dark:text-white">Du kan velge mellom Firebase Cloud Messaging eller den mer personvernfokuserte <a href="https://unifiedpush.org">Unified Push</a>.</p>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated rocket" loading="lazy" src="/assets/feature6.gif" class="h-32"/>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Spaces</h1>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Områder</h1>
|
||||
<p class="text-center dark:text-white">With spaces you can join or create a community which organizes chats and users. Using sub-spaces you can even nest your communities.</p>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated glass sphere" loading="lazy" src="/assets/feature7.gif" class="h-32"/>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Video calls</h1>
|
||||
<p class="text-center dark:text-white">Still an experimental feature but you can already try out video and audio calls, compatible with other [matrix] clients.</p>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Videosamtaler</h1>
|
||||
<p class="text-center dark:text-white">Dette er fortsatt en eksperimentell funksjon, men du kan allerede prøve ut video- og lydsamtaler som er kompatible med andre [matrix]-klienter.</p>
|
||||
</div>
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated chick" loading="lazy" src="/assets/feature8.gif" class="h-32"/>
|
||||
|
|
@ -112,25 +112,25 @@
|
|||
</div>
|
||||
<div class="flex flex-col justify-center items-center p-8">
|
||||
<img alt="Animated whoa emoji" loading="lazy" src="/assets/feature9.gif" class="h-32"/>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Compatible</h1>
|
||||
<p class="text-center dark:text-white">FluffyChat is compatible with any other [matrix] client like <a href="https://element.io">Element</a>, <a href="https://nheko-reborn.github.io/">Nheko</a>, <a href="https://cinny.in">Cinny</a> or <a href="https://apps.kde.org/de/neochat/">NeoChat</a>.</p>
|
||||
<h1 class="text-purple-500 dark:text-purple-300 text-2xl">Kompatibel</h1>
|
||||
<p class="text-center dark:text-white">FluffyChat er kompatibel med alle andre [matrix]-klienter, som <a href="https://element.io">Element</a>, <a href="https://nheko-reborn.github.io/">Nheko</a>, <a href="https://cinny.in">Cinny</a> eller <a href="https://apps.kde.org/de/neochat/">NeoChat</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<!--Footer-->
|
||||
<div class="w-full flex justify-center border-t border-gray-200 dark:border-gray-700">
|
||||
<footer class="w-full text-center max-w-4xl p-4 text-slate-700 dark:text-slate-200">
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/impressum">
|
||||
Imprint</a>
|
||||
Redaksjonell informasjon</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/privacy">
|
||||
Privacy policy</a>
|
||||
Personvernerklæring</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/tos">
|
||||
Terms of service</a>
|
||||
Brukervilkår</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://github.com/krille-chan/fluffychat">Source Code</a>
|
||||
href="https://github.com/krille-chan/fluffychat">Kildekode</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -138,17 +138,17 @@
|
|||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Translations</a>
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Oversettelser</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto Animated Emojis</a>
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto animerte emoji</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://krille-chan.github.io">Created by Krille-chan</a>
|
||||
href="https://krille-chan.github.io">Utviklet av Krille-chan</a>
|
||||
<br/>
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Language:
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Språk:
|
||||
</span>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/be/">Беларуская</a>
|
||||
|
|
@ -171,6 +171,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -25,16 +25,16 @@
|
|||
<!--Header-->
|
||||
<div class="w-full lg:h-12 min-h-12 py-4 lg:py-0 mb-8 border-b border-gray-200 dark:border-gray-700">
|
||||
<nav class="flex flex-wrap h-full justify-center items-center space-x-6 w-full max-w-4xl m-auto">
|
||||
<a href="/nb_NO/" class=" text-lg">Home</a>
|
||||
<a href="/nb_NO/" class=" text-lg">Hjem</a>
|
||||
<a href="/nb_NO/faq" class=" text-lg">FAQ</a>
|
||||
<a href="/nb_NO/changelog" class=" text-lg">
|
||||
Changelog</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blog
|
||||
Endringslogg</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blogg
|
||||
</a>
|
||||
<div class="lg:flex-grow"></div>
|
||||
<a href='https://ko-fi.com/C1C86VN53' class="hover:scale-110 transition-transform" target='_blank'>
|
||||
<div class="rounded-xl bg-slate-900 dark:bg-slate-50 p-2 flex flex-row spacing-4"><img src="/assets/ko-fi.png" class="h-5 mr-2"/>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Support me on Ko-Fi</span>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Støtt meg på Ko-Fi</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="https://troet.cafe/@krille" rel="me" class="m-2 hover:scale-110 transition-transform "><img src="/assets/mastodon.svg" class="h-7"/>
|
||||
|
|
@ -49,17 +49,17 @@
|
|||
<div class="w-full flex justify-center border-t border-gray-200 dark:border-gray-700">
|
||||
<footer class="w-full text-center max-w-4xl p-4 text-slate-700 dark:text-slate-200">
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/impressum">
|
||||
Imprint</a>
|
||||
Redaksjonell informasjon</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/privacy">
|
||||
Privacy policy</a>
|
||||
Personvernerklæring</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/tos">
|
||||
Terms of service</a>
|
||||
Brukervilkår</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://github.com/krille-chan/fluffychat">Source Code</a>
|
||||
href="https://github.com/krille-chan/fluffychat">Kildekode</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -67,17 +67,17 @@
|
|||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Translations</a>
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Oversettelser</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto Animated Emojis</a>
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto animerte emoji</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://krille-chan.github.io">Created by Krille-chan</a>
|
||||
href="https://krille-chan.github.io">Utviklet av Krille-chan</a>
|
||||
<br/>
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Language:
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Språk:
|
||||
</span>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/be/">Беларуская</a>
|
||||
|
|
@ -100,6 +100,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -25,16 +25,16 @@
|
|||
<!--Header-->
|
||||
<div class="w-full lg:h-12 min-h-12 py-4 lg:py-0 mb-8 border-b border-gray-200 dark:border-gray-700">
|
||||
<nav class="flex flex-wrap h-full justify-center items-center space-x-6 w-full max-w-4xl m-auto">
|
||||
<a href="/nb_NO/" class=" text-lg">Home</a>
|
||||
<a href="/nb_NO/" class=" text-lg">Hjem</a>
|
||||
<a href="/nb_NO/faq" class=" text-lg">FAQ</a>
|
||||
<a href="/nb_NO/changelog" class=" text-lg">
|
||||
Changelog</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blog
|
||||
Endringslogg</a>
|
||||
<a href="https://ko-fi.com/krille/posts" target="_blank" class="text-lg">Blogg
|
||||
</a>
|
||||
<div class="lg:flex-grow"></div>
|
||||
<a href='https://ko-fi.com/C1C86VN53' class="hover:scale-110 transition-transform" target='_blank'>
|
||||
<div class="rounded-xl bg-slate-900 dark:bg-slate-50 p-2 flex flex-row spacing-4"><img src="/assets/ko-fi.png" class="h-5 mr-2"/>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Support me on Ko-Fi</span>
|
||||
<span class="text-white dark:text-black text-xs flex items-center mr-2">Støtt meg på Ko-Fi</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href="https://troet.cafe/@krille" rel="me" class="m-2 hover:scale-110 transition-transform "><img src="/assets/mastodon.svg" class="h-7"/>
|
||||
|
|
@ -55,17 +55,17 @@
|
|||
<div class="w-full flex justify-center border-t border-gray-200 dark:border-gray-700">
|
||||
<footer class="w-full text-center max-w-4xl p-4 text-slate-700 dark:text-slate-200">
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/impressum">
|
||||
Imprint</a>
|
||||
Redaksjonell informasjon</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/privacy">
|
||||
Privacy policy</a>
|
||||
Personvernerklæring</a>
|
||||
-
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nb_NO/tos">
|
||||
Terms of service</a>
|
||||
Brukervilkår</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://github.com/krille-chan/fluffychat">Source Code</a>
|
||||
href="https://github.com/krille-chan/fluffychat">Kildekode</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
|
|
@ -73,17 +73,17 @@
|
|||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Translations</a>
|
||||
href="https://hosted.weblate.org/projects/fluffychat/">Oversettelser</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto Animated Emojis</a>
|
||||
href="https://googlefonts.github.io/noto-emoji-animation/">Noto animerte emoji</a>
|
||||
-
|
||||
<a
|
||||
class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm"
|
||||
href="https://krille-chan.github.io">Created by Krille-chan</a>
|
||||
href="https://krille-chan.github.io">Utviklet av Krille-chan</a>
|
||||
<br/>
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Language:
|
||||
<span class="text-slate-700 dark:text-slate-200 text-sm">Språk:
|
||||
</span>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/be/">Беларуская</a>
|
||||
|
|
@ -106,6 +106,8 @@
|
|||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/nl/">Nederlands</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/ta/">ஆங்கிலம்</a>
|
||||
|
||||
<a class="text-slate-700 dark:text-slate-200 underline hover:text-purple-800 text-sm" href="/uz/">O'zbekcha</a>
|
||||
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
d68625c6a0691033bc4e169f06fe5f85
|
||||
|
|
@ -1,180 +0,0 @@
|
|||
var Imaging = (function() {
|
||||
var Module=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var moduleRtn;var b=moduleArg,h=!!globalThis.window,k=!!globalThis.WorkerGlobalScope,l=globalThis.process?.versions?.node&&"renderer"!=globalThis.process?.type;"undefined"!=typeof __filename?_scriptName=__filename:k&&(_scriptName=self.location.href);var m="",n,p;
|
||||
if(l){var fs=require("node:fs");m=__dirname+"/";p=a=>{a=q(a)?new URL(a):a;return fs.readFileSync(a)};n=async a=>{a=q(a)?new URL(a):a;return fs.readFileSync(a,void 0)};process.argv.slice(2)}else if(h||k){try{m=(new URL(".",_scriptName)).href}catch{}k&&(p=a=>{var d=new XMLHttpRequest;d.open("GET",a,!1);d.responseType="arraybuffer";d.send(null);return new Uint8Array(d.response)});n=async a=>{if(q(a))return new Promise((c,f)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=
|
||||
()=>{200==e.status||0==e.status&&e.response?c(e.response):f(e.status)};e.onerror=f;e.send(null)});var d=await fetch(a,{credentials:"same-origin"});if(d.ok)return d.arrayBuffer();throw Error(d.status+" : "+d.url);}}var r=console.log.bind(console),u=console.error.bind(console),v,w=!1,q=a=>a.startsWith("file://"),x,B,C,D,E=!1;
|
||||
function F(){var a=G.buffer;new Int8Array(a);new Int16Array(a);b.HEAPU8=C=new Uint8Array(a);new Uint16Array(a);new Int32Array(a);D=new Uint32Array(a);b.HEAPF32=new Float32Array(a);new Float64Array(a);new BigInt64Array(a);new BigUint64Array(a)}var H;async function I(a){if(!v)try{var d=await n(a);return new Uint8Array(d)}catch{}if(a==H&&v)a=new Uint8Array(v);else if(p)a=p(a);else throw"both async and sync fetching of the wasm failed";return a}
|
||||
async function J(a,d){try{var c=await I(a);return await WebAssembly.instantiate(c,d)}catch(f){throw u(`failed to asynchronously prepare wasm: ${f}`),a=f,b.onAbort?.(a),a="Aborted("+a+")",u(a),w=!0,a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info."),B?.(a),a;}}
|
||||
async function K(a){var d=H;if(!v&&!q(d)&&!l)try{var c=fetch(d,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(f){u(`wasm streaming compile failed: ${f}`),u("falling back to ArrayBuffer instantiation")}return J(d,a)}
|
||||
var L=a=>{for(;0<a.length;)a.shift()(b)},M=[],N=[],O=()=>{var a=b.preRun.shift();N.push(a)},P=[null,[],[]],S=globalThis.TextDecoder&&new TextDecoder,T=(a,d=0,c,f)=>{var e=d;c=e+c;if(f)f=c;else{for(;a[e]&&!(e>=c);)++e;f=e}if(16<f-d&&a.buffer&&S)return S.decode(a.subarray(d,f));for(e="";d<f;)if(c=a[d++],c&128){var g=a[d++]&63;if(192==(c&224))e+=String.fromCharCode((c&31)<<6|g);else{var t=a[d++]&63;c=224==(c&240)?(c&15)<<12|g<<6|t:(c&7)<<18|g<<12|t<<6|a[d++]&63;65536>c?e+=String.fromCharCode(c):(c-=
|
||||
65536,e+=String.fromCharCode(55296|c>>10,56320|c&1023))}}else e+=String.fromCharCode(c);return e};b.print&&(r=b.print);b.printErr&&(u=b.printErr);b.wasmBinary&&(v=b.wasmBinary);if(b.preInit)for("function"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.shift()();b.stackSave=()=>U();b.stackRestore=a=>V(a);b.stackAlloc=a=>W(a);b.UTF8ToString=(a,d,c)=>a?T(C,a,d,c):"";
|
||||
var V,W,U,G,X={b:a=>{var d=C.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var f=d*(1+.2/c);f=Math.min(f,a+100663296);a:{f=(Math.min(2147483648,65536*Math.ceil(Math.max(a,f)/65536))-G.buffer.byteLength+65535)/65536|0;try{G.grow(f);F();var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},a:(a,d,c,f)=>{for(var e=0,g=0;g<c;g++){var t=D[d>>2],Q=D[d+4>>2];d+=8;for(var y=0;y<Q;y++){var R=a,z=C[t+y],A=P[R];0===z||10===z?((1===R?r:u)(T(A)),A.length=0):A.push(z)}e+=Q}D[f>>2]=e;return 0}},
|
||||
Y;
|
||||
Y=await (async function(){function a(c){c=Y=c.exports;b._ImagingBlend=c.e;b._ImagingBoxBlur=c.f;b._ImagingGaussianBlur=c.g;b._ImagingCopy=c.h;b._ImagingCopy2=c.i;b._ImagingSectionEnter=c.j;b._ImagingSectionLeave=c.k;b._imageFromRGBA=c.l;b._imageMode=c.m;b._imageWidth=c.n;b._imageHeight=c.o;b._imageLinesize=c.p;b._imageBlock=c.q;b._blurHashForImage=c.r;b._ImagingFlipLeftRight=c.s;b._ImagingFlipTopBottom=c.t;b._ImagingRotate90=c.u;b._ImagingTranspose=c.v;b._ImagingTransverse=c.w;b._ImagingRotate180=c.x;
|
||||
b._ImagingRotate270=c.y;b._ImagingTransform=c.z;b._ImagingPaletteNew=c.A;b._ImagingPaletteNewBrowser=c.B;b._ImagingPaletteDuplicate=c.C;b._ImagingPaletteDelete=c.D;b._ImagingPaletteCacheUpdate=c.E;b._ImagingPaletteCachePrepare=c.F;b._ImagingPaletteCacheDelete=c.G;b._ImagingResample=c.H;b._ImagingNewPrologueSubtype=c.I;b._ImagingNewPrologue=c.J;b._ImagingDelete=c.K;b._ImagingMemorySetBlocksMax=c.L;b._ImagingMemoryClearCache=c.M;b._ImagingNew=c.N;b._ImagingNewDirty=c.O;b._ImagingNewBlock=c.P;b._ImagingNew2Dirty=
|
||||
c.Q;b._ImagingCopyPalette=c.R;b._malloc=c.S;V=c.T;W=c.U;U=c.V;G=c.c;F();return Y}var d={a:X};if(b.instantiateWasm)return new Promise(c=>{b.instantiateWasm(d,(f,e)=>{c(a(f,e))})});H??=b.locateFile?b.locateFile("Imaging.wasm",m):m+"Imaging.wasm";return a((await K(d)).instance)}());
|
||||
(function(){function a(){b.calledRun=!0;if(!w){E=!0;Y.d();x?.(b);b.onRuntimeInitialized?.();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var d=b.postRun.shift();M.push(d)}L(M)}}if(b.preRun)for("function"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)O();L(N);b.setStatus?(b.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>b.setStatus(""),1);a()},1)):a()})();E?moduleRtn=b:moduleRtn=new Promise((a,d)=>{x=a;B=d});
|
||||
;return moduleRtn}})();if(typeof exports==="object"&&typeof module==="object"){module.exports=Module;module.exports.default=Module}else if(typeof define==="function"&&define["amd"])define([],()=>Module);
|
||||
async function single_init() {
|
||||
var m = await Module();
|
||||
|
||||
// Copyright (c) 2020 Famedly GmbH
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
this.Image = class Image {
|
||||
constructor(inst) {
|
||||
this._inst = inst;
|
||||
}
|
||||
|
||||
static fromRGBA(width, height, data) {
|
||||
const mem = m._malloc(width * height * 4);
|
||||
new Uint8ClampedArray(m.HEAPU8.buffer, mem, width * height * 4).set(data);
|
||||
return new Image(m._imageFromRGBA(width, height, mem));
|
||||
}
|
||||
|
||||
free() {
|
||||
m._ImagingDelete(this._inst);
|
||||
this._inst = null;
|
||||
}
|
||||
|
||||
get _mode() {
|
||||
return m._imageMode(this._inst);
|
||||
}
|
||||
|
||||
get mode() {
|
||||
return m.UTF8ToString(this._mode);
|
||||
}
|
||||
|
||||
get width() {
|
||||
return m._imageWidth(this._inst);
|
||||
}
|
||||
|
||||
get height() {
|
||||
return m._imageHeight(this._inst);
|
||||
}
|
||||
|
||||
get linesize() {
|
||||
return m._imageLinesize(this._inst);
|
||||
}
|
||||
|
||||
get block() {
|
||||
return new Uint8ClampedArray(m.HEAPU8.buffer, m._imageBlock(this._inst), this.height * this.linesize);
|
||||
}
|
||||
|
||||
copy() {
|
||||
return new Image(m._ImagingCopy(this._inst));
|
||||
}
|
||||
|
||||
blend(other, alpha) {
|
||||
return new Image(m._ImagingBlend(this._inst, other._inst, alpha));
|
||||
}
|
||||
|
||||
gaussianBlur(radius, passes) {
|
||||
const out = m._ImagingNewDirty(this._mode, this.width, this.height);
|
||||
m._ImagingGaussianBlur(out, this._inst, radius, passes);
|
||||
return new Image(out);
|
||||
}
|
||||
|
||||
rotate90() {
|
||||
const out = m._ImagingNewDirty(this._mode, this.height, this.width);
|
||||
m._ImagingRotate90(out, this._inst);
|
||||
return new Image(out);
|
||||
}
|
||||
|
||||
rotate180() {
|
||||
const out = m._ImagingNewDirty(this._mode, this.width, this.height);
|
||||
m._ImagingRotate180(out, this._inst);
|
||||
return new Image(out);
|
||||
}
|
||||
|
||||
rotate270() {
|
||||
const out = m._ImagingNewDirty(this._mode, this.height, this.width);
|
||||
m._ImagingRotate270(out, this._inst);
|
||||
return new Image(out);
|
||||
}
|
||||
|
||||
flipLeftRight() {
|
||||
const out = m._ImagingNewDirty(this._mode, this.width, this.height);
|
||||
m._ImagingFlipLeftRight(out, this._inst);
|
||||
return new Image(out);
|
||||
}
|
||||
|
||||
flipTopBottom() {
|
||||
const out = m._ImagingNewDirty(this._mode, this.width, this.height);
|
||||
m._ImagingFlipTopBottom(out, this._inst);
|
||||
return new Image(out);
|
||||
}
|
||||
|
||||
transpose() {
|
||||
const out = m._ImagingNewDirty(this._mode, this.height, this.width);
|
||||
m._ImagingTranspose(out, this._inst);
|
||||
return new Image(out);
|
||||
}
|
||||
|
||||
transverse() {
|
||||
const out = m._ImagingNewDirty(this._mode, this.height, this.width);
|
||||
m._ImagingTransverse(out, this._inst);
|
||||
return new Image(out);
|
||||
}
|
||||
|
||||
resample(width, height, mode) {
|
||||
const modeidx = ["nearest", "lanczos", "bilinear", "bicubic", "box", "hamming"].indexOf(mode.toString().split(".").slice(-1)[0]);
|
||||
const sp = m.stackSave();
|
||||
try {
|
||||
const box = m.stackAlloc(4 * 4);
|
||||
m.HEAPF32.set([0, 0, this.width, this.height], box / 4);
|
||||
return new Image(m._ImagingResample(this._inst, width, height, modeidx, box));
|
||||
} finally {
|
||||
m.stackRestore(sp);
|
||||
}
|
||||
}
|
||||
|
||||
toBlurhash(xComponents, yComponents) {
|
||||
return m.UTF8ToString(m._blurHashForImage(this._inst, xComponents, yComponents));
|
||||
}
|
||||
|
||||
static async loadEncodedPromise(bytes) {
|
||||
var url = URL.createObjectURL(new Blob([bytes]));
|
||||
try {
|
||||
var img = new window.Image();
|
||||
await new Promise(function(resolve, reject) {
|
||||
img.onload = resolve;
|
||||
img.onerror = reject;
|
||||
img.src = url;
|
||||
});
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = img.naturalWidth;
|
||||
canvas.height = img.naturalHeight;
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(img, 0, 0);
|
||||
var data = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
||||
return Image(data.width, data.height, data.data);
|
||||
} finally {
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
}
|
||||
|
||||
async toJpegPromise(quality) {
|
||||
const c = document.createElement("canvas");
|
||||
c.width = this.width;
|
||||
c.height = this.height;
|
||||
const im = new ImageData(this.block, c.width, c.height);
|
||||
const ctx = c.getContext("2d");
|
||||
ctx.putImageData(im, 0, 0);
|
||||
const blob = await new Promise(function(resolve, reject) {
|
||||
c.toBlob(resolve, "image/jpeg", {quality: quality / 100});
|
||||
});
|
||||
const arraybuf = await blob.arrayBuffer();
|
||||
return new Uint8Array(arraybuf);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var prom;
|
||||
|
||||
return {init() {
|
||||
if (!prom) prom = single_init.call(this);
|
||||
return prom;
|
||||
}};
|
||||
|
||||
})();
|
||||
|
|
@ -1 +0,0 @@
|
|||
assets/banner.png
assetassets/banner.pngassets/banner_transparent.png
assetassets/banner_transparent.pngassets/favicon.png
assetassets/favicon.pngassets/info-logo.png
assetassets/info-logo.pngassets/logo.png
assetassets/logo.pngassets/logo.svg
assetassets/logo.svgassets/logo_transparent.png
assetassets/logo_transparent.pngassets/sas-emoji.json
assetassets/sas-emoji.jsonassets/sounds/call.ogg
assetassets/sounds/call.oggassets/sounds/notification.ogg
assetassets/sounds/notification.oggassets/sounds/phone.ogg
assetassets/sounds/phone.ogg+assets/vodozemac/vodozemac_bindings_dart.js
asset+assets/vodozemac/vodozemac_bindings_dart.js0assets/vodozemac/vodozemac_bindings_dart_bg.wasm
asset0assets/vodozemac/vodozemac_bindings_dart_bg.wasm2packages/cupertino_icons/assets/CupertinoIcons.ttf
asset2packages/cupertino_icons/assets/CupertinoIcons.ttf4packages/flutter_map/lib/assets/flutter_map_logo.png
asset4packages/flutter_map/lib/assets/flutter_map_logo.png2packages/handy_window/assets/handy-window-dark.css
asset2packages/handy_window/assets/handy-window-dark.css-packages/handy_window/assets/handy-window.css
asset-packages/handy_window/assets/handy-window.css1packages/particles_network/shaders/particles.frag
asset1packages/particles_network/shaders/particles.frag7packages/record_web/assets/js/record.fixwebmduration.js
asset7packages/record_web/assets/js/record.fixwebmduration.js/packages/record_web/assets/js/record.worklet.js
asset/packages/record_web/assets/js/record.worklet.js)packages/wakelock_plus/assets/no_sleep.js
asset)packages/wakelock_plus/assets/no_sleep.js
|
||||
|
|
@ -1 +0,0 @@
|
|||
"DRUHEWFzc2V0cy9iYW5uZXIucG5nDAENAQcFYXNzZXQHEWFzc2V0cy9iYW5uZXIucG5nBx1hc3NldHMvYmFubmVyX3RyYW5zcGFyZW50LnBuZwwBDQEHBWFzc2V0Bx1hc3NldHMvYmFubmVyX3RyYW5zcGFyZW50LnBuZwcSYXNzZXRzL2Zhdmljb24ucG5nDAENAQcFYXNzZXQHEmFzc2V0cy9mYXZpY29uLnBuZwcUYXNzZXRzL2luZm8tbG9nby5wbmcMAQ0BBwVhc3NldAcUYXNzZXRzL2luZm8tbG9nby5wbmcHD2Fzc2V0cy9sb2dvLnBuZwwBDQEHBWFzc2V0Bw9hc3NldHMvbG9nby5wbmcHD2Fzc2V0cy9sb2dvLnN2ZwwBDQEHBWFzc2V0Bw9hc3NldHMvbG9nby5zdmcHG2Fzc2V0cy9sb2dvX3RyYW5zcGFyZW50LnBuZwwBDQEHBWFzc2V0Bxthc3NldHMvbG9nb190cmFuc3BhcmVudC5wbmcHFWFzc2V0cy9zYXMtZW1vamkuanNvbgwBDQEHBWFzc2V0BxVhc3NldHMvc2FzLWVtb2ppLmpzb24HFmFzc2V0cy9zb3VuZHMvY2FsbC5vZ2cMAQ0BBwVhc3NldAcWYXNzZXRzL3NvdW5kcy9jYWxsLm9nZwceYXNzZXRzL3NvdW5kcy9ub3RpZmljYXRpb24ub2dnDAENAQcFYXNzZXQHHmFzc2V0cy9zb3VuZHMvbm90aWZpY2F0aW9uLm9nZwcXYXNzZXRzL3NvdW5kcy9waG9uZS5vZ2cMAQ0BBwVhc3NldAcXYXNzZXRzL3NvdW5kcy9waG9uZS5vZ2cHK2Fzc2V0cy92b2RvemVtYWMvdm9kb3plbWFjX2JpbmRpbmdzX2RhcnQuanMMAQ0BBwVhc3NldAcrYXNzZXRzL3ZvZG96ZW1hYy92b2RvemVtYWNfYmluZGluZ3NfZGFydC5qcwcwYXNzZXRzL3ZvZG96ZW1hYy92b2RvemVtYWNfYmluZGluZ3NfZGFydF9iZy53YXNtDAENAQcFYXNzZXQHMGFzc2V0cy92b2RvemVtYWMvdm9kb3plbWFjX2JpbmRpbmdzX2RhcnRfYmcud2FzbQcycGFja2FnZXMvY3VwZXJ0aW5vX2ljb25zL2Fzc2V0cy9DdXBlcnRpbm9JY29ucy50dGYMAQ0BBwVhc3NldAcycGFja2FnZXMvY3VwZXJ0aW5vX2ljb25zL2Fzc2V0cy9DdXBlcnRpbm9JY29ucy50dGYHNHBhY2thZ2VzL2ZsdXR0ZXJfbWFwL2xpYi9hc3NldHMvZmx1dHRlcl9tYXBfbG9nby5wbmcMAQ0BBwVhc3NldAc0cGFja2FnZXMvZmx1dHRlcl9tYXAvbGliL2Fzc2V0cy9mbHV0dGVyX21hcF9sb2dvLnBuZwcycGFja2FnZXMvaGFuZHlfd2luZG93L2Fzc2V0cy9oYW5keS13aW5kb3ctZGFyay5jc3MMAQ0BBwVhc3NldAcycGFja2FnZXMvaGFuZHlfd2luZG93L2Fzc2V0cy9oYW5keS13aW5kb3ctZGFyay5jc3MHLXBhY2thZ2VzL2hhbmR5X3dpbmRvdy9hc3NldHMvaGFuZHktd2luZG93LmNzcwwBDQEHBWFzc2V0By1wYWNrYWdlcy9oYW5keV93aW5kb3cvYXNzZXRzL2hhbmR5LXdpbmRvdy5jc3MHMXBhY2thZ2VzL3BhcnRpY2xlc19uZXR3b3JrL3NoYWRlcnMvcGFydGljbGVzLmZyYWcMAQ0BBwVhc3NldAcxcGFja2FnZXMvcGFydGljbGVzX25ldHdvcmsvc2hhZGVycy9wYXJ0aWNsZXMuZnJhZwc3cGFja2FnZXMvcmVjb3JkX3dlYi9hc3NldHMvanMvcmVjb3JkLmZpeHdlYm1kdXJhdGlvbi5qcwwBDQEHBWFzc2V0BzdwYWNrYWdlcy9yZWNvcmRfd2ViL2Fzc2V0cy9qcy9yZWNvcmQuZml4d2VibWR1cmF0aW9uLmpzBy9wYWNrYWdlcy9yZWNvcmRfd2ViL2Fzc2V0cy9qcy9yZWNvcmQud29ya2xldC5qcwwBDQEHBWFzc2V0By9wYWNrYWdlcy9yZWNvcmRfd2ViL2Fzc2V0cy9qcy9yZWNvcmQud29ya2xldC5qcwcpcGFja2FnZXMvd2FrZWxvY2tfcGx1cy9hc3NldHMvbm9fc2xlZXAuanMMAQ0BBwVhc3NldAcpcGFja2FnZXMvd2FrZWxvY2tfcGx1cy9hc3NldHMvbm9fc2xlZXAuanM="
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"family":"MaterialIcons","fonts":[{"asset":"fonts/MaterialIcons-Regular.otf"}]},{"family":"packages/cupertino_icons/CupertinoIcons","fonts":[{"asset":"packages/cupertino_icons/assets/CupertinoIcons.ttf"}]}]
|
||||
39976
nightly/assets/NOTICES
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
|
@ -1,43 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 22.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 181.4 181.9" style="enable-background:new 0 0 181.4 181.9;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:url(#SVGID_1_);}
|
||||
.st1{fill:#F094BE;}
|
||||
.st2{fill:#4D3F92;}
|
||||
.st3{fill:#FFFFFF;}
|
||||
</style>
|
||||
<g id="Capa_1">
|
||||
<rect x="0" y="0" style="color:#FFFFFF" width="181.4" height="181.9" class="st3"/>
|
||||
</g>
|
||||
<g id="Capa_2">
|
||||
<g>
|
||||
<path class="st2" d="M151.6,95.1c1.5-0.3,2.8-1,3.8-2c4-5.3,0.8-11.8-4.5-12.6c-0.8,0-1.5-0.8-1.5-1.5c0-0.3,0-0.5,0-0.5
|
||||
c0.8-0.8,1.5-1.8,2.5-3.3c8.1-10.8,11.8-50.6,3.8-53.7c-9.8-3.3-29.7,6.3-38.3,17.4c-0.5-0.3-1-1-1-1.8c0.3-3-1.3-5.5-3.5-6.8
|
||||
c-4.5-2.3-8.8,0-10.6,3.3c-0.5,0.8-1.3,1.3-2,1c-0.8,0-1.5-0.8-1.5-1.5c-0.5-2.5-2-4.5-4.3-5.5c-4.8-2-9.8,0.8-10.6,5.3
|
||||
c-0.3,0.8-0.8,1.5-1.5,1.5c-0.8,0.3-1.5-0.3-2-1c-1.5-2.3-4-3.8-6.5-3.8c-4,0-7.6,3.3-7.8,7.3v0.3v0.3c0,0.8-0.5,1.5-1,1.8h-0.3
|
||||
c-8.3-10.8-28.5-20.7-38.5-17.4c-8.1,2.8-4.3,42.6,4,53.4c1.5,2,2.8,3.5,3.8,4.5c-0.3,0.8-1,1.5-1.8,1.5c-1.3,0-2.5,0.5-3.5,1.3
|
||||
c-5.3,5-2.3,12.1,3,13.4c0.8,0.3,1.5,1,1.5,1.8c0,0.8-0.5,1.8-1.3,2c-1,0.5-2,1-2.8,2c-4,5.8,0,12.3,5.5,12.3
|
||||
c0.8,0,1.5,0.5,1.8,1.3c0.3,0.8,0.3,1.5-0.5,2c-1.5,1.5-2.3,3.5-2,5.5c0.3,2.8,2,5.3,4.8,6.5c1.5,0.8,3,0.8,4.5,0.5
|
||||
c0.8-0.3,1.5,0,2,0.8c0.5,0.5,0.5,1.5,0.3,2c-0.8,1.5-1,3.3-0.5,5c0.8,2.8,2.8,4.8,5.5,5.5c2.5,0.5,4.3-0.3,5.5-0.8
|
||||
c0.5-0.3-3.3,9.1-6,15.4c-0.8,2,1.3,4.3,3.5,3.3c8.3-3.8,22.2-10.3,22.2-9.8c0.5,5.3,6.5,9.1,12.3,5.3c1.3-0.8,2-2.3,2.3-3.5
|
||||
c0.3-0.8,1-1.5,2-1.5c1,0,1.8,0.5,2,1.5c0.3,1.3,0.8,2.3,1.8,3c5.8,4.5,12.3,0.8,12.8-4.8c0-0.8,0.5-1.5,1.3-1.8
|
||||
c0.8-0.3,1.5,0,2,0.5c1.5,1.5,3.3,2.5,5.3,2.5l0,0c2.5,0,5-1.3,6.5-3.8c1-1.5,1.3-3,1-5c0-0.8,0.3-1.5,0.8-2c0.5-0.5,1.5-0.5,2,0
|
||||
c1.5,0.8,3.3,1.3,5,0.8c2.8-0.5,5-2.8,5.8-5.3c0.5-1.8,0.3-3.5-0.5-5.3c-0.3-0.8-0.3-1.5,0.3-2s1.3-0.8,2-0.8
|
||||
c1.8,0.3,3.3,0.3,4.8-0.5c2.3-1,3.8-3,4.3-5.5c0.5-2.5-0.3-4.8-2-6.5c-0.5-0.5-0.8-1.3-0.5-2s1-1.3,1.8-1.3c1.8,0,3.8-0.5,5-2
|
||||
c4.3-4.5,2.3-10.6-2.5-12.6c-0.8-0.3-1.3-1-1.3-2C150.1,95.8,150.8,95.1,151.6,95.1z"/>
|
||||
<path class="st3" d="M131.4,42.2c0.5,1.5,0.5,3,0,4.5c-0.3,0.8,0,1.5,0.5,2s1.3,0.8,2,0.5c1-0.5,2-0.5,3-0.5c2.3,0,4.3,1,5.8,3
|
||||
c1,1.3,1.8,3,1.5,4.8c0,1.5-0.5,2.8-1.3,4c-0.5,0.5-0.5,1.5,0,2c0.3,0.3,0.5,0.8,1,0.8c1-0.3,2-1,2.8-2c4.5-6.3,5.3-26.2,0.8-27.7
|
||||
c-4.5-1.5-12.3,1.5-17.9,6C130.7,40.1,131.2,40.9,131.4,42.2z"/>
|
||||
<path class="st3" d="M39,63.6c0.3-0.3,0.5-0.5,0.8-0.8c0.5-0.8,0.3-1.5,0-2C38.5,59,38.2,57,38.5,55c0.5-2.8,2.8-5,5.5-5.8
|
||||
c1.5-0.5,3-0.3,4.5,0.3c0.8,0.3,1.5,0,2-0.5c0.5-0.5,0.8-1.3,0.5-2c-0.5-1.5-0.5-3,0-4.5c0.3-1,0.8-2,1.5-2.8
|
||||
c-5.5-4.5-13.9-7.8-18.4-6.3S30.4,54.8,35,61.1C36,62.6,37.2,63.3,39,63.6z"/>
|
||||
<g>
|
||||
<circle class="st3" cx="60.9" cy="94.6" r="9.3"/>
|
||||
<path class="st3" d="M100.7,94.6c0,5.3-4.3,9.3-9.3,9.3c-5.3,0-9.3-4.3-9.3-9.3S100.7,89.3,100.7,94.6z"/>
|
||||
<circle class="st3" cx="121.6" cy="94.6" r="9.3"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
|
@ -1 +0,0 @@
|
|||
window{background-color:#252525}window.csd.unified decoration-overlay{box-shadow:none}window.csd.unified:not(.solid-csd):not(.fullscreen):not(.maximized) decoration-overlay{box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}window.csd.unified decoration{box-shadow:0 3px 9px 1px rgba(0,0,0,.5)}window.csd.unified decoration:backdrop{box-shadow:0 3px 9px 1px rgba(0,0,0,0),0 2px 6px 2px rgba(0,0,0,.2)}headerbar{min-height:47px;background:#303030;box-shadow:inset 0 -1px rgba(0,0,0,.36);border:none}headerbar:backdrop{background:#242424}button.titlebutton{padding:4px;margin:1px}
|
||||
|
|
@ -1 +0,0 @@
|
|||
window{background-color:#fff}window.csd.unified decoration-overlay{box-shadow:none}window.csd.unified:not(.solid-csd):not(.fullscreen):not(.maximized) decoration-overlay{box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}window.csd.unified decoration{box-shadow:0 3px 9px 1px rgba(0,0,0,.5)}window.csd.unified decoration:backdrop{box-shadow:0 3px 9px 1px rgba(0,0,0,0),0 2px 6px 2px rgba(0,0,0,.2)}headerbar{min-height:47px;background:#ebebeb;box-shadow:inset 0 -1px rgba(0,0,0,.07);border:none}headerbar:backdrop{background:#fafafa}button.titlebutton{padding:4px;margin:1px}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"sksl": {
|
||||
"entrypoint": "particles_fragment_main",
|
||||
"shader": "// This SkSL shader is autogenerated by spirv-cross.\n\nfloat4 flutter_FragCoord;\n\nuniform vec2 uResolution;\nuniform float uLineDistance;\nuniform vec4 uColor;\nuniform vec4 uLineColor;\nuniform float uParticleCount;\nuniform vec2 uParticles[150];\n\nvec4 fragColor;\n\nvec2 FLT_flutter_local_FlutterFragCoord()\n{\n return flutter_FragCoord.xy;\n}\n\nvoid FLT_main()\n{\n vec2 uv = FLT_flutter_local_FlutterFragCoord();\n vec4 finalColor = vec4(0.0);\n float lineDistSq = uLineDistance * uLineDistance;\n for (int i = 0; i < 150; i++)\n {\n if (i >= int(uParticleCount))\n {\n break;\n }\n vec2 p = uParticles[i];\n vec2 diff = uv - p;\n float dSq = dot(diff, diff);\n if (dSq < 4.0)\n {\n finalColor = mix(finalColor, uColor, vec4(uColor.w));\n }\n }\n float searchDistSq = (uLineDistance + 2.0) * (uLineDistance + 2.0);\n for (int i_1 = 0; i_1 < 150; i_1++)\n {\n if (i_1 >= int(uParticleCount))\n {\n break;\n }\n vec2 p1 = uParticles[i_1];\n vec2 diff1 = uv - p1;\n if (dot(diff1, diff1) > searchDistSq)\n {\n continue;\n }\n for (int j = 0; j < 150; j++)\n {\n if (j <= i_1)\n {\n continue;\n }\n if (j >= int(uParticleCount))\n {\n break;\n }\n vec2 p2 = uParticles[j];\n vec2 diff2 = uv - p2;\n if (dot(diff2, diff2) > searchDistSq)\n {\n continue;\n }\n vec2 diff_1 = p1 - p2;\n float distSq = dot(diff_1, diff_1);\n if (distSq < lineDistSq)\n {\n vec2 pa = uv - p1;\n vec2 ba = p2 - p1;\n float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);\n vec2 dVec = pa - (ba * h);\n float dLineSq = dot(dVec, dVec);\n if (dLineSq < 1.0)\n {\n float dist = sqrt(distSq);\n float opacity = 1.0 - (dist / uLineDistance);\n vec4 lineColor = uLineColor;\n lineColor.w *= opacity;\n finalColor = mix(finalColor, lineColor, vec4(lineColor.w));\n }\n }\n }\n }\n fragColor = finalColor;\n}\n\nhalf4 main(float2 iFragCoord)\n{\n flutter_FragCoord = float4(iFragCoord, 0, 0);\n FLT_main();\n return fragColor;\n}\n",
|
||||
"stage": 1,
|
||||
"uniforms": [
|
||||
{
|
||||
"array_elements": 0,
|
||||
"bit_width": 32,
|
||||
"columns": 1,
|
||||
"location": 0,
|
||||
"name": "uResolution",
|
||||
"rows": 2,
|
||||
"type": 10
|
||||
},
|
||||
{
|
||||
"array_elements": 0,
|
||||
"bit_width": 32,
|
||||
"columns": 1,
|
||||
"location": 1,
|
||||
"name": "uLineDistance",
|
||||
"rows": 1,
|
||||
"type": 10
|
||||
},
|
||||
{
|
||||
"array_elements": 0,
|
||||
"bit_width": 32,
|
||||
"columns": 1,
|
||||
"location": 2,
|
||||
"name": "uColor",
|
||||
"rows": 4,
|
||||
"type": 10
|
||||
},
|
||||
{
|
||||
"array_elements": 0,
|
||||
"bit_width": 32,
|
||||
"columns": 1,
|
||||
"location": 3,
|
||||
"name": "uLineColor",
|
||||
"rows": 4,
|
||||
"type": 10
|
||||
},
|
||||
{
|
||||
"array_elements": 0,
|
||||
"bit_width": 32,
|
||||
"columns": 1,
|
||||
"location": 4,
|
||||
"name": "uParticleCount",
|
||||
"rows": 1,
|
||||
"type": 10
|
||||
},
|
||||
{
|
||||
"array_elements": 150,
|
||||
"bit_width": 32,
|
||||
"columns": 1,
|
||||
"location": 5,
|
||||
"name": "uParticles",
|
||||
"rows": 2,
|
||||
"type": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,507 +0,0 @@
|
|||
(function (name, definition) {
|
||||
window.jsFixWebmDuration = definition();
|
||||
})('fix-webm-duration', function () {
|
||||
/*
|
||||
* This is the list of possible WEBM file sections by their IDs.
|
||||
* Possible types: Container, Binary, Uint, Int, String, Float, Date
|
||||
*/
|
||||
var sections = {
|
||||
0xa45dfa3: { name: 'EBML', type: 'Container' },
|
||||
0x286: { name: 'EBMLVersion', type: 'Uint' },
|
||||
0x2f7: { name: 'EBMLReadVersion', type: 'Uint' },
|
||||
0x2f2: { name: 'EBMLMaxIDLength', type: 'Uint' },
|
||||
0x2f3: { name: 'EBMLMaxSizeLength', type: 'Uint' },
|
||||
0x282: { name: 'DocType', type: 'String' },
|
||||
0x287: { name: 'DocTypeVersion', type: 'Uint' },
|
||||
0x285: { name: 'DocTypeReadVersion', type: 'Uint' },
|
||||
0x6c: { name: 'Void', type: 'Binary' },
|
||||
0x3f: { name: 'CRC-32', type: 'Binary' },
|
||||
0xb538667: { name: 'SignatureSlot', type: 'Container' },
|
||||
0x3e8a: { name: 'SignatureAlgo', type: 'Uint' },
|
||||
0x3e9a: { name: 'SignatureHash', type: 'Uint' },
|
||||
0x3ea5: { name: 'SignaturePublicKey', type: 'Binary' },
|
||||
0x3eb5: { name: 'Signature', type: 'Binary' },
|
||||
0x3e5b: { name: 'SignatureElements', type: 'Container' },
|
||||
0x3e7b: { name: 'SignatureElementList', type: 'Container' },
|
||||
0x2532: { name: 'SignedElement', type: 'Binary' },
|
||||
0x8538067: { name: 'Segment', type: 'Container' },
|
||||
0x14d9b74: { name: 'SeekHead', type: 'Container' },
|
||||
0xdbb: { name: 'Seek', type: 'Container' },
|
||||
0x13ab: { name: 'SeekID', type: 'Binary' },
|
||||
0x13ac: { name: 'SeekPosition', type: 'Uint' },
|
||||
0x549a966: { name: 'Info', type: 'Container' },
|
||||
0x33a4: { name: 'SegmentUID', type: 'Binary' },
|
||||
0x3384: { name: 'SegmentFilename', type: 'String' },
|
||||
0x1cb923: { name: 'PrevUID', type: 'Binary' },
|
||||
0x1c83ab: { name: 'PrevFilename', type: 'String' },
|
||||
0x1eb923: { name: 'NextUID', type: 'Binary' },
|
||||
0x1e83bb: { name: 'NextFilename', type: 'String' },
|
||||
0x444: { name: 'SegmentFamily', type: 'Binary' },
|
||||
0x2924: { name: 'ChapterTranslate', type: 'Container' },
|
||||
0x29fc: { name: 'ChapterTranslateEditionUID', type: 'Uint' },
|
||||
0x29bf: { name: 'ChapterTranslateCodec', type: 'Uint' },
|
||||
0x29a5: { name: 'ChapterTranslateID', type: 'Binary' },
|
||||
0xad7b1: { name: 'TimecodeScale', type: 'Uint' },
|
||||
0x489: { name: 'Duration', type: 'Float' },
|
||||
0x461: { name: 'DateUTC', type: 'Date' },
|
||||
0x3ba9: { name: 'Title', type: 'String' },
|
||||
0xd80: { name: 'MuxingApp', type: 'String' },
|
||||
0x1741: { name: 'WritingApp', type: 'String' },
|
||||
// 0xf43b675: { name: 'Cluster', type: 'Container' },
|
||||
0x67: { name: 'Timecode', type: 'Uint' },
|
||||
0x1854: { name: 'SilentTracks', type: 'Container' },
|
||||
0x18d7: { name: 'SilentTrackNumber', type: 'Uint' },
|
||||
0x27: { name: 'Position', type: 'Uint' },
|
||||
0x2b: { name: 'PrevSize', type: 'Uint' },
|
||||
0x23: { name: 'SimpleBlock', type: 'Binary' },
|
||||
0x20: { name: 'BlockGroup', type: 'Container' },
|
||||
0x21: { name: 'Block', type: 'Binary' },
|
||||
0x22: { name: 'BlockVirtual', type: 'Binary' },
|
||||
0x35a1: { name: 'BlockAdditions', type: 'Container' },
|
||||
0x26: { name: 'BlockMore', type: 'Container' },
|
||||
0x6e: { name: 'BlockAddID', type: 'Uint' },
|
||||
0x25: { name: 'BlockAdditional', type: 'Binary' },
|
||||
0x1b: { name: 'BlockDuration', type: 'Uint' },
|
||||
0x7a: { name: 'ReferencePriority', type: 'Uint' },
|
||||
0x7b: { name: 'ReferenceBlock', type: 'Int' },
|
||||
0x7d: { name: 'ReferenceVirtual', type: 'Int' },
|
||||
0x24: { name: 'CodecState', type: 'Binary' },
|
||||
0x35a2: { name: 'DiscardPadding', type: 'Int' },
|
||||
0xe: { name: 'Slices', type: 'Container' },
|
||||
0x68: { name: 'TimeSlice', type: 'Container' },
|
||||
0x4c: { name: 'LaceNumber', type: 'Uint' },
|
||||
0x4d: { name: 'FrameNumber', type: 'Uint' },
|
||||
0x4b: { name: 'BlockAdditionID', type: 'Uint' },
|
||||
0x4e: { name: 'Delay', type: 'Uint' },
|
||||
0x4f: { name: 'SliceDuration', type: 'Uint' },
|
||||
0x48: { name: 'ReferenceFrame', type: 'Container' },
|
||||
0x49: { name: 'ReferenceOffset', type: 'Uint' },
|
||||
0x4a: { name: 'ReferenceTimeCode', type: 'Uint' },
|
||||
0x2f: { name: 'EncryptedBlock', type: 'Binary' },
|
||||
0x654ae6b: { name: 'Tracks', type: 'Container' },
|
||||
0x2e: { name: 'TrackEntry', type: 'Container' },
|
||||
0x57: { name: 'TrackNumber', type: 'Uint' },
|
||||
0x33c5: { name: 'TrackUID', type: 'Uint' },
|
||||
0x3: { name: 'TrackType', type: 'Uint' },
|
||||
0x39: { name: 'FlagEnabled', type: 'Uint' },
|
||||
0x8: { name: 'FlagDefault', type: 'Uint' },
|
||||
0x15aa: { name: 'FlagForced', type: 'Uint' },
|
||||
0x1c: { name: 'FlagLacing', type: 'Uint' },
|
||||
0x2de7: { name: 'MinCache', type: 'Uint' },
|
||||
0x2df8: { name: 'MaxCache', type: 'Uint' },
|
||||
0x3e383: { name: 'DefaultDuration', type: 'Uint' },
|
||||
0x34e7a: { name: 'DefaultDecodedFieldDuration', type: 'Uint' },
|
||||
0x3314f: { name: 'TrackTimecodeScale', type: 'Float' },
|
||||
0x137f: { name: 'TrackOffset', type: 'Int' },
|
||||
0x15ee: { name: 'MaxBlockAdditionID', type: 'Uint' },
|
||||
0x136e: { name: 'Name', type: 'String' },
|
||||
0x2b59c: { name: 'Language', type: 'String' },
|
||||
0x6: { name: 'CodecID', type: 'String' },
|
||||
0x23a2: { name: 'CodecPrivate', type: 'Binary' },
|
||||
0x58688: { name: 'CodecName', type: 'String' },
|
||||
0x3446: { name: 'AttachmentLink', type: 'Uint' },
|
||||
0x1a9697: { name: 'CodecSettings', type: 'String' },
|
||||
0x1b4040: { name: 'CodecInfoURL', type: 'String' },
|
||||
0x6b240: { name: 'CodecDownloadURL', type: 'String' },
|
||||
0x2a: { name: 'CodecDecodeAll', type: 'Uint' },
|
||||
0x2fab: { name: 'TrackOverlay', type: 'Uint' },
|
||||
0x16aa: { name: 'CodecDelay', type: 'Uint' },
|
||||
0x16bb: { name: 'SeekPreRoll', type: 'Uint' },
|
||||
0x2624: { name: 'TrackTranslate', type: 'Container' },
|
||||
0x26fc: { name: 'TrackTranslateEditionUID', type: 'Uint' },
|
||||
0x26bf: { name: 'TrackTranslateCodec', type: 'Uint' },
|
||||
0x26a5: { name: 'TrackTranslateTrackID', type: 'Binary' },
|
||||
0x60: { name: 'Video', type: 'Container' },
|
||||
0x1a: { name: 'FlagInterlaced', type: 'Uint' },
|
||||
0x13b8: { name: 'StereoMode', type: 'Uint' },
|
||||
0x13c0: { name: 'AlphaMode', type: 'Uint' },
|
||||
0x13b9: { name: 'OldStereoMode', type: 'Uint' },
|
||||
0x30: { name: 'PixelWidth', type: 'Uint' },
|
||||
0x3a: { name: 'PixelHeight', type: 'Uint' },
|
||||
0x14aa: { name: 'PixelCropBottom', type: 'Uint' },
|
||||
0x14bb: { name: 'PixelCropTop', type: 'Uint' },
|
||||
0x14cc: { name: 'PixelCropLeft', type: 'Uint' },
|
||||
0x14dd: { name: 'PixelCropRight', type: 'Uint' },
|
||||
0x14b0: { name: 'DisplayWidth', type: 'Uint' },
|
||||
0x14ba: { name: 'DisplayHeight', type: 'Uint' },
|
||||
0x14b2: { name: 'DisplayUnit', type: 'Uint' },
|
||||
0x14b3: { name: 'AspectRatioType', type: 'Uint' },
|
||||
0xeb524: { name: 'ColourSpace', type: 'Binary' },
|
||||
0xfb523: { name: 'GammaValue', type: 'Float' },
|
||||
0x383e3: { name: 'FrameRate', type: 'Float' },
|
||||
0x61: { name: 'Audio', type: 'Container' },
|
||||
0x35: { name: 'SamplingFrequency', type: 'Float' },
|
||||
0x38b5: { name: 'OutputSamplingFrequency', type: 'Float' },
|
||||
0x1f: { name: 'Channels', type: 'Uint' },
|
||||
0x3d7b: { name: 'ChannelPositions', type: 'Binary' },
|
||||
0x2264: { name: 'BitDepth', type: 'Uint' },
|
||||
0x62: { name: 'TrackOperation', type: 'Container' },
|
||||
0x63: { name: 'TrackCombinePlanes', type: 'Container' },
|
||||
0x64: { name: 'TrackPlane', type: 'Container' },
|
||||
0x65: { name: 'TrackPlaneUID', type: 'Uint' },
|
||||
0x66: { name: 'TrackPlaneType', type: 'Uint' },
|
||||
0x69: { name: 'TrackJoinBlocks', type: 'Container' },
|
||||
0x6d: { name: 'TrackJoinUID', type: 'Uint' },
|
||||
0x40: { name: 'TrickTrackUID', type: 'Uint' },
|
||||
0x41: { name: 'TrickTrackSegmentUID', type: 'Binary' },
|
||||
0x46: { name: 'TrickTrackFlag', type: 'Uint' },
|
||||
0x47: { name: 'TrickMasterTrackUID', type: 'Uint' },
|
||||
0x44: { name: 'TrickMasterTrackSegmentUID', type: 'Binary' },
|
||||
0x2d80: { name: 'ContentEncodings', type: 'Container' },
|
||||
0x2240: { name: 'ContentEncoding', type: 'Container' },
|
||||
0x1031: { name: 'ContentEncodingOrder', type: 'Uint' },
|
||||
0x1032: { name: 'ContentEncodingScope', type: 'Uint' },
|
||||
0x1033: { name: 'ContentEncodingType', type: 'Uint' },
|
||||
0x1034: { name: 'ContentCompression', type: 'Container' },
|
||||
0x254: { name: 'ContentCompAlgo', type: 'Uint' },
|
||||
0x255: { name: 'ContentCompSettings', type: 'Binary' },
|
||||
0x1035: { name: 'ContentEncryption', type: 'Container' },
|
||||
0x7e1: { name: 'ContentEncAlgo', type: 'Uint' },
|
||||
0x7e2: { name: 'ContentEncKeyID', type: 'Binary' },
|
||||
0x7e3: { name: 'ContentSignature', type: 'Binary' },
|
||||
0x7e4: { name: 'ContentSigKeyID', type: 'Binary' },
|
||||
0x7e5: { name: 'ContentSigAlgo', type: 'Uint' },
|
||||
0x7e6: { name: 'ContentSigHashAlgo', type: 'Uint' },
|
||||
0xc53bb6b: { name: 'Cues', type: 'Container' },
|
||||
0x3b: { name: 'CuePoint', type: 'Container' },
|
||||
0x33: { name: 'CueTime', type: 'Uint' },
|
||||
0x37: { name: 'CueTrackPositions', type: 'Container' },
|
||||
0x77: { name: 'CueTrack', type: 'Uint' },
|
||||
0x71: { name: 'CueClusterPosition', type: 'Uint' },
|
||||
0x70: { name: 'CueRelativePosition', type: 'Uint' },
|
||||
0x32: { name: 'CueDuration', type: 'Uint' },
|
||||
0x1378: { name: 'CueBlockNumber', type: 'Uint' },
|
||||
0x6a: { name: 'CueCodecState', type: 'Uint' },
|
||||
0x5b: { name: 'CueReference', type: 'Container' },
|
||||
0x16: { name: 'CueRefTime', type: 'Uint' },
|
||||
0x17: { name: 'CueRefCluster', type: 'Uint' },
|
||||
0x135f: { name: 'CueRefNumber', type: 'Uint' },
|
||||
0x6b: { name: 'CueRefCodecState', type: 'Uint' },
|
||||
0x941a469: { name: 'Attachments', type: 'Container' },
|
||||
0x21a7: { name: 'AttachedFile', type: 'Container' },
|
||||
0x67e: { name: 'FileDescription', type: 'String' },
|
||||
0x66e: { name: 'FileName', type: 'String' },
|
||||
0x660: { name: 'FileMimeType', type: 'String' },
|
||||
0x65c: { name: 'FileData', type: 'Binary' },
|
||||
0x6ae: { name: 'FileUID', type: 'Uint' },
|
||||
0x675: { name: 'FileReferral', type: 'Binary' },
|
||||
0x661: { name: 'FileUsedStartTime', type: 'Uint' },
|
||||
0x662: { name: 'FileUsedEndTime', type: 'Uint' },
|
||||
0x43a770: { name: 'Chapters', type: 'Container' },
|
||||
0x5b9: { name: 'EditionEntry', type: 'Container' },
|
||||
0x5bc: { name: 'EditionUID', type: 'Uint' },
|
||||
0x5bd: { name: 'EditionFlagHidden', type: 'Uint' },
|
||||
0x5db: { name: 'EditionFlagDefault', type: 'Uint' },
|
||||
0x5dd: { name: 'EditionFlagOrdered', type: 'Uint' },
|
||||
0x36: { name: 'ChapterAtom', type: 'Container' },
|
||||
0x33c4: { name: 'ChapterUID', type: 'Uint' },
|
||||
0x1654: { name: 'ChapterStringUID', type: 'String' },
|
||||
0x11: { name: 'ChapterTimeStart', type: 'Uint' },
|
||||
0x12: { name: 'ChapterTimeEnd', type: 'Uint' },
|
||||
0x18: { name: 'ChapterFlagHidden', type: 'Uint' },
|
||||
0x598: { name: 'ChapterFlagEnabled', type: 'Uint' },
|
||||
0x2e67: { name: 'ChapterSegmentUID', type: 'Binary' },
|
||||
0x2ebc: { name: 'ChapterSegmentEditionUID', type: 'Uint' },
|
||||
0x23c3: { name: 'ChapterPhysicalEquiv', type: 'Uint' },
|
||||
0xf: { name: 'ChapterTrack', type: 'Container' },
|
||||
0x9: { name: 'ChapterTrackNumber', type: 'Uint' },
|
||||
0x0: { name: 'ChapterDisplay', type: 'Container' },
|
||||
0x5: { name: 'ChapString', type: 'String' },
|
||||
0x37c: { name: 'ChapLanguage', type: 'String' },
|
||||
0x37e: { name: 'ChapCountry', type: 'String' },
|
||||
0x2944: { name: 'ChapProcess', type: 'Container' },
|
||||
0x2955: { name: 'ChapProcessCodecID', type: 'Uint' },
|
||||
0x50d: { name: 'ChapProcessPrivate', type: 'Binary' },
|
||||
0x2911: { name: 'ChapProcessCommand', type: 'Container' },
|
||||
0x2922: { name: 'ChapProcessTime', type: 'Uint' },
|
||||
0x2933: { name: 'ChapProcessData', type: 'Binary' },
|
||||
0x254c367: { name: 'Tags', type: 'Container' },
|
||||
0x3373: { name: 'Tag', type: 'Container' },
|
||||
0x23c0: { name: 'Targets', type: 'Container' },
|
||||
0x28ca: { name: 'TargetTypeValue', type: 'Uint' },
|
||||
0x23ca: { name: 'TargetType', type: 'String' },
|
||||
0x23c5: { name: 'TagTrackUID', type: 'Uint' },
|
||||
0x23c9: { name: 'TagEditionUID', type: 'Uint' },
|
||||
0x23c4: { name: 'TagChapterUID', type: 'Uint' },
|
||||
0x23c6: { name: 'TagAttachmentUID', type: 'Uint' },
|
||||
0x27c8: { name: 'SimpleTag', type: 'Container' },
|
||||
0x5a3: { name: 'TagName', type: 'String' },
|
||||
0x47a: { name: 'TagLanguage', type: 'String' },
|
||||
0x484: { name: 'TagDefault', type: 'Uint' },
|
||||
0x487: { name: 'TagString', type: 'String' },
|
||||
0x485: { name: 'TagBinary', type: 'Binary' }
|
||||
};
|
||||
|
||||
function doInherit(newClass, baseClass) {
|
||||
newClass.prototype = Object.create(baseClass.prototype);
|
||||
newClass.prototype.constructor = newClass;
|
||||
}
|
||||
|
||||
function WebmBase(name, type) {
|
||||
this.name = name || 'Unknown';
|
||||
this.type = type || 'Unknown';
|
||||
}
|
||||
WebmBase.prototype.updateBySource = function () { };
|
||||
WebmBase.prototype.setSource = function (source) {
|
||||
this.source = source;
|
||||
this.updateBySource();
|
||||
};
|
||||
WebmBase.prototype.updateByData = function () { };
|
||||
WebmBase.prototype.setData = function (data) {
|
||||
this.data = data;
|
||||
this.updateByData();
|
||||
};
|
||||
|
||||
function WebmUint(name, type) {
|
||||
WebmBase.call(this, name, type || 'Uint');
|
||||
}
|
||||
doInherit(WebmUint, WebmBase);
|
||||
function padHex(hex) {
|
||||
return hex.length % 2 === 1 ? '0' + hex : hex;
|
||||
}
|
||||
WebmUint.prototype.updateBySource = function () {
|
||||
// use hex representation of a number instead of number value
|
||||
this.data = '';
|
||||
for (var i = 0; i < this.source.length; i++) {
|
||||
var hex = this.source[i].toString(16);
|
||||
this.data += padHex(hex);
|
||||
}
|
||||
};
|
||||
WebmUint.prototype.updateByData = function () {
|
||||
var length = this.data.length / 2;
|
||||
this.source = new Uint8Array(length);
|
||||
for (var i = 0; i < length; i++) {
|
||||
var hex = this.data.substr(i * 2, 2);
|
||||
this.source[i] = parseInt(hex, 16);
|
||||
}
|
||||
};
|
||||
WebmUint.prototype.getValue = function () {
|
||||
return parseInt(this.data, 16);
|
||||
};
|
||||
WebmUint.prototype.setValue = function (value) {
|
||||
this.setData(padHex(value.toString(16)));
|
||||
};
|
||||
|
||||
function WebmFloat(name, type) {
|
||||
WebmBase.call(this, name, type || 'Float');
|
||||
}
|
||||
doInherit(WebmFloat, WebmBase);
|
||||
WebmFloat.prototype.getFloatArrayType = function () {
|
||||
return this.source && this.source.length === 4 ? Float32Array : Float64Array;
|
||||
};
|
||||
WebmFloat.prototype.updateBySource = function () {
|
||||
var byteArray = this.source.reverse();
|
||||
var floatArrayType = this.getFloatArrayType();
|
||||
var floatArray = new floatArrayType(byteArray.buffer);
|
||||
this.data = floatArray[0];
|
||||
};
|
||||
WebmFloat.prototype.updateByData = function () {
|
||||
var floatArrayType = this.getFloatArrayType();
|
||||
var floatArray = new floatArrayType([this.data]);
|
||||
var byteArray = new Uint8Array(floatArray.buffer);
|
||||
this.source = byteArray.reverse();
|
||||
};
|
||||
WebmFloat.prototype.getValue = function () {
|
||||
return this.data;
|
||||
};
|
||||
WebmFloat.prototype.setValue = function (value) {
|
||||
this.setData(value);
|
||||
};
|
||||
|
||||
function WebmContainer(name, type) {
|
||||
WebmBase.call(this, name, type || 'Container');
|
||||
}
|
||||
doInherit(WebmContainer, WebmBase);
|
||||
WebmContainer.prototype.readByte = function () {
|
||||
return this.source[this.offset++];
|
||||
};
|
||||
WebmContainer.prototype.readUint = function () {
|
||||
var firstByte = this.readByte();
|
||||
var bytes = 8 - firstByte.toString(2).length;
|
||||
var value = firstByte - (1 << (7 - bytes));
|
||||
for (var i = 0; i < bytes; i++) {
|
||||
// don't use bit operators to support x86
|
||||
value *= 256;
|
||||
value += this.readByte();
|
||||
}
|
||||
return value;
|
||||
};
|
||||
WebmContainer.prototype.updateBySource = function () {
|
||||
this.data = [];
|
||||
for (this.offset = 0; this.offset < this.source.length; this.offset = end) {
|
||||
var id = this.readUint();
|
||||
var len = this.readUint();
|
||||
var end = Math.min(this.offset + len, this.source.length);
|
||||
var data = this.source.slice(this.offset, end);
|
||||
|
||||
var info = sections[id] || { name: 'Unknown', type: 'Unknown' };
|
||||
var ctr = WebmBase;
|
||||
switch (info.type) {
|
||||
case 'Container':
|
||||
ctr = WebmContainer;
|
||||
break;
|
||||
case 'Uint':
|
||||
ctr = WebmUint;
|
||||
break;
|
||||
case 'Float':
|
||||
ctr = WebmFloat;
|
||||
break;
|
||||
}
|
||||
var section = new ctr(info.name, info.type);
|
||||
section.setSource(data);
|
||||
this.data.push({
|
||||
id: id,
|
||||
idHex: id.toString(16),
|
||||
data: section
|
||||
});
|
||||
}
|
||||
};
|
||||
WebmContainer.prototype.writeUint = function (x, draft) {
|
||||
for (var bytes = 1, flag = 0x80; x >= flag && bytes < 8; bytes++, flag *= 0x80) { }
|
||||
|
||||
if (!draft) {
|
||||
var value = flag + x;
|
||||
for (var i = bytes - 1; i >= 0; i--) {
|
||||
// don't use bit operators to support x86
|
||||
var c = value % 256;
|
||||
this.source[this.offset + i] = c;
|
||||
value = (value - c) / 256;
|
||||
}
|
||||
}
|
||||
|
||||
this.offset += bytes;
|
||||
};
|
||||
WebmContainer.prototype.writeSections = function (draft) {
|
||||
this.offset = 0;
|
||||
for (var i = 0; i < this.data.length; i++) {
|
||||
var section = this.data[i],
|
||||
content = section.data.source,
|
||||
contentLength = content.length;
|
||||
this.writeUint(section.id, draft);
|
||||
this.writeUint(contentLength, draft);
|
||||
if (!draft) {
|
||||
this.source.set(content, this.offset);
|
||||
}
|
||||
this.offset += contentLength;
|
||||
}
|
||||
return this.offset;
|
||||
};
|
||||
WebmContainer.prototype.updateByData = function () {
|
||||
// run without accessing this.source to determine total length - need to know it to create Uint8Array
|
||||
var length = this.writeSections('draft');
|
||||
this.source = new Uint8Array(length);
|
||||
// now really write data
|
||||
this.writeSections();
|
||||
};
|
||||
WebmContainer.prototype.getSectionById = function (id) {
|
||||
for (var i = 0; i < this.data.length; i++) {
|
||||
var section = this.data[i];
|
||||
if (section.id === id) {
|
||||
return section.data;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
function WebmFile(source) {
|
||||
WebmContainer.call(this, 'File', 'File');
|
||||
this.setSource(source);
|
||||
}
|
||||
doInherit(WebmFile, WebmContainer);
|
||||
WebmFile.prototype.fixDuration = function (duration, options) {
|
||||
var logger = options && options.logger;
|
||||
if (logger === undefined) {
|
||||
logger = function (message) {
|
||||
console.log(message);
|
||||
};
|
||||
} else if (!logger) {
|
||||
logger = function () { };
|
||||
}
|
||||
|
||||
var segmentSection = this.getSectionById(0x8538067);
|
||||
if (!segmentSection) {
|
||||
logger('[fix-webm-duration] Segment section is missing');
|
||||
return false;
|
||||
}
|
||||
|
||||
var infoSection = segmentSection.getSectionById(0x549a966);
|
||||
if (!infoSection) {
|
||||
logger('[fix-webm-duration] Info section is missing');
|
||||
return false;
|
||||
}
|
||||
|
||||
var timeScaleSection = infoSection.getSectionById(0xad7b1);
|
||||
if (!timeScaleSection) {
|
||||
logger('[fix-webm-duration] TimecodeScale section is missing');
|
||||
return false;
|
||||
}
|
||||
|
||||
var durationSection = infoSection.getSectionById(0x489);
|
||||
if (durationSection) {
|
||||
if (durationSection.getValue() <= 0) {
|
||||
logger('[fix-webm-duration] Duration section is present, but the value is empty. Applying ' + duration.toLocaleString() + ' ms.');
|
||||
durationSection.setValue(duration);
|
||||
} else {
|
||||
logger('[fix-webm-duration] Duration section is present');
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
logger('[fix-webm-duration] Duration section is missing. Applying ' + duration.toLocaleString() + ' ms.');
|
||||
// append Duration section
|
||||
durationSection = new WebmFloat('Duration', 'Float');
|
||||
durationSection.setValue(duration);
|
||||
infoSection.data.push({
|
||||
id: 0x489,
|
||||
data: durationSection
|
||||
});
|
||||
}
|
||||
|
||||
// set default time scale to 1 millisecond (1000000 nanoseconds)
|
||||
timeScaleSection.setValue(1000000);
|
||||
infoSection.updateByData();
|
||||
segmentSection.updateByData();
|
||||
this.updateByData();
|
||||
|
||||
return true;
|
||||
};
|
||||
WebmFile.prototype.toBlob = function (mimeType) {
|
||||
return new Blob([this.source.buffer], { type: mimeType || 'audio/webm' });
|
||||
};
|
||||
|
||||
function fixWebmDuration(blob, duration, callback, options) {
|
||||
// The callback may be omitted - then the third argument is options
|
||||
if (typeof callback === "object") {
|
||||
options = callback;
|
||||
callback = undefined;
|
||||
}
|
||||
|
||||
if (!callback) {
|
||||
return new Promise(function (resolve) {
|
||||
fixWebmDuration(blob, duration, resolve, options);
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
var reader = new FileReader();
|
||||
reader.onloadend = function () {
|
||||
try {
|
||||
var file = new WebmFile(new Uint8Array(reader.result));
|
||||
if (file.fixDuration(duration, options)) {
|
||||
blob = file.toBlob(blob.type);
|
||||
}
|
||||
} catch (ex) {
|
||||
// ignore
|
||||
}
|
||||
callback(blob);
|
||||
};
|
||||
reader.readAsArrayBuffer(blob);
|
||||
} catch (ex) {
|
||||
callback(blob);
|
||||
}
|
||||
}
|
||||
|
||||
// Support AMD import default
|
||||
fixWebmDuration.default = fixWebmDuration;
|
||||
|
||||
return fixWebmDuration;
|
||||
});
|
||||
|
|
@ -1,407 +0,0 @@
|
|||
class RecorderProcessor extends AudioWorkletProcessor {
|
||||
static get parameterDescriptors() {
|
||||
return [
|
||||
{
|
||||
name: 'numChannels',
|
||||
defaultValue: 1,
|
||||
minValue: 1,
|
||||
maxValue: 16
|
||||
},
|
||||
{
|
||||
name: 'sampleRate',
|
||||
defaultValue: 48000,
|
||||
minValue: 8000,
|
||||
maxValue: 96000
|
||||
},
|
||||
{
|
||||
name: 'streamBufferSize',
|
||||
defaultValue: 2048,
|
||||
minValue: 256,
|
||||
maxValue: 8192
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
// Buffer size compromise between size and process call frequency
|
||||
_bufferSize = 2048
|
||||
// The current buffer fill level
|
||||
_bytesWritten = 0
|
||||
// Buffer per channel
|
||||
_buffers = []
|
||||
// Resampler (passthrough, down or up)
|
||||
_resampler = null
|
||||
// Config
|
||||
_numChannels = 1
|
||||
_sampleRate = 48000
|
||||
|
||||
constructor(options) {
|
||||
super(options)
|
||||
|
||||
this._numChannels = options.parameterData.numChannels
|
||||
this._sampleRate = options.parameterData.sampleRate
|
||||
this._bufferSize = options.parameterData.streamBufferSize
|
||||
|
||||
// Resampler(current context sample rate, desired sample rate, num channels, buffer size)
|
||||
// num channels is always 1 since we resample after interleaving channels
|
||||
this._resampler = new Resampler(sampleRate, this._sampleRate, 1, this._bufferSize * this._numChannels)
|
||||
|
||||
this.initBuffers()
|
||||
}
|
||||
|
||||
initBuffers() {
|
||||
this._bytesWritten = 0
|
||||
this._buffers = []
|
||||
|
||||
for (let channel = 0; channel < this._numChannels; channel++) {
|
||||
this._buffers[channel] = []
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isBufferEmpty() {
|
||||
return this._bytesWritten === 0
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isBufferFull() {
|
||||
return this._bytesWritten >= this._bufferSize
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Float32Array[][]} inputs
|
||||
* @returns {boolean}
|
||||
*/
|
||||
process(inputs) {
|
||||
if (this.isBufferFull()) {
|
||||
this.flush()
|
||||
}
|
||||
|
||||
const input = inputs[0]
|
||||
|
||||
if (input.length == 0) {
|
||||
// Sometimes, Firefox doesn't give any input. Skip this frame to not fail.
|
||||
return true
|
||||
}
|
||||
|
||||
for (let channel = 0; channel < this._numChannels; channel++) {
|
||||
// Push a copy of the array.
|
||||
// The underlying implementation may reuse it which will break the recording.
|
||||
this._buffers[channel].push([...input[channel % input.length]])
|
||||
}
|
||||
|
||||
this._bytesWritten += input[0].length
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
flush() {
|
||||
let channels = []
|
||||
for (let channel = 0; channel < this._numChannels; channel++) {
|
||||
channels.push(this.mergeFloat32Arrays(this._buffers[channel], this._bytesWritten))
|
||||
}
|
||||
|
||||
let interleaved = this.interleave(channels)
|
||||
|
||||
let resampled = this._resampler.resample(interleaved)
|
||||
|
||||
this.port.postMessage(this.floatTo16BitPCM(resampled))
|
||||
|
||||
this.initBuffers()
|
||||
}
|
||||
|
||||
mergeFloat32Arrays(arrays, bytesWritten) {
|
||||
let result = new Float32Array(bytesWritten)
|
||||
var offset = 0
|
||||
|
||||
for (let i = 0; i < arrays.length; i++) {
|
||||
result.set(arrays[i], offset)
|
||||
offset += arrays[i].length
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// Interleave data from channels from LLLLRRRR to LRLRLRLR
|
||||
interleave(channels) {
|
||||
if (channels === 1) {
|
||||
return channels[0]
|
||||
}
|
||||
|
||||
var length = 0
|
||||
for (let i = 0; i < channels.length; i++) {
|
||||
length += channels[i].length
|
||||
}
|
||||
|
||||
let result = new Float32Array(length)
|
||||
|
||||
var index = 0
|
||||
var inputIndex = 0
|
||||
|
||||
while (index < length) {
|
||||
for (let i = 0; i < channels.length; i++) {
|
||||
result[index] = channels[i][inputIndex]
|
||||
index++
|
||||
}
|
||||
|
||||
inputIndex++
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
floatTo16BitPCM(input) {
|
||||
let output = new DataView(new ArrayBuffer(input.length * 2))
|
||||
|
||||
for (let i = 0; i < input.length; i++) {
|
||||
let s = Math.max(-1, Math.min(1, input[i]))
|
||||
let s16 = s < 0 ? s * 0x8000 : s * 0x7FFF
|
||||
output.setInt16(i * 2, s16, true)
|
||||
}
|
||||
|
||||
return new Int16Array(output.buffer)
|
||||
}
|
||||
}
|
||||
|
||||
class Resampler {
|
||||
constructor(fromSampleRate, toSampleRate, channels, inputBufferSize) {
|
||||
|
||||
if (!fromSampleRate || !toSampleRate || !channels) {
|
||||
throw (new Error("Invalid settings specified for the resampler."));
|
||||
}
|
||||
this.resampler = null;
|
||||
this.fromSampleRate = fromSampleRate;
|
||||
this.toSampleRate = toSampleRate;
|
||||
this.channels = channels || 0;
|
||||
this.inputBufferSize = inputBufferSize;
|
||||
this.initialize()
|
||||
}
|
||||
|
||||
initialize() {
|
||||
if (this.fromSampleRate == this.toSampleRate) {
|
||||
|
||||
// Setup resampler bypass - Resampler just returns what was passed through
|
||||
this.resampler = (buffer) => {
|
||||
return buffer
|
||||
};
|
||||
this.ratioWeight = 1;
|
||||
|
||||
} else {
|
||||
if (this.fromSampleRate < this.toSampleRate) {
|
||||
|
||||
// Use generic linear interpolation if upsampling,
|
||||
// as linear interpolation produces a gradient that we want
|
||||
// and works fine with two input sample points per output in this case.
|
||||
this.linearInterpolation();
|
||||
this.lastWeight = 1;
|
||||
|
||||
} else {
|
||||
|
||||
// Custom resampler I wrote that doesn't skip samples
|
||||
// like standard linear interpolation in high downsampling.
|
||||
// This is more accurate than linear interpolation on downsampling.
|
||||
this.multiTap();
|
||||
this.tailExists = false;
|
||||
this.lastWeight = 0;
|
||||
}
|
||||
|
||||
// Initialize the internal buffer:
|
||||
this.initializeBuffers();
|
||||
this.ratioWeight = this.fromSampleRate / this.toSampleRate;
|
||||
}
|
||||
}
|
||||
|
||||
bufferSlice(sliceAmount) {
|
||||
|
||||
//Typed array and normal array buffer section referencing:
|
||||
try {
|
||||
return this.outputBuffer.subarray(0, sliceAmount);
|
||||
}
|
||||
catch (error) {
|
||||
try {
|
||||
//Regular array pass:
|
||||
this.outputBuffer.length = sliceAmount;
|
||||
return this.outputBuffer;
|
||||
}
|
||||
catch (error) {
|
||||
//Nightly Firefox 4 used to have the subarray function named as slice:
|
||||
return this.outputBuffer.slice(0, sliceAmount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
initializeBuffers() {
|
||||
this.outputBufferSize = (Math.ceil(this.inputBufferSize * this.toSampleRate / this.fromSampleRate / this.channels * 1.000000476837158203125) + this.channels) + this.channels;
|
||||
try {
|
||||
this.outputBuffer = new Float32Array(this.outputBufferSize);
|
||||
this.lastOutput = new Float32Array(this.channels);
|
||||
}
|
||||
catch (error) {
|
||||
this.outputBuffer = [];
|
||||
this.lastOutput = [];
|
||||
}
|
||||
}
|
||||
|
||||
linearInterpolation() {
|
||||
this.resampler = (buffer) => {
|
||||
let bufferLength = buffer.length,
|
||||
channels = this.channels,
|
||||
outLength,
|
||||
ratioWeight,
|
||||
weight,
|
||||
firstWeight,
|
||||
secondWeight,
|
||||
sourceOffset,
|
||||
outputOffset,
|
||||
outputBuffer,
|
||||
channel;
|
||||
|
||||
if ((bufferLength % channels) !== 0) {
|
||||
throw (new Error("Buffer was of incorrect sample length."));
|
||||
}
|
||||
if (bufferLength <= 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
outLength = this.outputBufferSize;
|
||||
ratioWeight = this.ratioWeight;
|
||||
weight = this.lastWeight;
|
||||
firstWeight = 0;
|
||||
secondWeight = 0;
|
||||
sourceOffset = 0;
|
||||
outputOffset = 0;
|
||||
outputBuffer = this.outputBuffer;
|
||||
|
||||
for (; weight < 1; weight += ratioWeight) {
|
||||
secondWeight = weight % 1;
|
||||
firstWeight = 1 - secondWeight;
|
||||
this.lastWeight = weight % 1;
|
||||
for (channel = 0; channel < this.channels; ++channel) {
|
||||
outputBuffer[outputOffset++] = (this.lastOutput[channel] * firstWeight) + (buffer[channel] * secondWeight);
|
||||
}
|
||||
}
|
||||
weight -= 1;
|
||||
for (bufferLength -= channels, sourceOffset = Math.floor(weight) * channels; outputOffset < outLength && sourceOffset < bufferLength;) {
|
||||
secondWeight = weight % 1;
|
||||
firstWeight = 1 - secondWeight;
|
||||
for (channel = 0; channel < this.channels; ++channel) {
|
||||
outputBuffer[outputOffset++] = (buffer[sourceOffset + ((channel > 0) ? (channel) : 0)] * firstWeight) + (buffer[sourceOffset + (channels + channel)] * secondWeight);
|
||||
}
|
||||
weight += ratioWeight;
|
||||
sourceOffset = Math.floor(weight) * channels;
|
||||
}
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
this.lastOutput[channel] = buffer[sourceOffset++];
|
||||
}
|
||||
return this.bufferSlice(outputOffset);
|
||||
};
|
||||
}
|
||||
|
||||
multiTap() {
|
||||
this.resampler = (buffer) => {
|
||||
let bufferLength = buffer.length,
|
||||
outLength,
|
||||
output_variable_list,
|
||||
channels = this.channels,
|
||||
ratioWeight,
|
||||
weight,
|
||||
channel,
|
||||
actualPosition,
|
||||
amountToNext,
|
||||
alreadyProcessedTail,
|
||||
outputBuffer,
|
||||
outputOffset,
|
||||
currentPosition;
|
||||
|
||||
if ((bufferLength % channels) !== 0) {
|
||||
throw (new Error("Buffer was of incorrect sample length."));
|
||||
}
|
||||
if (bufferLength <= 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
outLength = this.outputBufferSize;
|
||||
output_variable_list = [];
|
||||
ratioWeight = this.ratioWeight;
|
||||
weight = 0;
|
||||
actualPosition = 0;
|
||||
amountToNext = 0;
|
||||
alreadyProcessedTail = !this.tailExists;
|
||||
this.tailExists = false;
|
||||
outputBuffer = this.outputBuffer;
|
||||
outputOffset = 0;
|
||||
currentPosition = 0;
|
||||
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
output_variable_list[channel] = 0;
|
||||
}
|
||||
|
||||
do {
|
||||
if (alreadyProcessedTail) {
|
||||
weight = ratioWeight;
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
output_variable_list[channel] = 0;
|
||||
}
|
||||
} else {
|
||||
weight = this.lastWeight;
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
output_variable_list[channel] = this.lastOutput[channel];
|
||||
}
|
||||
alreadyProcessedTail = true;
|
||||
}
|
||||
while (weight > 0 && actualPosition < bufferLength) {
|
||||
amountToNext = 1 + actualPosition - currentPosition;
|
||||
if (weight >= amountToNext) {
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
output_variable_list[channel] += buffer[actualPosition++] * amountToNext;
|
||||
}
|
||||
currentPosition = actualPosition;
|
||||
weight -= amountToNext;
|
||||
} else {
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
output_variable_list[channel] += buffer[actualPosition + ((channel > 0) ? channel : 0)] * weight;
|
||||
}
|
||||
currentPosition += weight;
|
||||
weight = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (weight === 0) {
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
outputBuffer[outputOffset++] = output_variable_list[channel] / ratioWeight;
|
||||
}
|
||||
} else {
|
||||
this.lastWeight = weight;
|
||||
for (channel = 0; channel < channels; ++channel) {
|
||||
this.lastOutput[channel] = output_variable_list[channel];
|
||||
}
|
||||
this.tailExists = true;
|
||||
break;
|
||||
}
|
||||
} while (actualPosition < bufferLength && outputOffset < outLength);
|
||||
return this.bufferSlice(outputOffset);
|
||||
};
|
||||
}
|
||||
|
||||
resample(buffer) {
|
||||
if (this.fromSampleRate == this.toSampleRate) {
|
||||
this.ratioWeight = 1;
|
||||
} else {
|
||||
if (this.fromSampleRate < this.toSampleRate) {
|
||||
this.lastWeight = 1;
|
||||
} else {
|
||||
this.tailExists = false;
|
||||
this.lastWeight = 0;
|
||||
}
|
||||
this.initializeBuffers();
|
||||
this.ratioWeight = this.fromSampleRate / this.toSampleRate;
|
||||
}
|
||||
return this.resampler(buffer)
|
||||
}
|
||||
}
|
||||
|
||||
registerProcessor("recorder.worklet", RecorderProcessor)
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Authentication complete</title>
|
||||
<p>Authentication is complete. If this does not happen automatically, please close the window.</p>
|
||||
<script>
|
||||
if (window.opener) {
|
||||
window.opener.postMessage({
|
||||
'flutter-web-auth-2': window.location.href
|
||||
}, window.location.origin);
|
||||
} else {
|
||||
localStorage.setItem('flutter-web-auth-2', window.location.href);
|
||||
}
|
||||
window.close();
|
||||
</script>
|
||||
|
|
@ -1,193 +0,0 @@
|
|||
|
||||
var CanvasKitInit = (() => {
|
||||
var _scriptName = import.meta.url;
|
||||
|
||||
return (
|
||||
function(moduleArg = {}) {
|
||||
var moduleRtn;
|
||||
|
||||
var r=moduleArg,ca,da,ea=new Promise((a,b)=>{ca=a;da=b}),fa="object"==typeof window,ia="function"==typeof importScripts;
|
||||
(function(a){a.ce=a.ce||[];a.ce.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,e="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||e||(c=document.getElementById(b),c)))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.Ae=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var e={width:b,height:c,colorType:a.ColorType.RGBA_8888,
|
||||
alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},f=b*c*4,k=a._malloc(f);if(e=a.Surface._makeRasterDirect(e,k,4*b))e.Ae=null,e.$e=b,e.Xe=c,e.Ye=f,e.He=k,e.getCanvas().clear(a.TRANSPARENT);return e};a.MakeRasterDirectSurface=function(b,c,e){return a.Surface._makeRasterDirect(b,c.byteOffset,e)};a.Surface.prototype.flush=function(b){a.$d(this.Zd);this._flush();if(this.Ae){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.He,this.Ye);c=new ImageData(c,this.$e,this.Xe);b?this.Ae.getContext("2d").putImageData(c,
|
||||
0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.Ae.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=function(){this.He&&a._free(this.He);this.delete()};a.$d=a.$d||function(){};a.Be=a.Be||function(){return null}})})(r);
|
||||
(function(a){a.ce=a.ce||[];a.ce.push(function(){function b(l,p,v){return l&&l.hasOwnProperty(p)?l[p]:v}function c(l){var p=ja(ka);ka[p]=l;return p}function e(l){return l.naturalHeight||l.videoHeight||l.displayHeight||l.height}function f(l){return l.naturalWidth||l.videoWidth||l.displayWidth||l.width}function k(l,p,v,w){l.bindTexture(l.TEXTURE_2D,p);w||v.alphaType!==a.AlphaType.Premul||l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);return p}function n(l,p,v){v||p.alphaType!==a.AlphaType.Premul||
|
||||
l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null)}a.GetWebGLContext=function(l,p){if(!l)throw"null canvas passed into makeWebGLContext";var v={alpha:b(p,"alpha",1),depth:b(p,"depth",1),stencil:b(p,"stencil",8),antialias:b(p,"antialias",0),premultipliedAlpha:b(p,"premultipliedAlpha",1),preserveDrawingBuffer:b(p,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(p,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(p,"failIfMajorPerformanceCaveat",
|
||||
0),enableExtensionsByDefault:b(p,"enableExtensionsByDefault",1),explicitSwapControl:b(p,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(p,"renderViaOffscreenBackBuffer",0)};v.majorVersion=p&&p.majorVersion?p.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(v.explicitSwapControl)throw"explicitSwapControl is not supported";l=na(l,v);if(!l)return 0;oa(l);z.le.getExtension("WEBGL_debug_renderer_info");return l};a.deleteContext=function(l){z===pa[l]&&(z=null);"object"==typeof JSEvents&&
|
||||
JSEvents.Af(pa[l].le.canvas);pa[l]&&pa[l].le.canvas&&(pa[l].le.canvas.Ve=void 0);pa[l]=null};a._setTextureCleanup({deleteTexture:function(l,p){var v=ka[p];v&&pa[l].le.deleteTexture(v);ka[p]=null}});a.MakeWebGLContext=function(l){if(!this.$d(l))return null;var p=this._MakeGrContext();if(!p)return null;p.Zd=l;var v=p.delete.bind(p);p["delete"]=function(){a.$d(this.Zd);v()}.bind(p);return z.Je=p};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.$d(this.Zd);
|
||||
this._getResourceCacheLimitBytes()};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.$d(this.Zd);this._getResourceCacheUsageBytes()};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.$d(this.Zd);this._releaseResourcesAndAbandonContext()};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(l){a.$d(this.Zd);this._setResourceCacheLimitBytes(l)};a.MakeOnScreenGLSurface=function(l,p,v,w,A,D){if(!this.$d(l.Zd))return null;p=void 0===A||void 0===D?
|
||||
this._MakeOnScreenGLSurface(l,p,v,w):this._MakeOnScreenGLSurface(l,p,v,w,A,D);if(!p)return null;p.Zd=l.Zd;return p};a.MakeRenderTarget=function(){var l=arguments[0];if(!this.$d(l.Zd))return null;if(3===arguments.length){var p=this._MakeRenderTargetWH(l,arguments[1],arguments[2]);if(!p)return null}else if(2===arguments.length){if(p=this._MakeRenderTargetII(l,arguments[1]),!p)return null}else return null;p.Zd=l.Zd;return p};a.MakeWebGLCanvasSurface=function(l,p,v){p=p||null;var w=l,A="undefined"!==
|
||||
typeof OffscreenCanvas&&w instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&w instanceof HTMLCanvasElement||A||(w=document.getElementById(l),w)))throw"Canvas with id "+l+" was not found";l=this.GetWebGLContext(w,v);if(!l||0>l)throw"failed to create webgl context: err "+l;l=this.MakeWebGLContext(l);p=this.MakeOnScreenGLSurface(l,w.width,w.height,p);return p?p:(p=w.cloneNode(!0),w.parentNode.replaceChild(p,w),p.classList.add("ck-replaced"),a.MakeSWCanvasSurface(p))};a.MakeCanvasSurface=
|
||||
a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(l,p){a.$d(this.Zd);l=c(l);if(p=this._makeImageFromTexture(this.Zd,l,p))p.ue=l;return p};a.Surface.prototype.makeImageFromTextureSource=function(l,p,v){p||={height:e(l),width:f(l),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul};p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);a.$d(this.Zd);var w=z.le;v=k(w,w.createTexture(),p,v);2===z.version?w.texImage2D(w.TEXTURE_2D,0,w.RGBA,p.width,p.height,
|
||||
0,w.RGBA,w.UNSIGNED_BYTE,l):w.texImage2D(w.TEXTURE_2D,0,w.RGBA,w.RGBA,w.UNSIGNED_BYTE,l);n(w,p);this._resetContext();return this.makeImageFromTexture(v,p)};a.Surface.prototype.updateTextureFromSource=function(l,p,v){if(l.ue){a.$d(this.Zd);var w=l.getImageInfo(),A=z.le,D=k(A,ka[l.ue],w,v);2===z.version?A.texImage2D(A.TEXTURE_2D,0,A.RGBA,f(p),e(p),0,A.RGBA,A.UNSIGNED_BYTE,p):A.texImage2D(A.TEXTURE_2D,0,A.RGBA,A.RGBA,A.UNSIGNED_BYTE,p);n(A,w,v);this._resetContext();ka[l.ue]=null;l.ue=c(D);w.colorSpace=
|
||||
l.getColorSpace();p=this._makeImageFromTexture(this.Zd,l.ue,w);v=l.Yd.ae;A=l.Yd.ee;l.Yd.ae=p.Yd.ae;l.Yd.ee=p.Yd.ee;p.Yd.ae=v;p.Yd.ee=A;p.delete();w.colorSpace.delete()}};a.MakeLazyImageFromTextureSource=function(l,p,v){p||={height:e(l),width:f(l),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul};p.colorSpace||(p.colorSpace=a.ColorSpace.SRGB);var w={makeTexture:function(){var A=z,D=A.le,I=k(D,D.createTexture(),p,v);2===A.version?D.texImage2D(D.TEXTURE_2D,0,D.RGBA,
|
||||
p.width,p.height,0,D.RGBA,D.UNSIGNED_BYTE,l):D.texImage2D(D.TEXTURE_2D,0,D.RGBA,D.RGBA,D.UNSIGNED_BYTE,l);n(D,p,v);return c(I)},freeSrc:function(){}};"VideoFrame"===l.constructor.name&&(w.freeSrc=function(){l.close()});return a.Image._makeFromGenerator(p,w)};a.$d=function(l){return l?oa(l):!1};a.Be=function(){return z&&z.Je&&!z.Je.isDeleted()?z.Je:null}})})(r);
|
||||
(function(a){function b(g){return(f(255*g[3])<<24|f(255*g[0])<<16|f(255*g[1])<<8|f(255*g[2])<<0)>>>0}function c(g){if(g&&g._ck)return g;if(g instanceof Float32Array){for(var d=Math.floor(g.length/4),h=new Uint32Array(d),m=0;m<d;m++)h[m]=b(g.slice(4*m,4*(m+1)));return h}if(g instanceof Uint32Array)return g;if(g instanceof Array&&g[0]instanceof Float32Array)return g.map(b)}function e(g){if(void 0===g)return 1;var d=parseFloat(g);return g&&-1!==g.indexOf("%")?d/100:d}function f(g){return Math.round(Math.max(0,
|
||||
Math.min(g||0,255)))}function k(g,d){d&&d._ck||a._free(g)}function n(g,d,h){if(!g||!g.length)return 0;if(g&&g._ck)return g.byteOffset;var m=a[d].BYTES_PER_ELEMENT;h||=a._malloc(g.length*m);a[d].set(g,h/m);return h}function l(g){var d={he:0,count:g.length,colorType:a.ColorType.RGBA_F32};if(g instanceof Float32Array)d.he=n(g,"HEAPF32"),d.count=g.length/4;else if(g instanceof Uint32Array)d.he=n(g,"HEAPU32"),d.colorType=a.ColorType.RGBA_8888;else if(g instanceof Array){if(g&&g.length){for(var h=a._malloc(16*
|
||||
g.length),m=0,t=h/4,u=0;u<g.length;u++)for(var y=0;4>y;y++)a.HEAPF32[t+m]=g[u][y],m++;g=h}else g=0;d.he=g}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof g;return d}function p(g){if(!g)return 0;var d=aa.toTypedArray();if(g.length){if(6===g.length||9===g.length)return n(g,"HEAPF32",P),6===g.length&&a.HEAPF32.set(Vc,6+P/4),P;if(16===g.length)return d[0]=g[0],d[1]=g[1],d[2]=g[3],d[3]=g[4],d[4]=g[5],d[5]=g[7],d[6]=g[12],d[7]=g[13],d[8]=g[15],P;throw"invalid matrix size";
|
||||
}if(void 0===g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m41;d[3]=g.m12;d[4]=g.m22;d[5]=g.m42;d[6]=g.m14;d[7]=g.m24;d[8]=g.m44;return P}function v(g){if(!g)return 0;var d=X.toTypedArray();if(g.length){if(16!==g.length&&6!==g.length&&9!==g.length)throw"invalid matrix size";if(16===g.length)return n(g,"HEAPF32",la);d.fill(0);d[0]=g[0];d[1]=g[1];d[3]=g[2];d[4]=g[3];d[5]=g[4];d[7]=g[5];d[10]=1;d[12]=g[6];d[13]=g[7];d[15]=g[8];6===g.length&&(d[12]=0,d[13]=0,d[15]=1);return la}if(void 0===
|
||||
g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m31;d[3]=g.m41;d[4]=g.m12;d[5]=g.m22;d[6]=g.m32;d[7]=g.m42;d[8]=g.m13;d[9]=g.m23;d[10]=g.m33;d[11]=g.m43;d[12]=g.m14;d[13]=g.m24;d[14]=g.m34;d[15]=g.m44;return la}function w(g,d){return n(g,"HEAPF32",d||ha)}function A(g,d,h,m){var t=Ea.toTypedArray();t[0]=g;t[1]=d;t[2]=h;t[3]=m;return ha}function D(g){for(var d=new Float32Array(4),h=0;4>h;h++)d[h]=a.HEAPF32[g/4+h];return d}function I(g,d){return n(g,"HEAPF32",d||U)}function Q(g,d){return n(g,
|
||||
"HEAPF32",d||tb)}a.Color=function(g,d,h,m){void 0===m&&(m=1);return a.Color4f(f(g)/255,f(d)/255,f(h)/255,m)};a.ColorAsInt=function(g,d,h,m){void 0===m&&(m=255);return(f(m)<<24|f(g)<<16|f(d)<<8|f(h)<<0&268435455)>>>0};a.Color4f=function(g,d,h,m){void 0===m&&(m=1);return Float32Array.of(g,d,h,m)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,"WHITE",{get:function(){return a.Color4f(1,
|
||||
1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,0,1,1)}});a.getColorComponents=function(g){return[Math.floor(255*
|
||||
g[0]),Math.floor(255*g[1]),Math.floor(255*g[2]),g[3]]};a.parseColorString=function(g,d){g=g.toLowerCase();if(g.startsWith("#")){d=255;switch(g.length){case 9:d=parseInt(g.slice(7,9),16);case 7:var h=parseInt(g.slice(1,3),16);var m=parseInt(g.slice(3,5),16);var t=parseInt(g.slice(5,7),16);break;case 5:d=17*parseInt(g.slice(4,5),16);case 4:h=17*parseInt(g.slice(1,2),16),m=17*parseInt(g.slice(2,3),16),t=17*parseInt(g.slice(3,4),16)}return a.Color(h,m,t,d/255)}return g.startsWith("rgba")?(g=g.slice(5,
|
||||
-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("rgb")?(g=g.slice(4,-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("gray(")||g.startsWith("hsl")||!d||(g=d[g],void 0===g)?a.BLACK:g};a.multiplyByAlpha=function(g,d){g=g.slice();g[3]=Math.max(0,Math.min(g[3]*d,1));return g};a.Malloc=function(g,d){var h=a._malloc(d*g.BYTES_PER_ELEMENT);return{_ck:!0,length:d,byteOffset:h,qe:null,subarray:function(m,t){m=this.toTypedArray().subarray(m,t);m._ck=!0;return m},toTypedArray:function(){if(this.qe&&
|
||||
this.qe.length)return this.qe;this.qe=new g(a.HEAPU8.buffer,h,d);this.qe._ck=!0;return this.qe}}};a.Free=function(g){a._free(g.byteOffset);g.byteOffset=0;g.toTypedArray=null;g.qe=null};var P=0,aa,la=0,X,ha=0,Ea,ba,U=0,Ub,Aa=0,Vb,ub=0,Wb,vb=0,$a,Ma=0,Xb,tb=0,Yb,Zb=0,Vc=Float32Array.of(0,0,1);a.onRuntimeInitialized=function(){function g(d,h,m,t,u,y,C){y||(y=4*t.width,t.colorType===a.ColorType.RGBA_F16?y*=2:t.colorType===a.ColorType.RGBA_F32&&(y*=4));var G=y*t.height;var F=u?u.byteOffset:a._malloc(G);
|
||||
if(C?!d._readPixels(t,F,y,h,m,C):!d._readPixels(t,F,y,h,m))return u||a._free(F),null;if(u)return u.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,F,G)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,F,G)).slice();break;default:return null}a._free(F);return d}Ea=a.Malloc(Float32Array,4);ha=Ea.byteOffset;X=a.Malloc(Float32Array,16);la=X.byteOffset;aa=a.Malloc(Float32Array,9);P=aa.byteOffset;Xb=a.Malloc(Float32Array,
|
||||
12);tb=Xb.byteOffset;Yb=a.Malloc(Float32Array,12);Zb=Yb.byteOffset;ba=a.Malloc(Float32Array,4);U=ba.byteOffset;Ub=a.Malloc(Float32Array,4);Aa=Ub.byteOffset;Vb=a.Malloc(Float32Array,3);ub=Vb.byteOffset;Wb=a.Malloc(Float32Array,3);vb=Wb.byteOffset;$a=a.Malloc(Int32Array,4);Ma=$a.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=
|
||||
function(d){var h=n(d,"HEAPF32"),m=a.Path._MakeFromCmds(h,d.length);k(h,d);return m};a.Path.MakeFromVerbsPointsWeights=function(d,h,m){var t=n(d,"HEAPU8"),u=n(h,"HEAPF32"),y=n(m,"HEAPF32"),C=a.Path._MakeFromVerbsPointsWeights(t,d.length,u,h.length/2,y,m&&m.length||0);k(t,d);k(u,h);k(y,m);return C};a.PathBuilder.prototype.addArc=function(d,h,m){d=I(d);this._addArc(d,h,m);return this};a.PathBuilder.prototype.addCircle=function(d,h,m,t){this._addCircle(d,h,m,!!t);return this};a.PathBuilder.prototype.addOval=
|
||||
function(d,h,m){void 0===m&&(m=1);d=I(d);this._addOval(d,!!h,m);return this};a.PathBuilder.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),h=d[0],m=!1;"boolean"===typeof d[d.length-1]&&(m=d.pop());if(1===d.length)this._addPath(h,1,0,0,0,1,0,0,0,1,m);else if(2===d.length)d=d[1],this._addPath(h,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,m);else if(7===d.length||10===d.length)this._addPath(h,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||0,d[8]||0,d[9]||1,m);else return null;
|
||||
return this};a.PathBuilder.prototype.addPolygon=function(d,h){var m=n(d,"HEAPF32");this._addPolygon(m,d.length/2,h);k(m,d);return this};a.PathBuilder.prototype.addRect=function(d,h){d=I(d);this._addRect(d,!!h);return this};a.PathBuilder.prototype.addRRect=function(d,h){d=Q(d);this._addRRect(d,!!h);return this};a.PathBuilder.prototype.addVerbsPointsWeights=function(d,h,m){var t=n(d,"HEAPU8"),u=n(h,"HEAPF32"),y=n(m,"HEAPF32");this._addVerbsPointsWeights(t,d.length,u,h.length/2,y,m&&m.length||0);k(t,
|
||||
d);k(u,h);k(y,m);return this};a.PathBuilder.prototype.arc=function(d,h,m,t,u,y){d=a.LTRBRect(d-m,h-m,d+m,h+m);u=(u-t)/Math.PI*180-360*!!y;t=(new a.PathBuilder).addArc(d,t/Math.PI*180,u).detachAndDelete();this.addPath(t,!0);t.delete();return this};a.PathBuilder.prototype.arcToOval=function(d,h,m,t){d=I(d);this._arcToOval(d,h,m,t);return this};a.PathBuilder.prototype.arcToRotated=function(d,h,m,t,u,y,C){this._arcToRotated(d,h,m,!!t,!!u,y,C);return this};a.PathBuilder.prototype.arcToTangent=function(d,
|
||||
h,m,t,u){this._arcToTangent(d,h,m,t,u);return this};a.PathBuilder.prototype.close=function(){this._close();return this};a.PathBuilder.prototype.conicTo=function(d,h,m,t,u){this._conicTo(d,h,m,t,u);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(U);var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.PathBuilder.prototype.cubicTo=function(d,h,m,t,u,y){this._cubicTo(d,h,m,t,u,y);return this};a.PathBuilder.prototype.detachAndDelete=function(){var d=this.detach();
|
||||
this.delete();return d};a.Path.prototype.getBounds=function(d){this._getBounds(U);var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.PathBuilder.prototype.getBounds=function(d){this._getBounds(U);var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.PathBuilder.prototype.lineTo=function(d,h){this._lineTo(d,h);return this};a.PathBuilder.prototype.moveTo=function(d,h){this._moveTo(d,h);return this};a.PathBuilder.prototype.offset=function(d,h){this._transform(1,0,d,0,1,h,0,0,1);return this};
|
||||
a.PathBuilder.prototype.quadTo=function(d,h,m,t){this._quadTo(d,h,m,t);return this};a.PathBuilder.prototype.rArcTo=function(d,h,m,t,u,y,C){this._rArcTo(d,h,m,t,u,y,C);return this};a.PathBuilder.prototype.rConicTo=function(d,h,m,t,u){this._rConicTo(d,h,m,t,u);return this};a.PathBuilder.prototype.rCubicTo=function(d,h,m,t,u,y){this._rCubicTo(d,h,m,t,u,y);return this};a.PathBuilder.prototype.rLineTo=function(d,h){this._rLineTo(d,h);return this};a.PathBuilder.prototype.rMoveTo=function(d,h){this._rMoveTo(d,
|
||||
h);return this};a.PathBuilder.prototype.rQuadTo=function(d,h,m,t){this._rQuadTo(d,h,m,t);return this};a.Path.prototype.makeStroked=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._makeStroked(d)};a.PathBuilder.prototype.transform=function(){if(1===arguments.length){var d=arguments[0];this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1)}else if(6===arguments.length||
|
||||
9===arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.makeTrimmed=function(d,h,m){return this._makeTrimmed(d,h,!!m)};a.Image.prototype.encodeToBytes=function(d,h){var m=a.Be();d=d||a.ImageFormat.PNG;h=h||100;return m?this._encodeToBytes(d,h,m):this._encodeToBytes(d,h)};a.Image.prototype.makeShaderCubic=function(d,h,m,t,u){u=p(u);return this._makeShaderCubic(d,
|
||||
h,m,t,u)};a.Image.prototype.makeShaderOptions=function(d,h,m,t,u){u=p(u);return this._makeShaderOptions(d,h,m,t,u)};a.Image.prototype.readPixels=function(d,h,m,t,u){var y=a.Be();return g(this,d,h,m,t,u,y)};a.Canvas.prototype.clear=function(d){a.$d(this.Zd);d=w(d);this._clear(d)};a.Canvas.prototype.clipRRect=function(d,h,m){a.$d(this.Zd);d=Q(d);this._clipRRect(d,h,m)};a.Canvas.prototype.clipRect=function(d,h,m){a.$d(this.Zd);d=I(d);this._clipRect(d,h,m)};a.Canvas.prototype.concat=function(d){a.$d(this.Zd);
|
||||
d=v(d);this._concat(d)};a.Canvas.prototype.drawArc=function(d,h,m,t,u){a.$d(this.Zd);d=I(d);this._drawArc(d,h,m,t,u)};a.Canvas.prototype.drawAtlas=function(d,h,m,t,u,y,C){if(d&&t&&h&&m&&h.length===m.length){a.$d(this.Zd);u||(u=a.BlendMode.SrcOver);var G=n(h,"HEAPF32"),F=n(m,"HEAPF32"),S=m.length/4,T=n(c(y),"HEAPU32");if(C&&"B"in C&&"C"in C)this._drawAtlasCubic(d,F,G,T,S,u,C.B,C.C,t);else{let q=a.FilterMode.Linear,x=a.MipmapMode.None;C&&(q=C.filter,"mipmap"in C&&(x=C.mipmap));this._drawAtlasOptions(d,
|
||||
F,G,T,S,u,q,x,t)}k(G,h);k(F,m);k(T,y)}};a.Canvas.prototype.drawCircle=function(d,h,m,t){a.$d(this.Zd);this._drawCircle(d,h,m,t)};a.Canvas.prototype.drawColor=function(d,h){a.$d(this.Zd);d=w(d);void 0!==h?this._drawColor(d,h):this._drawColor(d)};a.Canvas.prototype.drawColorInt=function(d,h){a.$d(this.Zd);this._drawColorInt(d,h||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents=function(d,h,m,t,u){a.$d(this.Zd);d=A(d,h,m,t);void 0!==u?this._drawColor(d,u):this._drawColor(d)};a.Canvas.prototype.drawDRRect=
|
||||
function(d,h,m){a.$d(this.Zd);d=Q(d,tb);h=Q(h,Zb);this._drawDRRect(d,h,m)};a.Canvas.prototype.drawImage=function(d,h,m,t){a.$d(this.Zd);this._drawImage(d,h,m,t||null)};a.Canvas.prototype.drawImageCubic=function(d,h,m,t,u,y){a.$d(this.Zd);this._drawImageCubic(d,h,m,t,u,y||null)};a.Canvas.prototype.drawImageOptions=function(d,h,m,t,u,y){a.$d(this.Zd);this._drawImageOptions(d,h,m,t,u,y||null)};a.Canvas.prototype.drawImageNine=function(d,h,m,t,u){a.$d(this.Zd);h=n(h,"HEAP32",Ma);m=I(m);this._drawImageNine(d,
|
||||
h,m,t,u||null)};a.Canvas.prototype.drawImageRect=function(d,h,m,t,u){a.$d(this.Zd);I(h,U);I(m,Aa);this._drawImageRect(d,U,Aa,t,!!u)};a.Canvas.prototype.drawImageRectCubic=function(d,h,m,t,u,y){a.$d(this.Zd);I(h,U);I(m,Aa);this._drawImageRectCubic(d,U,Aa,t,u,y||null)};a.Canvas.prototype.drawImageRectOptions=function(d,h,m,t,u,y){a.$d(this.Zd);I(h,U);I(m,Aa);this._drawImageRectOptions(d,U,Aa,t,u,y||null)};a.Canvas.prototype.drawLine=function(d,h,m,t,u){a.$d(this.Zd);this._drawLine(d,h,m,t,u)};a.Canvas.prototype.drawOval=
|
||||
function(d,h){a.$d(this.Zd);d=I(d);this._drawOval(d,h)};a.Canvas.prototype.drawPaint=function(d){a.$d(this.Zd);this._drawPaint(d)};a.Canvas.prototype.drawParagraph=function(d,h,m){a.$d(this.Zd);this._drawParagraph(d,h,m)};a.Canvas.prototype.drawPatch=function(d,h,m,t,u){if(24>d.length)throw"Need 12 cubic points";if(h&&4>h.length)throw"Need 4 colors";if(m&&8>m.length)throw"Need 4 shader coordinates";a.$d(this.Zd);const y=n(d,"HEAPF32"),C=h?n(c(h),"HEAPU32"):0,G=m?n(m,"HEAPF32"):0;t||(t=a.BlendMode.Modulate);
|
||||
this._drawPatch(y,C,G,t,u);k(G,m);k(C,h);k(y,d)};a.Canvas.prototype.drawPath=function(d,h){a.$d(this.Zd);this._drawPath(d,h)};a.Canvas.prototype.drawPicture=function(d){a.$d(this.Zd);this._drawPicture(d)};a.Canvas.prototype.drawPoints=function(d,h,m){a.$d(this.Zd);var t=n(h,"HEAPF32");this._drawPoints(d,t,h.length/2,m);k(t,h)};a.Canvas.prototype.drawRRect=function(d,h){a.$d(this.Zd);d=Q(d);this._drawRRect(d,h)};a.Canvas.prototype.drawRect=function(d,h){a.$d(this.Zd);d=I(d);this._drawRect(d,h)};a.Canvas.prototype.drawRect4f=
|
||||
function(d,h,m,t,u){a.$d(this.Zd);this._drawRect4f(d,h,m,t,u)};a.Canvas.prototype.drawShadow=function(d,h,m,t,u,y,C){a.$d(this.Zd);var G=n(u,"HEAPF32"),F=n(y,"HEAPF32");h=n(h,"HEAPF32",ub);m=n(m,"HEAPF32",vb);this._drawShadow(d,h,m,t,G,F,C);k(G,u);k(F,y)};a.getShadowLocalBounds=function(d,h,m,t,u,y,C){d=p(d);m=n(m,"HEAPF32",ub);t=n(t,"HEAPF32",vb);if(!this._getShadowLocalBounds(d,h,m,t,u,y,U))return null;h=ba.toTypedArray();return C?(C.set(h),C):h.slice()};a.Canvas.prototype.drawTextBlob=function(d,
|
||||
h,m,t){a.$d(this.Zd);this._drawTextBlob(d,h,m,t)};a.Canvas.prototype.drawVertices=function(d,h,m){a.$d(this.Zd);this._drawVertices(d,h,m)};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(Ma);var h=$a.toTypedArray();d?d.set(h):d=h.slice();return d};a.Canvas.prototype.quickReject=function(d){d=I(d);return this._quickReject(d)};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(la);for(var d=la,h=Array(16),m=0;16>m;m++)h[m]=a.HEAPF32[d/4+m];return h};a.Canvas.prototype.getTotalMatrix=
|
||||
function(){this._getTotalMatrix(P);for(var d=Array(9),h=0;9>h;h++)d[h]=a.HEAPF32[P/4+h];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Zd=this.Zd;return d};a.Canvas.prototype.readPixels=function(d,h,m,t,u){a.$d(this.Zd);return g(this,d,h,m,t,u)};a.Canvas.prototype.saveLayer=function(d,h,m,t,u){h=I(h);return this._saveLayer(d||null,h,m||null,t||0,u||a.TileMode.Clamp)};a.Canvas.prototype.writePixels=function(d,h,m,t,u,y,C,G){if(d.byteLength%(h*m))throw"pixels length must be a multiple of the srcWidth * srcHeight";
|
||||
a.$d(this.Zd);var F=d.byteLength/(h*m);y=y||a.AlphaType.Unpremul;C=C||a.ColorType.RGBA_8888;G=G||a.ColorSpace.SRGB;var S=F*h;F=n(d,"HEAPU8");h=this._writePixels({width:h,height:m,colorType:C,alphaType:y,colorSpace:G},F,S,t,u);k(F,d);return h};a.ColorFilter.MakeBlend=function(d,h,m){d=w(d);m=m||a.ColorSpace.SRGB;return a.ColorFilter._MakeBlend(d,h,m)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw"invalid color matrix";var h=n(d,"HEAPF32"),m=a.ColorFilter._makeMatrix(h);k(h,d);return m};
|
||||
a.ContourMeasure.prototype.getPosTan=function(d,h){this._getPosTan(d,U);d=ba.toTypedArray();return h?(h.set(d),h):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,h,m){d=I(d,U);h=p(h);this._getOutputBounds(d,h,Ma);h=$a.toTypedArray();return m?(m.set(h),m):h.slice()};a.ImageFilter.MakeDropShadow=function(d,h,m,t,u,y){u=w(u,ha);return a.ImageFilter._MakeDropShadow(d,h,m,t,u,y)};a.ImageFilter.MakeDropShadowOnly=function(d,h,m,t,u,y){u=w(u,ha);return a.ImageFilter._MakeDropShadowOnly(d,h,
|
||||
m,t,u,y)};a.ImageFilter.MakeImage=function(d,h,m,t){m=I(m,U);t=I(t,Aa);if("B"in h&&"C"in h)return a.ImageFilter._MakeImageCubic(d,h.B,h.C,m,t);const u=h.filter;let y=a.MipmapMode.None;"mipmap"in h&&(y=h.mipmap);return a.ImageFilter._MakeImageOptions(d,u,y,m,t)};a.ImageFilter.MakeMatrixTransform=function(d,h,m){d=p(d);if("B"in h&&"C"in h)return a.ImageFilter._MakeMatrixTransformCubic(d,h.B,h.C,m);const t=h.filter;let u=a.MipmapMode.None;"mipmap"in h&&(u=h.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,
|
||||
t,u,m)};a.Paint.prototype.getColor=function(){this._getColor(ha);return D(ha)};a.Paint.prototype.setColor=function(d,h){h=h||null;d=w(d);this._setColor(d,h)};a.Paint.prototype.setColorComponents=function(d,h,m,t,u){u=u||null;d=A(d,h,m,t);this._setColor(d,u)};a.Path.prototype.getPoint=function(d,h){this._getPoint(d,U);d=ba.toTypedArray();return h?(h[0]=d[0],h[1]=d[1],h):d.slice(0,2)};a.Picture.prototype.makeShader=function(d,h,m,t,u){t=p(t);u=I(u);return this._makeShader(d,h,m,t,u)};a.Picture.prototype.cullRect=
|
||||
function(d){this._cullRect(U);var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.PictureRecorder.prototype.beginRecording=function(d,h){d=I(d);return this._beginRecording(d,!!h)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Zd=this.Zd;return d};a.Surface.prototype.makeImageSnapshot=function(d){a.$d(this.Zd);d=n(d,"HEAP32",Ma);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.$d(this.Zd);d=this._makeSurface(d);d.Zd=this.Zd;return d};a.Surface.prototype.Ze=
|
||||
function(d,h){this.te||(this.te=this.getCanvas());return requestAnimationFrame(function(){a.$d(this.Zd);d(this.te);this.flush(h)}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Ze);a.Surface.prototype.We=function(d,h){this.te||(this.te=this.getCanvas());requestAnimationFrame(function(){a.$d(this.Zd);d(this.te);this.flush(h);this.dispose()}.bind(this))};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.We);
|
||||
a.PathEffect.MakeDash=function(d,h){h||=0;if(!d.length||1===d.length%2)throw"Intervals array must have even length";var m=n(d,"HEAPF32");h=a.PathEffect._MakeDash(m,d.length,h);k(m,d);return h};a.PathEffect.MakeLine2D=function(d,h){h=p(h);return a.PathEffect._MakeLine2D(d,h)};a.PathEffect.MakePath2D=function(d,h){d=p(d);return a.PathEffect._MakePath2D(d,h)};a.Shader.MakeColor=function(d,h){h=h||null;d=w(d);return a.Shader._MakeColor(d,h)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;
|
||||
a.Shader.MakeLinearGradient=function(d,h,m,t,u,y,C,G){G=G||null;var F=l(m),S=n(t,"HEAPF32");C=C||0;y=p(y);var T=ba.toTypedArray();T.set(d);T.set(h,2);d=a.Shader._MakeLinearGradient(U,F.he,F.colorType,S,F.count,u,C,y,G);k(F.he,m);t&&k(S,t);return d};a.Shader.MakeRadialGradient=function(d,h,m,t,u,y,C,G){G=G||null;var F=l(m),S=n(t,"HEAPF32");C=C||0;y=p(y);d=a.Shader._MakeRadialGradient(d[0],d[1],h,F.he,F.colorType,S,F.count,u,C,y,G);k(F.he,m);t&&k(S,t);return d};a.Shader.MakeSweepGradient=function(d,
|
||||
h,m,t,u,y,C,G,F,S){S=S||null;var T=l(m),q=n(t,"HEAPF32");C=C||0;G=G||0;F=F||360;y=p(y);d=a.Shader._MakeSweepGradient(d,h,T.he,T.colorType,q,T.count,u,G,F,C,y,S);k(T.he,m);t&&k(q,t);return d};a.Shader.MakeTwoPointConicalGradient=function(d,h,m,t,u,y,C,G,F,S){S=S||null;var T=l(u),q=n(y,"HEAPF32");F=F||0;G=p(G);var x=ba.toTypedArray();x.set(d);x.set(m,2);d=a.Shader._MakeTwoPointConicalGradient(U,h,t,T.he,T.colorType,q,T.count,C,F,G,S);k(T.he,u);y&&k(q,y);return d};a.Vertices.prototype.bounds=function(d){this._bounds(U);
|
||||
var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.ce&&a.ce.forEach(function(d){d()})};a.computeTonalColors=function(g){var d=n(g.ambient,"HEAPF32"),h=n(g.spot,"HEAPF32");this._computeTonalColors(d,h);var m={ambient:D(d),spot:D(h)};k(d,g.ambient);k(h,g.spot);return m};a.LTRBRect=function(g,d,h,m){return Float32Array.of(g,d,h,m)};a.XYWHRect=function(g,d,h,m){return Float32Array.of(g,d,g+h,d+m)};a.LTRBiRect=function(g,d,h,m){return Int32Array.of(g,d,h,m)};a.XYWHiRect=function(g,d,h,m){return Int32Array.of(g,
|
||||
d,g+h,d+m)};a.RRectXY=function(g,d,h){return Float32Array.of(g[0],g[1],g[2],g[3],d,h,d,h,d,h,d,h)};a.MakeAnimatedImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeAnimatedImage(d,g.byteLength))?g:null};a.MakeImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeImage(d,g.byteLength))?g:null};var ab=null;a.MakeImageFromCanvasImageSource=function(g){var d=g.width,h=g.height;
|
||||
ab||=document.createElement("canvas");ab.width=d;ab.height=h;var m=ab.getContext("2d",{willReadFrequently:!0});m.drawImage(g,0,0);g=m.getImageData(0,0,d,h);return a.MakeImage({width:d,height:h,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},g.data,4*d)};a.MakeImage=function(g,d,h){var m=a._malloc(d.length);a.HEAPU8.set(d,m);return a._MakeImage(g,m,d.length,h)};a.MakeVertices=function(g,d,h,m,t,u){var y=t&&t.length||0,C=0;h&&h.length&&(C|=1);m&&m.length&&
|
||||
(C|=2);void 0===u||u||(C|=4);g=new a._VerticesBuilder(g,d.length/2,y,C);n(d,"HEAPF32",g.positions());g.texCoords()&&n(h,"HEAPF32",g.texCoords());g.colors()&&n(c(m),"HEAPU32",g.colors());g.indices()&&n(t,"HEAPU16",g.indices());return g.detach()};(function(g){g.ce=g.ce||[];g.ce.push(function(){function d(q){q&&(q.dir=0===q.dir?g.TextDirection.RTL:g.TextDirection.LTR);return q}function h(q){if(!q||!q.length)return[];for(var x=[],M=0;M<q.length;M+=5){var W=g.LTRBRect(q[M],q[M+1],q[M+2],q[M+3]),wa=g.TextDirection.LTR;
|
||||
0===q[M+4]&&(wa=g.TextDirection.RTL);x.push({rect:W,dir:wa})}g._free(q.byteOffset);return x}function m(q){q=q||{};void 0===q.weight&&(q.weight=g.FontWeight.Normal);q.width=q.width||g.FontWidth.Normal;q.slant=q.slant||g.FontSlant.Upright;return q}function t(q){if(!q||!q.length)return 0;for(var x=[],M=0;M<q.length;M++){var W=u(q[M]);x.push(W)}return n(x,"HEAPU32")}function u(q){if(G[q])return G[q];var x=qa(q)+1,M=g._malloc(x);ra(q,M,x);return G[q]=M}function y(q){q._colorPtr=w(q.color);q._foregroundColorPtr=
|
||||
0;q._backgroundColorPtr=0;q._decorationColorPtr=0;q.foregroundColor&&(q._foregroundColorPtr=w(q.foregroundColor,F));q.backgroundColor&&(q._backgroundColorPtr=w(q.backgroundColor,S));q.decorationColor&&(q._decorationColorPtr=w(q.decorationColor,T));Array.isArray(q.fontFamilies)&&q.fontFamilies.length?(q._fontFamiliesPtr=t(q.fontFamilies),q._fontFamiliesLen=q.fontFamilies.length):(q._fontFamiliesPtr=0,q._fontFamiliesLen=0);if(q.locale){var x=q.locale;q._localePtr=u(x);q._localeLen=qa(x)}else q._localePtr=
|
||||
0,q._localeLen=0;if(Array.isArray(q.shadows)&&q.shadows.length){x=q.shadows;var M=x.map(function(ma){return ma.color||g.BLACK}),W=x.map(function(ma){return ma.blurRadius||0});q._shadowLen=x.length;for(var wa=g._malloc(8*x.length),wb=wa/4,xb=0;xb<x.length;xb++){var $b=x[xb].offset||[0,0];g.HEAPF32[wb]=$b[0];g.HEAPF32[wb+1]=$b[1];wb+=2}q._shadowColorsPtr=l(M).he;q._shadowOffsetsPtr=wa;q._shadowBlurRadiiPtr=n(W,"HEAPF32")}else q._shadowLen=0,q._shadowColorsPtr=0,q._shadowOffsetsPtr=0,q._shadowBlurRadiiPtr=
|
||||
0;Array.isArray(q.fontFeatures)&&q.fontFeatures.length?(x=q.fontFeatures,M=x.map(function(ma){return ma.name}),W=x.map(function(ma){return ma.value}),q._fontFeatureLen=x.length,q._fontFeatureNamesPtr=t(M),q._fontFeatureValuesPtr=n(W,"HEAPU32")):(q._fontFeatureLen=0,q._fontFeatureNamesPtr=0,q._fontFeatureValuesPtr=0);Array.isArray(q.fontVariations)&&q.fontVariations.length?(x=q.fontVariations,M=x.map(function(ma){return ma.axis}),W=x.map(function(ma){return ma.value}),q._fontVariationLen=x.length,
|
||||
q._fontVariationAxesPtr=t(M),q._fontVariationValuesPtr=n(W,"HEAPF32")):(q._fontVariationLen=0,q._fontVariationAxesPtr=0,q._fontVariationValuesPtr=0)}function C(q){g._free(q._fontFamiliesPtr);g._free(q._shadowColorsPtr);g._free(q._shadowOffsetsPtr);g._free(q._shadowBlurRadiiPtr);g._free(q._fontFeatureNamesPtr);g._free(q._fontFeatureValuesPtr);g._free(q._fontVariationAxesPtr);g._free(q._fontVariationValuesPtr)}g.Paragraph.prototype.getRectsForRange=function(q,x,M,W){q=this._getRectsForRange(q,x,M,W);
|
||||
return h(q)};g.Paragraph.prototype.getRectsForPlaceholders=function(){var q=this._getRectsForPlaceholders();return h(q)};g.Paragraph.prototype.getGlyphInfoAt=function(q){return d(this._getGlyphInfoAt(q))};g.Paragraph.prototype.getClosestGlyphInfoAtCoordinate=function(q,x){return d(this._getClosestGlyphInfoAtCoordinate(q,x))};g.TypefaceFontProvider.prototype.registerFont=function(q,x){q=g.Typeface.MakeTypefaceFromData(q);if(!q)return null;x=u(x);this._registerFont(q,x);q.delete()};g.ParagraphStyle=
|
||||
function(q){q.disableHinting=q.disableHinting||!1;if(q.ellipsis){var x=q.ellipsis;q._ellipsisPtr=u(x);q._ellipsisLen=qa(x)}else q._ellipsisPtr=0,q._ellipsisLen=0;null==q.heightMultiplier&&(q.heightMultiplier=-1);q.maxLines=q.maxLines||0;q.replaceTabCharacters=q.replaceTabCharacters||!1;x=(x=q.strutStyle)||{};x.strutEnabled=x.strutEnabled||!1;x.strutEnabled&&Array.isArray(x.fontFamilies)&&x.fontFamilies.length?(x._fontFamiliesPtr=t(x.fontFamilies),x._fontFamiliesLen=x.fontFamilies.length):(x._fontFamiliesPtr=
|
||||
0,x._fontFamiliesLen=0);x.fontStyle=m(x.fontStyle);null==x.fontSize&&(x.fontSize=-1);null==x.heightMultiplier&&(x.heightMultiplier=-1);x.halfLeading=x.halfLeading||!1;x.leading=x.leading||0;x.forceStrutHeight=x.forceStrutHeight||!1;q.strutStyle=x;q.textAlign=q.textAlign||g.TextAlign.Start;q.textDirection=q.textDirection||g.TextDirection.LTR;q.textHeightBehavior=q.textHeightBehavior||g.TextHeightBehavior.All;q.textStyle=g.TextStyle(q.textStyle);q.applyRoundingHack=!1!==q.applyRoundingHack;return q};
|
||||
g.TextStyle=function(q){q.color||(q.color=g.BLACK);q.decoration=q.decoration||0;q.decorationThickness=q.decorationThickness||0;q.decorationStyle=q.decorationStyle||g.DecorationStyle.Solid;q.textBaseline=q.textBaseline||g.TextBaseline.Alphabetic;null==q.fontSize&&(q.fontSize=-1);q.letterSpacing=q.letterSpacing||0;q.wordSpacing=q.wordSpacing||0;null==q.heightMultiplier&&(q.heightMultiplier=-1);q.halfLeading=q.halfLeading||!1;q.fontStyle=m(q.fontStyle);return q};var G={},F=g._malloc(16),S=g._malloc(16),
|
||||
T=g._malloc(16);g.ParagraphBuilder.Make=function(q,x){y(q.textStyle);x=g.ParagraphBuilder._Make(q,x);C(q.textStyle);return x};g.ParagraphBuilder.MakeFromFontProvider=function(q,x){y(q.textStyle);x=g.ParagraphBuilder._MakeFromFontProvider(q,x);C(q.textStyle);return x};g.ParagraphBuilder.MakeFromFontCollection=function(q,x){y(q.textStyle);x=g.ParagraphBuilder._MakeFromFontCollection(q,x);C(q.textStyle);return x};g.ParagraphBuilder.ShapeText=function(q,x,M){let W=0;for(const wa of x)W+=wa.length;if(W!==
|
||||
q.length)throw"Accumulated block lengths must equal text.length";return g.ParagraphBuilder._ShapeText(q,x,M)};g.ParagraphBuilder.prototype.pushStyle=function(q){y(q);this._pushStyle(q);C(q)};g.ParagraphBuilder.prototype.pushPaintStyle=function(q,x,M){y(q);this._pushPaintStyle(q,x,M);C(q)};g.ParagraphBuilder.prototype.addPlaceholder=function(q,x,M,W,wa){M=M||g.PlaceholderAlignment.Baseline;W=W||g.TextBaseline.Alphabetic;this._addPlaceholder(q||0,x||0,M,W,wa||0)};g.ParagraphBuilder.prototype.setWordsUtf8=
|
||||
function(q){var x=n(q,"HEAPU32");this._setWordsUtf8(x,q&&q.length||0);k(x,q)};g.ParagraphBuilder.prototype.setWordsUtf16=function(q){var x=n(q,"HEAPU32");this._setWordsUtf16(x,q&&q.length||0);k(x,q)};g.ParagraphBuilder.prototype.setGraphemeBreaksUtf8=function(q){var x=n(q,"HEAPU32");this._setGraphemeBreaksUtf8(x,q&&q.length||0);k(x,q)};g.ParagraphBuilder.prototype.setGraphemeBreaksUtf16=function(q){var x=n(q,"HEAPU32");this._setGraphemeBreaksUtf16(x,q&&q.length||0);k(x,q)};g.ParagraphBuilder.prototype.setLineBreaksUtf8=
|
||||
function(q){var x=n(q,"HEAPU32");this._setLineBreaksUtf8(x,q&&q.length||0);k(x,q)};g.ParagraphBuilder.prototype.setLineBreaksUtf16=function(q){var x=n(q,"HEAPU32");this._setLineBreaksUtf16(x,q&&q.length||0);k(x,q)}})})(r);a.ce=a.ce||[];a.ce.push(function(){});a.ce=a.ce||[];a.ce.push(function(){a.Canvas.prototype.drawText=function(g,d,h,m,t){var u=qa(g),y=a._malloc(u+1);ra(g,y,u+1);this._drawSimpleText(y,u,d,h,t,m);a._free(y)};a.Canvas.prototype.drawGlyphs=function(g,d,h,m,t,u){if(!(2*g.length<=d.length))throw"Not enough positions for the array of gyphs";
|
||||
a.$d(this.Zd);const y=n(g,"HEAPU16"),C=n(d,"HEAPF32");this._drawGlyphs(g.length,y,C,h,m,t,u);k(C,d);k(y,g)};a.Font.prototype.getGlyphBounds=function(g,d,h){var m=n(g,"HEAPU16"),t=a._malloc(16*g.length);this._getGlyphWidthBounds(m,g.length,0,t,d||null);d=new Float32Array(a.HEAPU8.buffer,t,4*g.length);k(m,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.Font.prototype.getGlyphIDs=function(g,d,h){d||(d=g.length);var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=a._malloc(2*d);
|
||||
d=this._getGlyphIDs(t,m-1,d,g);a._free(t);if(0>d)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.Font.prototype.getGlyphIntercepts=function(g,d,h,m){var t=n(g,"HEAPU16"),u=n(d,"HEAPF32");return this._getGlyphIntercepts(t,g.length,!(g&&g._ck),u,d.length,!(d&&d._ck),h,m)};a.Font.prototype.getGlyphWidths=function(g,d,h){var m=n(g,"HEAPU16"),t=a._malloc(4*g.length);this._getGlyphWidthBounds(m,g.length,t,0,d||
|
||||
null);d=new Float32Array(a.HEAPU8.buffer,t,g.length);k(m,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.FontMgr.FromData=function(){if(!arguments.length)return null;var g=arguments;1===g.length&&Array.isArray(g[0])&&(g=arguments[0]);if(!g.length)return null;for(var d=[],h=[],m=0;m<g.length;m++){var t=new Uint8Array(g[m]),u=n(t,"HEAPU8");d.push(u);h.push(t.byteLength)}d=n(d,"HEAPU32");h=n(h,"HEAPU32");g=a.FontMgr._fromData(d,h,g.length);a._free(d);a._free(h);return g};
|
||||
a.Typeface.MakeTypefaceFromData=function(g){g=new Uint8Array(g);var d=n(g,"HEAPU8");return(g=a.Typeface._MakeTypefaceFromData(d,g.byteLength))?g:null};a.Typeface.MakeFreeTypeFaceFromData=a.Typeface.MakeTypefaceFromData;a.Typeface.prototype.getGlyphIDs=function(g,d,h){d||(d=g.length);var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=a._malloc(2*d);d=this._getGlyphIDs(t,m-1,d,g);a._free(t);if(0>d)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);
|
||||
a._free(g);return h};a.TextBlob.MakeOnPath=function(g,d,h,m){if(g&&g.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(g,h);m||=0;var t=h.getGlyphIDs(g);t=h.getGlyphWidths(t);var u=[];d=new a.ContourMeasureIter(d,!1,1);for(var y=d.next(),C=new Float32Array(4),G=0;G<g.length&&y;G++){var F=t[G];m+=F/2;if(m>y.length()){y.delete();y=d.next();if(!y){g=g.substring(0,G);break}m=F/2}y.getPosTan(m,C);var S=C[2],T=C[3];u.push(S,T,C[0]-F/2*S,C[1]-F/2*T);m+=F/2}g=this.MakeFromRSXform(g,
|
||||
u,h);y&&y.delete();d.delete();return g}};a.TextBlob.MakeFromRSXform=function(g,d,h){var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=n(d,"HEAPF32");h=a.TextBlob._MakeFromRSXform(t,m-1,g,h);a._free(t);return h?h:null};a.TextBlob.MakeFromRSXformGlyphs=function(g,d,h){var m=n(g,"HEAPU16");d=n(d,"HEAPF32");h=a.TextBlob._MakeFromRSXformGlyphs(m,2*g.length,d,h);k(m,g);return h?h:null};a.TextBlob.MakeFromGlyphs=function(g,d){var h=n(g,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(h,2*g.length,d);k(h,g);return d?d:null};
|
||||
a.TextBlob.MakeFromText=function(g,d){var h=qa(g)+1,m=a._malloc(h);ra(g,m,h);g=a.TextBlob._MakeFromText(m,h-1,d);a._free(m);return g?g:null};a.MallocGlyphIDs=function(g){return a.Malloc(Uint16Array,g)}});a.ce=a.ce||[];a.ce.push(function(){a.MakePicture=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._MakePicture(d,g.byteLength))?g:null}});a.ce=a.ce||[];a.ce.push(function(){a.RuntimeEffect.Make=function(g,d){return a.RuntimeEffect._Make(g,{onError:d||function(h){console.log("RuntimeEffect error",
|
||||
h)}})};a.RuntimeEffect.MakeForBlender=function(g,d){return a.RuntimeEffect._MakeForBlender(g,{onError:d||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.prototype.makeShader=function(g,d){var h=!g._ck,m=n(g,"HEAPF32");d=p(d);return this._makeShader(m,4*g.length,h,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(g,d,h){var m=!g._ck,t=n(g,"HEAPF32");h=p(h);for(var u=[],y=0;y<d.length;y++)u.push(d[y].Yd.ae);d=n(u,"HEAPU32");return this._makeShaderWithChildren(t,4*g.length,
|
||||
m,d,u.length,h)};a.RuntimeEffect.prototype.makeBlender=function(g){var d=!g._ck,h=n(g,"HEAPF32");return this._makeBlender(h,4*g.length,d)}})})(r);var sa=Object.assign({},r),ta="",ua,va;
|
||||
if(fa||ia)ia?ta=self.location.href:"undefined"!=typeof document&&document.currentScript&&(ta=document.currentScript.src),_scriptName&&(ta=_scriptName),ta.startsWith("blob:")?ta="":ta=ta.substr(0,ta.replace(/[?#].*/,"").lastIndexOf("/")+1),ia&&(va=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),ua=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
|
||||
var xa=console.log.bind(console),ya=console.error.bind(console);Object.assign(r,sa);sa=null;var za,Ba=!1,Ca,B,Da,Fa,E,H,J,Ga;function Ha(){var a=za.buffer;r.HEAP8=Ca=new Int8Array(a);r.HEAP16=Da=new Int16Array(a);r.HEAPU8=B=new Uint8Array(a);r.HEAPU16=Fa=new Uint16Array(a);r.HEAP32=E=new Int32Array(a);r.HEAPU32=H=new Uint32Array(a);r.HEAPF32=J=new Float32Array(a);r.HEAPF64=Ga=new Float64Array(a)}var Ia=[],Ja=[],Ka=[],La=0,Na=null,Oa=null;
|
||||
function Pa(a){a="Aborted("+a+")";ya(a);Ba=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");da(a);throw a;}var Qa=a=>a.startsWith("data:application/octet-stream;base64,"),Ra;function Sa(a){return ua(a).then(b=>new Uint8Array(b),()=>{if(va)var b=va(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ta(a,b,c){return Sa(a).then(e=>WebAssembly.instantiate(e,b)).then(c,e=>{ya(`failed to asynchronously prepare wasm: ${e}`);Pa(e)})}
|
||||
function Ua(a,b){var c=Ra;return"function"!=typeof WebAssembly.instantiateStreaming||Qa(c)||"function"!=typeof fetch?Ta(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){ya(`wasm streaming compile failed: ${f}`);ya("falling back to ArrayBuffer instantiation");return Ta(c,a,b)}))}function Va(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Wa=a=>{a.forEach(b=>b(r))},Xa=r.noExitRuntime||!0;
|
||||
class Ya{constructor(a){this.ae=a-24}}
|
||||
var Za=0,bb=0,cb="undefined"!=typeof TextDecoder?new TextDecoder:void 0,db=(a,b=0,c=NaN)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16<c-b&&a.buffer&&cb)return cb.decode(a.subarray(b,c));for(e="";b<c;){var f=a[b++];if(f&128){var k=a[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|k);else{var n=a[b++]&63;f=224==(f&240)?(f&15)<<12|k<<6|n:(f&7)<<18|k<<12|n<<6|a[b++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e},
|
||||
eb={},fb=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function gb(a){return this.fromWireType(H[a>>2])}
|
||||
var hb={},ib={},jb={},kb,mb=(a,b,c)=>{function e(l){l=c(l);if(l.length!==a.length)throw new kb("Mismatched type converter count");for(var p=0;p<a.length;++p)lb(a[p],l[p])}a.forEach(l=>jb[l]=b);var f=Array(b.length),k=[],n=0;b.forEach((l,p)=>{ib.hasOwnProperty(l)?f[p]=ib[l]:(k.push(l),hb.hasOwnProperty(l)||(hb[l]=[]),hb[l].push(()=>{f[p]=ib[l];++n;n===k.length&&e(f)}))});0===k.length&&e(f)},nb,K=a=>{for(var b="";B[a];)b+=nb[B[a++]];return b},L;
|
||||
function ob(a,b,c={}){var e=b.name;if(!a)throw new L(`type "${e}" must have a positive integer typeid pointer`);if(ib.hasOwnProperty(a)){if(c.lf)return;throw new L(`Cannot register type '${e}' twice`);}ib[a]=b;delete jb[a];hb.hasOwnProperty(a)&&(b=hb[a],delete hb[a],b.forEach(f=>f()))}function lb(a,b,c={}){return ob(a,b,c)}
|
||||
var pb=a=>{throw new L(a.Yd.de.be.name+" instance already deleted");},qb=!1,rb=()=>{},sb=(a,b,c)=>{if(b===c)return a;if(void 0===c.ge)return null;a=sb(a,b,c.ge);return null===a?null:c.cf(a)},yb={},zb={},Ab=(a,b)=>{if(void 0===b)throw new L("ptr should not be undefined");for(;a.ge;)b=a.ye(b),a=a.ge;return zb[b]},Cb=(a,b)=>{if(!b.de||!b.ae)throw new kb("makeClassHandle requires ptr and ptrType");if(!!b.ie!==!!b.ee)throw new kb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return Bb(Object.create(a,
|
||||
{Yd:{value:b,writable:!0}}))},Bb=a=>{if("undefined"===typeof FinalizationRegistry)return Bb=b=>b,a;qb=new FinalizationRegistry(b=>{b=b.Yd;--b.count.value;0===b.count.value&&(b.ee?b.ie.ne(b.ee):b.de.be.ne(b.ae))});Bb=b=>{var c=b.Yd;c.ee&&qb.register(b,{Yd:c},b);return b};rb=b=>{qb.unregister(b)};return Bb(a)},Db=[];function Eb(){}
|
||||
var Fb=(a,b)=>Object.defineProperty(b,"name",{value:a}),Gb=(a,b,c)=>{if(void 0===a[b].fe){var e=a[b];a[b]=function(...f){if(!a[b].fe.hasOwnProperty(f.length))throw new L(`Function '${c}' called with an invalid number of arguments (${f.length}) - expects one of (${a[b].fe})!`);return a[b].fe[f.length].apply(this,f)};a[b].fe=[];a[b].fe[e.oe]=e}},Hb=(a,b,c)=>{if(r.hasOwnProperty(a)){if(void 0===c||void 0!==r[a].fe&&void 0!==r[a].fe[c])throw new L(`Cannot register public name '${a}' twice`);Gb(r,a,a);
|
||||
if(r[a].fe.hasOwnProperty(c))throw new L(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);r[a].fe[c]=b}else r[a]=b,r[a].oe=c},Ib=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function Jb(a,b,c,e,f,k,n,l){this.name=a;this.constructor=b;this.se=c;this.ne=e;this.ge=f;this.ff=k;this.ye=n;this.cf=l;this.pf=[]}
|
||||
var Kb=(a,b,c)=>{for(;b!==c;){if(!b.ye)throw new L(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.ye(a);b=b.ge}return a};function Lb(a,b){if(null===b){if(this.Ke)throw new L(`null is not a valid ${this.name}`);return 0}if(!b.Yd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Yd.ae)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);return Kb(b.Yd.ae,b.Yd.de.be,this.be)}
|
||||
function Nb(a,b){if(null===b){if(this.Ke)throw new L(`null is not a valid ${this.name}`);if(this.De){var c=this.Le();null!==a&&a.push(this.ne,c);return c}return 0}if(!b||!b.Yd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Yd.ae)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.Ce&&b.Yd.de.Ce)throw new L(`Cannot convert argument of type ${b.Yd.ie?b.Yd.ie.name:b.Yd.de.name} to parameter type ${this.name}`);c=Kb(b.Yd.ae,b.Yd.de.be,this.be);if(this.De){if(void 0===
|
||||
b.Yd.ee)throw new L("Passing raw pointer to smart pointer is illegal");switch(this.uf){case 0:if(b.Yd.ie===this)c=b.Yd.ee;else throw new L(`Cannot convert argument of type ${b.Yd.ie?b.Yd.ie.name:b.Yd.de.name} to parameter type ${this.name}`);break;case 1:c=b.Yd.ee;break;case 2:if(b.Yd.ie===this)c=b.Yd.ee;else{var e=b.clone();c=this.qf(c,Ob(()=>e["delete"]()));null!==a&&a.push(this.ne,c)}break;default:throw new L("Unsupporting sharing policy");}}return c}
|
||||
function Pb(a,b){if(null===b){if(this.Ke)throw new L(`null is not a valid ${this.name}`);return 0}if(!b.Yd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Yd.ae)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.Yd.de.Ce)throw new L(`Cannot convert argument of type ${b.Yd.de.name} to parameter type ${this.name}`);return Kb(b.Yd.ae,b.Yd.de.be,this.be)}
|
||||
function Qb(a,b,c,e,f,k,n,l,p,v,w){this.name=a;this.be=b;this.Ke=c;this.Ce=e;this.De=f;this.nf=k;this.uf=n;this.Se=l;this.Le=p;this.qf=v;this.ne=w;f||void 0!==b.ge?this.toWireType=Nb:(this.toWireType=e?Lb:Pb,this.ke=null)}
|
||||
var Rb=(a,b,c)=>{if(!r.hasOwnProperty(a))throw new kb("Replacing nonexistent public symbol");void 0!==r[a].fe&&void 0!==c?r[a].fe[c]=b:(r[a]=b,r[a].oe=c)},N,Sb=(a,b,c=[])=>{a.includes("j")?(a=a.replace(/p/g,"i"),b=(0,r["dynCall_"+a])(b,...c)):b=N.get(b)(...c);return b},Tb=(a,b)=>(...c)=>Sb(a,b,c),O=(a,b)=>{a=K(a);var c=a.includes("j")?Tb(a,b):N.get(b);if("function"!=typeof c)throw new L(`unknown function pointer with signature ${a}: ${b}`);return c},ac,dc=a=>{a=bc(a);var b=K(a);cc(a);return b},ec=
|
||||
(a,b)=>{function c(k){f[k]||ib[k]||(jb[k]?jb[k].forEach(c):(e.push(k),f[k]=!0))}var e=[],f={};b.forEach(c);throw new ac(`${a}: `+e.map(dc).join([", "]));};function fc(a){for(var b=1;b<a.length;++b)if(null!==a[b]&&void 0===a[b].ke)return!0;return!1}
|
||||
function gc(a,b,c,e,f){var k=b.length;if(2>k)throw new L("argTypes array size mismatch! Must at least get return value and 'this' types!");var n=null!==b[1]&&null!==c,l=fc(b),p="void"!==b[0].name,v=k-2,w=Array(v),A=[],D=[];return Fb(a,function(...I){D.length=0;A.length=n?2:1;A[0]=f;if(n){var Q=b[1].toWireType(D,this);A[1]=Q}for(var P=0;P<v;++P)w[P]=b[P+2].toWireType(D,I[P]),A.push(w[P]);I=e(...A);if(l)fb(D);else for(P=n?1:2;P<b.length;P++){var aa=1===P?Q:w[P-2];null!==b[P].ke&&b[P].ke(aa)}Q=p?b[0].fromWireType(I):
|
||||
void 0;return Q})}
|
||||
var hc=(a,b)=>{for(var c=[],e=0;e<a;e++)c.push(H[b+4*e>>2]);return c},ic=a=>{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},jc=[],kc=[],lc=a=>{9<a&&0===--kc[a+1]&&(kc[a]=void 0,jc.push(a))},mc=a=>{if(!a)throw new L("Cannot use deleted val. handle = "+a);return kc[a]},Ob=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=jc.pop()||kc.length;kc[b]=a;kc[b+1]=1;return b}},nc={name:"emscripten::val",fromWireType:a=>{var b=mc(a);lc(a);
|
||||
return b},toWireType:(a,b)=>Ob(b),je:8,readValueFromPointer:gb,ke:null},oc=(a,b,c)=>{switch(b){case 1:return c?function(e){return this.fromWireType(Ca[e])}:function(e){return this.fromWireType(B[e])};case 2:return c?function(e){return this.fromWireType(Da[e>>1])}:function(e){return this.fromWireType(Fa[e>>1])};case 4:return c?function(e){return this.fromWireType(E[e>>2])}:function(e){return this.fromWireType(H[e>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},pc=(a,b)=>
|
||||
{var c=ib[a];if(void 0===c)throw a=`${b} has unknown type ${dc(a)}`,new L(a);return c},Mb=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},qc=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(J[c>>2])};case 8:return function(c){return this.fromWireType(Ga[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},rc=(a,b,c)=>{switch(b){case 1:return c?e=>Ca[e]:e=>B[e];case 2:return c?e=>Da[e>>1]:e=>Fa[e>>
|
||||
1];case 4:return c?e=>E[e>>2]:e=>H[e>>2];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},ra=(a,b,c)=>{var e=B;if(!(0<c))return 0;var f=b;c=b+c-1;for(var k=0;k<a.length;++k){var n=a.charCodeAt(k);if(55296<=n&&57343>=n){var l=a.charCodeAt(++k);n=65536+((n&1023)<<10)|l&1023}if(127>=n){if(b>=c)break;e[b++]=n}else{if(2047>=n){if(b+1>=c)break;e[b++]=192|n>>6}else{if(65535>=n){if(b+2>=c)break;e[b++]=224|n>>12}else{if(b+3>=c)break;e[b++]=240|n>>18;e[b++]=128|n>>12&63}e[b++]=128|n>>6&
|
||||
63}e[b++]=128|n&63}}e[b]=0;return b-f},qa=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}return b},sc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,tc=(a,b)=>{var c=a>>1;for(var e=c+b/2;!(c>=e)&&Fa[c];)++c;c<<=1;if(32<c-a&&sc)return sc.decode(B.subarray(a,c));c="";for(e=0;!(e>=b/2);++e){var f=Da[a+2*e>>1];if(0==f)break;c+=String.fromCharCode(f)}return c},uc=(a,b,c)=>{c??=2147483647;if(2>c)return 0;c-=2;var e=
|
||||
b;c=c<2*a.length?c/2:a.length;for(var f=0;f<c;++f)Da[b>>1]=a.charCodeAt(f),b+=2;Da[b>>1]=0;return b-e},vc=a=>2*a.length,wc=(a,b)=>{for(var c=0,e="";!(c>=b/4);){var f=E[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023)):e+=String.fromCharCode(f)}return e},xc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var e=b;c=e+c-4;for(var f=0;f<a.length;++f){var k=a.charCodeAt(f);if(55296<=k&&57343>=k){var n=a.charCodeAt(++f);k=65536+((k&1023)<<10)|n&1023}E[b>>2]=k;b+=
|
||||
4;if(b+4>c)break}E[b>>2]=0;return b-e},yc=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);55296<=e&&57343>=e&&++c;b+=4}return b},zc=(a,b,c)=>{var e=[];a=a.toWireType(e,c);e.length&&(H[b>>2]=Ob(e));return a},Ac=[],Bc={},Cc=a=>{var b=Bc[a];return void 0===b?K(a):b},Dc=()=>{function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;
|
||||
"object"==typeof global&&a(global)?$$$embind_global$$$=global:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");},Ec=a=>{var b=Ac.length;Ac.push(a);return b},Fc=(a,b)=>{for(var c=Array(a),e=0;e<a;++e)c[e]=pc(H[b+4*e>>2],"parameter "+e);return c},Gc=Reflect.construct,R,Hc=a=>{var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=(c,e)=>b.vertexAttribDivisorANGLE(c,
|
||||
e),a.drawArraysInstanced=(c,e,f,k)=>b.drawArraysInstancedANGLE(c,e,f,k),a.drawElementsInstanced=(c,e,f,k,n)=>b.drawElementsInstancedANGLE(c,e,f,k,n))},Ic=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c),a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},Jc=a=>{var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},Kc=a=>
|
||||
{var b="ANGLE_instanced_arrays EXT_blend_minmax EXT_disjoint_timer_query EXT_frag_depth EXT_shader_texture_lod EXT_sRGB OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_depth_texture WEBGL_draw_buffers EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
|
||||
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},Lc=1,Mc=[],Nc=[],Oc=[],Pc=[],ka=[],Qc=[],Rc=[],pa=[],Sc=[],Tc=[],Uc=[],Wc={},Xc={},Yc=4,Zc=0,ja=a=>{for(var b=Lc++,c=a.length;c<b;c++)a[c]=null;return b},$c=(a,b,c,e)=>{for(var f=0;f<a;f++){var k=R[c](),n=k&&ja(e);k?(k.name=n,e[n]=k):V||=1282;E[b+4*f>>2]=n}},na=(a,b)=>{a.Ne||(a.Ne=a.getContext,a.getContext=function(e,f){f=a.Ne(e,f);return"webgl"==e==f instanceof WebGLRenderingContext?f:null});var c=1<b.majorVersion?a.getContext("webgl2",
|
||||
b):a.getContext("webgl",b);return c?ad(c,b):0},ad=(a,b)=>{var c=ja(pa),e={handle:c,attributes:b,version:b.majorVersion,le:a};a.canvas&&(a.canvas.Ve=e);pa[c]=e;("undefined"==typeof b.df||b.df)&&bd(e);return c},oa=a=>{z=pa[a];r.vf=R=z?.le;return!(a&&!R)},bd=a=>{a||=z;if(!a.mf){a.mf=!0;var b=a.le;b.zf=b.getExtension("WEBGL_multi_draw");b.xf=b.getExtension("EXT_polygon_offset_clamp");b.wf=b.getExtension("EXT_clip_control");b.Bf=b.getExtension("WEBGL_polygon_mode");Hc(b);Ic(b);Jc(b);b.Pe=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");
|
||||
b.Re=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.me=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.me)b.me=b.getExtension("EXT_disjoint_timer_query");Kc(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},z,V,cd=(a,b)=>{R.bindFramebuffer(a,Oc[b])},dd=a=>{R.bindVertexArray(Rc[a])},ed=a=>R.clear(a),fd=(a,b,c,e)=>R.clearColor(a,b,c,e),gd=a=>R.clearStencil(a),hd=(a,b)=>{for(var c=0;c<a;c++){var e=E[b+
|
||||
4*c>>2];R.deleteVertexArray(Rc[e]);Rc[e]=null}},jd=[],kd=(a,b)=>{$c(a,b,"createVertexArray",Rc)};function ld(){var a=Kc(R);return a=a.concat(a.map(b=>"GL_"+b))}
|
||||
var md=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(V||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=R.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>z.version){V||=1282;return}e=ld().length;break;case 33307:case 33308:if(2>z.version){V||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=R.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":V||=1280;return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=
|
||||
0;break;default:V||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(c){case 0:E[b+4*a>>2]=f[a];break;case 2:J[b+4*a>>2]=f[a];break;case 4:Ca[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(k){V||=1280;ya(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${k})`);return}}break;default:V||=1280;ya(`GL_INVALID_ENUM in glGet${c}v: Native code calling glGet${c}v(${a}) and it returns ${f} of type ${typeof f}!`);
|
||||
return}switch(c){case 1:c=e;H[b>>2]=c;H[b+4>>2]=(c-H[b>>2])/4294967296;break;case 0:E[b>>2]=e;break;case 2:J[b>>2]=e;break;case 4:Ca[b]=e?1:0}}else V||=1281},nd=(a,b)=>md(a,b,0),od=(a,b,c)=>{if(c){a=Sc[a];b=2>z.version?R.me.getQueryObjectEXT(a,b):R.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;H[c>>2]=e;H[c+4>>2]=(e-H[c>>2])/4294967296}else V||=1281},qd=a=>{var b=qa(a)+1,c=pd(b);c&&ra(a,c,b);return c},rd=a=>{var b=Wc[a];if(!b){switch(a){case 7939:b=qd(ld().join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=
|
||||
R.getParameter(a))||(V||=1280);b=b?qd(b):0;break;case 7938:b=R.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=z.version&&(c=`OpenGL ES 3.0 (${b})`);b=qd(c);break;case 35724:b=R.getParameter(35724);c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b=`OpenGL ES GLSL ES ${c[1]} (${b})`);b=qd(b);break;default:V||=1280}Wc[a]=b}return b},sd=(a,b)=>{if(2>z.version)return V||=1282,0;var c=Xc[a];if(c)return 0>b||b>=c.length?(V||=1281,0):c[b];switch(a){case 7939:return c=
|
||||
ld().map(qd),c=Xc[a]=c,0>b||b>=c.length?(V||=1281,0):c[b];default:return V||=1280,0}},td=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),ud=a=>{a-=5120;return 0==a?Ca:1==a?B:2==a?Da:4==a?E:6==a?J:5==a||28922==a||28520==a||30779==a||30782==a?H:Fa},vd=(a,b,c,e,f)=>{a=ud(a);b=e*((Zc||c)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*a.BYTES_PER_ELEMENT+Yc-1&-Yc);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},Y=a=>{var b=R.bf;if(b){var c=
|
||||
b.xe[a];"number"==typeof c&&(b.xe[a]=c=R.getUniformLocation(b,b.Te[a]+(0<c?`[${c}]`:"")));return c}V||=1282},wd=[],xd=[],yd={},Ad=()=>{if(!zd){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in yd)void 0===yd[b]?delete a[b]:a[b]=yd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);zd=c}return zd},zd,Bd=[null,[],[]];
|
||||
kb=r.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};for(var Cd=Array(256),Dd=0;256>Dd;++Dd)Cd[Dd]=String.fromCharCode(Dd);nb=Cd;L=r.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};
|
||||
Object.assign(Eb.prototype,{isAliasOf:function(a){if(!(this instanceof Eb&&a instanceof Eb))return!1;var b=this.Yd.de.be,c=this.Yd.ae;a.Yd=a.Yd;var e=a.Yd.de.be;for(a=a.Yd.ae;b.ge;)c=b.ye(c),b=b.ge;for(;e.ge;)a=e.ye(a),e=e.ge;return b===e&&c===a},clone:function(){this.Yd.ae||pb(this);if(this.Yd.we)return this.Yd.count.value+=1,this;var a=Bb,b=Object,c=b.create,e=Object.getPrototypeOf(this),f=this.Yd;a=a(c.call(b,e,{Yd:{value:{count:f.count,ve:f.ve,we:f.we,ae:f.ae,de:f.de,ee:f.ee,ie:f.ie}}}));a.Yd.count.value+=
|
||||
1;a.Yd.ve=!1;return a},["delete"](){this.Yd.ae||pb(this);if(this.Yd.ve&&!this.Yd.we)throw new L("Object already scheduled for deletion");rb(this);var a=this.Yd;--a.count.value;0===a.count.value&&(a.ee?a.ie.ne(a.ee):a.de.be.ne(a.ae));this.Yd.we||(this.Yd.ee=void 0,this.Yd.ae=void 0)},isDeleted:function(){return!this.Yd.ae},deleteLater:function(){this.Yd.ae||pb(this);if(this.Yd.ve&&!this.Yd.we)throw new L("Object already scheduled for deletion");Db.push(this);this.Yd.ve=!0;return this}});
|
||||
Object.assign(Qb.prototype,{gf(a){this.Se&&(a=this.Se(a));return a},Oe(a){this.ne?.(a)},je:8,readValueFromPointer:gb,fromWireType:function(a){function b(){return this.De?Cb(this.be.se,{de:this.nf,ae:c,ie:this,ee:a}):Cb(this.be.se,{de:this,ae:a})}var c=this.gf(a);if(!c)return this.Oe(a),null;var e=Ab(this.be,c);if(void 0!==e){if(0===e.Yd.count.value)return e.Yd.ae=c,e.Yd.ee=a,e.clone();e=e.clone();this.Oe(a);return e}e=this.be.ff(c);e=yb[e];if(!e)return b.call(this);e=this.Ce?e.af:e.pointerType;var f=
|
||||
sb(c,this.be,e.be);return null===f?b.call(this):this.De?Cb(e.be.se,{de:e,ae:f,ie:this,ee:a}):Cb(e.be.se,{de:e,ae:f})}});ac=r.UnboundTypeError=((a,b)=>{var c=Fb(b,function(e){this.name=b;this.message=e;e=Error(e).stack;void 0!==e&&(this.stack=this.toString()+"\n"+e.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c})(Error,"UnboundTypeError");
|
||||
kc.push(0,1,void 0,1,null,1,!0,1,!1,1);r.count_emval_handles=()=>kc.length/2-5-jc.length;for(var Ed=0;32>Ed;++Ed)jd.push(Array(Ed));var Fd=new Float32Array(288);for(Ed=0;288>=Ed;++Ed)wd[Ed]=Fd.subarray(0,Ed);var Gd=new Int32Array(288);for(Ed=0;288>=Ed;++Ed)xd[Ed]=Gd.subarray(0,Ed);
|
||||
var Vd={F:(a,b,c)=>{var e=new Ya(a);H[e.ae+16>>2]=0;H[e.ae+4>>2]=b;H[e.ae+8>>2]=c;Za=a;bb++;throw Za;},V:function(){return 0},vd:()=>{},ud:function(){return 0},td:()=>{},sd:()=>{},U:function(){},rd:()=>{},nd:()=>{Pa("")},B:a=>{var b=eb[a];delete eb[a];var c=b.Le,e=b.ne,f=b.Qe,k=f.map(n=>n.kf).concat(f.map(n=>n.sf));mb([a],k,n=>{var l={};f.forEach((p,v)=>{var w=n[v],A=p.hf,D=p.jf,I=n[v+f.length],Q=p.rf,P=p.tf;l[p.ef]={read:aa=>w.fromWireType(A(D,aa)),write:(aa,la)=>{var X=[];Q(P,aa,I.toWireType(X,
|
||||
la));fb(X)}}});return[{name:b.name,fromWireType:p=>{var v={},w;for(w in l)v[w]=l[w].read(p);e(p);return v},toWireType:(p,v)=>{for(var w in l)if(!(w in v))throw new TypeError(`Missing field: "${w}"`);var A=c();for(w in l)l[w].write(A,v[w]);null!==p&&p.push(e,A);return A},je:8,readValueFromPointer:gb,ke:e}]})},Y:()=>{},md:(a,b,c,e)=>{b=K(b);lb(a,{name:b,fromWireType:function(f){return!!f},toWireType:function(f,k){return k?c:e},je:8,readValueFromPointer:function(f){return this.fromWireType(B[f])},ke:null})},
|
||||
j:(a,b,c,e,f,k,n,l,p,v,w,A,D)=>{w=K(w);k=O(f,k);l&&=O(n,l);v&&=O(p,v);D=O(A,D);var I=Ib(w);Hb(I,function(){ec(`Cannot construct ${w} due to unbound types`,[e])});mb([a,b,c],e?[e]:[],Q=>{Q=Q[0];if(e){var P=Q.be;var aa=P.se}else aa=Eb.prototype;Q=Fb(w,function(...Ea){if(Object.getPrototypeOf(this)!==la)throw new L("Use 'new' to construct "+w);if(void 0===X.pe)throw new L(w+" has no accessible constructor");var ba=X.pe[Ea.length];if(void 0===ba)throw new L(`Tried to invoke ctor of ${w} with invalid number of parameters (${Ea.length}) - expected (${Object.keys(X.pe).toString()}) parameters instead!`);
|
||||
return ba.apply(this,Ea)});var la=Object.create(aa,{constructor:{value:Q}});Q.prototype=la;var X=new Jb(w,Q,la,D,P,k,l,v);if(X.ge){var ha;(ha=X.ge).ze??(ha.ze=[]);X.ge.ze.push(X)}P=new Qb(w,X,!0,!1,!1);ha=new Qb(w+"*",X,!1,!1,!1);aa=new Qb(w+" const*",X,!1,!0,!1);yb[a]={pointerType:ha,af:aa};Rb(I,Q);return[P,ha,aa]})},e:(a,b,c,e,f,k,n)=>{var l=hc(c,e);b=K(b);b=ic(b);k=O(f,k);mb([],[a],p=>{function v(){ec(`Cannot call ${w} due to unbound types`,l)}p=p[0];var w=`${p.name}.${b}`;b.startsWith("@@")&&
|
||||
(b=Symbol[b.substring(2)]);var A=p.be.constructor;void 0===A[b]?(v.oe=c-1,A[b]=v):(Gb(A,b,w),A[b].fe[c-1]=v);mb([],l,D=>{D=[D[0],null].concat(D.slice(1));D=gc(w,D,null,k,n);void 0===A[b].fe?(D.oe=c-1,A[b]=D):A[b].fe[c-1]=D;if(p.be.ze)for(const I of p.be.ze)I.constructor.hasOwnProperty(b)||(I.constructor[b]=D);return[]});return[]})},x:(a,b,c,e,f,k)=>{var n=hc(b,c);f=O(e,f);mb([],[a],l=>{l=l[0];var p=`constructor ${l.name}`;void 0===l.be.pe&&(l.be.pe=[]);if(void 0!==l.be.pe[b-1])throw new L(`Cannot register multiple constructors with identical number of parameters (${b-
|
||||
1}) for class '${l.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);l.be.pe[b-1]=()=>{ec(`Cannot construct ${l.name} due to unbound types`,n)};mb([],n,v=>{v.splice(1,0,null);l.be.pe[b-1]=gc(p,v,null,f,k);return[]});return[]})},a:(a,b,c,e,f,k,n,l)=>{var p=hc(c,e);b=K(b);b=ic(b);k=O(f,k);mb([],[a],v=>{function w(){ec(`Cannot call ${A} due to unbound types`,p)}v=v[0];var A=`${v.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);l&&v.be.pf.push(b);
|
||||
var D=v.be.se,I=D[b];void 0===I||void 0===I.fe&&I.className!==v.name&&I.oe===c-2?(w.oe=c-2,w.className=v.name,D[b]=w):(Gb(D,b,A),D[b].fe[c-2]=w);mb([],p,Q=>{Q=gc(A,Q,v,k,n);void 0===D[b].fe?(Q.oe=c-2,D[b]=Q):D[b].fe[c-2]=Q;return[]});return[]})},q:(a,b,c)=>{a=K(a);mb([],[b],e=>{e=e[0];r[a]=e.fromWireType(c);return[]})},ld:a=>lb(a,nc),i:(a,b,c,e)=>{function f(){}b=K(b);f.values={};lb(a,{name:b,constructor:f,fromWireType:function(k){return this.constructor.values[k]},toWireType:(k,n)=>n.value,je:8,
|
||||
readValueFromPointer:oc(b,c,e),ke:null});Hb(b,f)},b:(a,b,c)=>{var e=pc(a,"enum");b=K(b);a=e.constructor;e=Object.create(e.constructor.prototype,{value:{value:c},constructor:{value:Fb(`${e.name}_${b}`,function(){})}});a.values[c]=e;a[b]=e},S:(a,b,c)=>{b=K(b);lb(a,{name:b,fromWireType:e=>e,toWireType:(e,f)=>f,je:8,readValueFromPointer:qc(b,c),ke:null})},w:(a,b,c,e,f,k)=>{var n=hc(b,c);a=K(a);a=ic(a);f=O(e,f);Hb(a,function(){ec(`Cannot call ${a} due to unbound types`,n)},b-1);mb([],n,l=>{l=[l[0],null].concat(l.slice(1));
|
||||
Rb(a,gc(a,l,null,f,k),b-1);return[]})},C:(a,b,c,e,f)=>{b=K(b);-1===f&&(f=4294967295);f=l=>l;if(0===e){var k=32-8*c;f=l=>l<<k>>>k}var n=b.includes("unsigned")?function(l,p){return p>>>0}:function(l,p){return p};lb(a,{name:b,fromWireType:f,toWireType:n,je:8,readValueFromPointer:rc(b,c,0!==e),ke:null})},p:(a,b,c)=>{function e(k){return new f(Ca.buffer,H[k+4>>2],H[k>>2])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=K(c);lb(a,{name:c,fromWireType:e,
|
||||
je:8,readValueFromPointer:e},{lf:!0})},o:(a,b,c,e,f,k,n,l,p,v,w,A)=>{c=K(c);k=O(f,k);l=O(n,l);v=O(p,v);A=O(w,A);mb([a],[b],D=>{D=D[0];return[new Qb(c,D.be,!1,!1,!0,D,e,k,l,v,A)]})},R:(a,b)=>{b=K(b);var c="std::string"===b;lb(a,{name:b,fromWireType:function(e){var f=H[e>>2],k=e+4;if(c)for(var n=k,l=0;l<=f;++l){var p=k+l;if(l==f||0==B[p]){n=n?db(B,n,p-n):"";if(void 0===v)var v=n;else v+=String.fromCharCode(0),v+=n;n=p+1}}else{v=Array(f);for(l=0;l<f;++l)v[l]=String.fromCharCode(B[k+l]);v=v.join("")}cc(e);
|
||||
return v},toWireType:function(e,f){f instanceof ArrayBuffer&&(f=new Uint8Array(f));var k="string"==typeof f;if(!(k||f instanceof Uint8Array||f instanceof Uint8ClampedArray||f instanceof Int8Array))throw new L("Cannot pass non-string to std::string");var n=c&&k?qa(f):f.length;var l=pd(4+n+1),p=l+4;H[l>>2]=n;if(c&&k)ra(f,p,n+1);else if(k)for(k=0;k<n;++k){var v=f.charCodeAt(k);if(255<v)throw cc(p),new L("String has UTF-16 code units that do not fit in 8 bits");B[p+k]=v}else for(k=0;k<n;++k)B[p+k]=f[k];
|
||||
null!==e&&e.push(cc,l);return l},je:8,readValueFromPointer:gb,ke(e){cc(e)}})},M:(a,b,c)=>{c=K(c);if(2===b){var e=tc;var f=uc;var k=vc;var n=l=>Fa[l>>1]}else 4===b&&(e=wc,f=xc,k=yc,n=l=>H[l>>2]);lb(a,{name:c,fromWireType:l=>{for(var p=H[l>>2],v,w=l+4,A=0;A<=p;++A){var D=l+4+A*b;if(A==p||0==n(D))w=e(w,D-w),void 0===v?v=w:(v+=String.fromCharCode(0),v+=w),w=D+b}cc(l);return v},toWireType:(l,p)=>{if("string"!=typeof p)throw new L(`Cannot pass non-string to C++ string type ${c}`);var v=k(p),w=pd(4+v+b);
|
||||
H[w>>2]=v/b;f(p,w+4,v+b);null!==l&&l.push(cc,w);return w},je:8,readValueFromPointer:gb,ke(l){cc(l)}})},A:(a,b,c,e,f,k)=>{eb[a]={name:K(b),Le:O(c,e),ne:O(f,k),Qe:[]}},d:(a,b,c,e,f,k,n,l,p,v)=>{eb[a].Qe.push({ef:K(b),kf:c,hf:O(e,f),jf:k,sf:n,rf:O(l,p),tf:v})},kd:(a,b)=>{b=K(b);lb(a,{yf:!0,name:b,je:0,fromWireType:()=>{},toWireType:()=>{}})},jd:()=>1,id:()=>{throw Infinity;},E:(a,b,c)=>{a=mc(a);b=pc(b,"emval::as");return zc(b,c,a)},L:(a,b,c,e)=>{a=Ac[a];b=mc(b);return a(null,b,c,e)},r:(a,b,c,e,f)=>{a=
|
||||
Ac[a];b=mc(b);c=Cc(c);return a(b,b[c],e,f)},c:lc,K:a=>{if(0===a)return Ob(Dc());a=Cc(a);return Ob(Dc()[a])},n:(a,b,c)=>{var e=Fc(a,b),f=e.shift();a--;var k=Array(a);b=`methodCaller<(${e.map(n=>n.name).join(", ")}) => ${f.name}>`;return Ec(Fb(b,(n,l,p,v)=>{for(var w=0,A=0;A<a;++A)k[A]=e[A].readValueFromPointer(v+w),w+=e[A].je;n=1===c?Gc(l,k):l.apply(n,k);return zc(f,p,n)}))},z:(a,b)=>{a=mc(a);b=mc(b);return Ob(a[b])},H:a=>{9<a&&(kc[a+1]+=1)},G:()=>Ob([]),f:a=>Ob(Cc(a)),D:()=>Ob({}),hd:a=>{a=mc(a);
|
||||
return!a},k:a=>{var b=mc(a);fb(b);lc(a)},h:(a,b,c)=>{a=mc(a);b=mc(b);c=mc(c);a[b]=c},g:(a,b)=>{a=pc(a,"_emval_take_value");a=a.readValueFromPointer(b);return Ob(a)},X:function(){return-52},W:function(){},gd:(a,b,c,e)=>{var f=(new Date).getFullYear(),k=(new Date(f,0,1)).getTimezoneOffset();f=(new Date(f,6,1)).getTimezoneOffset();H[a>>2]=60*Math.max(k,f);E[b>>2]=Number(k!=f);b=n=>{var l=Math.abs(n);return`UTC${0<=n?"-":"+"}${String(Math.floor(l/60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};
|
||||
a=b(k);b=b(f);f<k?(ra(a,c,17),ra(b,e,17)):(ra(a,e,17),ra(b,c,17))},fd:()=>performance.now(),ed:a=>R.activeTexture(a),dd:(a,b)=>{R.attachShader(Nc[a],Qc[b])},cd:(a,b)=>{R.beginQuery(a,Sc[b])},bd:(a,b)=>{R.me.beginQueryEXT(a,Sc[b])},ad:(a,b,c)=>{R.bindAttribLocation(Nc[a],b,c?db(B,c):"")},$c:(a,b)=>{35051==a?R.Ie=b:35052==a&&(R.re=b);R.bindBuffer(a,Mc[b])},_c:cd,Zc:(a,b)=>{R.bindRenderbuffer(a,Pc[b])},Yc:(a,b)=>{R.bindSampler(a,Tc[b])},Xc:(a,b)=>{R.bindTexture(a,ka[b])},Wc:dd,Vc:dd,Uc:(a,b,c,e)=>R.blendColor(a,
|
||||
b,c,e),Tc:a=>R.blendEquation(a),Sc:(a,b)=>R.blendFunc(a,b),Rc:(a,b,c,e,f,k,n,l,p,v)=>R.blitFramebuffer(a,b,c,e,f,k,n,l,p,v),Qc:(a,b,c,e)=>{2<=z.version?c&&b?R.bufferData(a,B,e,c,b):R.bufferData(a,b,e):R.bufferData(a,c?B.subarray(c,c+b):b,e)},Pc:(a,b,c,e)=>{2<=z.version?c&&R.bufferSubData(a,b,B,e,c):R.bufferSubData(a,b,B.subarray(e,e+c))},Oc:a=>R.checkFramebufferStatus(a),Nc:ed,Mc:fd,Lc:gd,Kc:(a,b,c,e)=>R.clientWaitSync(Uc[a],b,(c>>>0)+4294967296*e),Jc:(a,b,c,e)=>{R.colorMask(!!a,!!b,!!c,!!e)},Ic:a=>
|
||||
{R.compileShader(Qc[a])},Hc:(a,b,c,e,f,k,n,l)=>{2<=z.version?R.re||!n?R.compressedTexImage2D(a,b,c,e,f,k,n,l):R.compressedTexImage2D(a,b,c,e,f,k,B,l,n):R.compressedTexImage2D(a,b,c,e,f,k,B.subarray(l,l+n))},Gc:(a,b,c,e,f,k,n,l,p)=>{2<=z.version?R.re||!l?R.compressedTexSubImage2D(a,b,c,e,f,k,n,l,p):R.compressedTexSubImage2D(a,b,c,e,f,k,n,B,p,l):R.compressedTexSubImage2D(a,b,c,e,f,k,n,B.subarray(p,p+l))},Fc:(a,b,c,e,f)=>R.copyBufferSubData(a,b,c,e,f),Ec:(a,b,c,e,f,k,n,l)=>R.copyTexSubImage2D(a,b,c,
|
||||
e,f,k,n,l),Dc:()=>{var a=ja(Nc),b=R.createProgram();b.name=a;b.Ge=b.Ee=b.Fe=0;b.Me=1;Nc[a]=b;return a},Cc:a=>{var b=ja(Qc);Qc[b]=R.createShader(a);return b},Bc:a=>R.cullFace(a),Ac:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Mc[e];f&&(R.deleteBuffer(f),f.name=0,Mc[e]=null,e==R.Ie&&(R.Ie=0),e==R.re&&(R.re=0))}},zc:(a,b)=>{for(var c=0;c<a;++c){var e=E[b+4*c>>2],f=Oc[e];f&&(R.deleteFramebuffer(f),f.name=0,Oc[e]=null)}},yc:a=>{if(a){var b=Nc[a];b?(R.deleteProgram(b),b.name=0,Nc[a]=null):V||=1281}},
|
||||
xc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Sc[e];f&&(R.deleteQuery(f),Sc[e]=null)}},wc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Sc[e];f&&(R.me.deleteQueryEXT(f),Sc[e]=null)}},vc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Pc[e];f&&(R.deleteRenderbuffer(f),f.name=0,Pc[e]=null)}},uc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Tc[e];f&&(R.deleteSampler(f),f.name=0,Tc[e]=null)}},tc:a=>{if(a){var b=Qc[a];b?(R.deleteShader(b),Qc[a]=null):V||=1281}},sc:a=>{if(a){var b=Uc[a];b?
|
||||
(R.deleteSync(b),b.name=0,Uc[a]=null):V||=1281}},rc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=ka[e];f&&(R.deleteTexture(f),f.name=0,ka[e]=null)}},qc:hd,pc:hd,oc:a=>{R.depthMask(!!a)},nc:a=>R.disable(a),mc:a=>{R.disableVertexAttribArray(a)},lc:(a,b,c)=>{R.drawArrays(a,b,c)},kc:(a,b,c,e)=>{R.drawArraysInstanced(a,b,c,e)},jc:(a,b,c,e,f)=>{R.Pe.drawArraysInstancedBaseInstanceWEBGL(a,b,c,e,f)},ic:(a,b)=>{for(var c=jd[a],e=0;e<a;e++)c[e]=E[b+4*e>>2];R.drawBuffers(c)},hc:(a,b,c,e)=>{R.drawElements(a,
|
||||
b,c,e)},gc:(a,b,c,e,f)=>{R.drawElementsInstanced(a,b,c,e,f)},fc:(a,b,c,e,f,k,n)=>{R.Pe.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,e,f,k,n)},ec:(a,b,c,e,f,k)=>{R.drawElements(a,e,f,k)},dc:a=>R.enable(a),cc:a=>{R.enableVertexAttribArray(a)},bc:a=>R.endQuery(a),ac:a=>{R.me.endQueryEXT(a)},$b:(a,b)=>(a=R.fenceSync(a,b))?(b=ja(Uc),a.name=b,Uc[b]=a,b):0,_b:()=>R.finish(),Zb:()=>R.flush(),Yb:(a,b,c,e)=>{R.framebufferRenderbuffer(a,b,c,Pc[e])},Xb:(a,b,c,e,f)=>{R.framebufferTexture2D(a,b,c,ka[e],
|
||||
f)},Wb:a=>R.frontFace(a),Vb:(a,b)=>{$c(a,b,"createBuffer",Mc)},Ub:(a,b)=>{$c(a,b,"createFramebuffer",Oc)},Tb:(a,b)=>{$c(a,b,"createQuery",Sc)},Sb:(a,b)=>{for(var c=0;c<a;c++){var e=R.me.createQueryEXT();if(!e){for(V||=1282;c<a;)E[b+4*c++>>2]=0;break}var f=ja(Sc);e.name=f;Sc[f]=e;E[b+4*c>>2]=f}},Rb:(a,b)=>{$c(a,b,"createRenderbuffer",Pc)},Qb:(a,b)=>{$c(a,b,"createSampler",Tc)},Pb:(a,b)=>{$c(a,b,"createTexture",ka)},Ob:kd,Nb:kd,Mb:a=>R.generateMipmap(a),Lb:(a,b,c)=>{c?E[c>>2]=R.getBufferParameter(a,
|
||||
b):V||=1281},Kb:()=>{var a=R.getError()||V;V=0;return a},Jb:(a,b)=>md(a,b,2),Ib:(a,b,c,e)=>{a=R.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;E[e>>2]=a},Hb:nd,Gb:(a,b,c,e)=>{a=R.getProgramInfoLog(Nc[a]);null===a&&(a="(unknown error)");b=0<b&&e?ra(a,e,b):0;c&&(E[c>>2]=b)},Fb:(a,b,c)=>{if(c)if(a>=Lc)V||=1281;else if(a=Nc[a],35716==b)a=R.getProgramInfoLog(a),null===a&&(a="(unknown error)"),E[c>>2]=a.length+1;else if(35719==b){if(!a.Ge){var e=
|
||||
R.getProgramParameter(a,35718);for(b=0;b<e;++b)a.Ge=Math.max(a.Ge,R.getActiveUniform(a,b).name.length+1)}E[c>>2]=a.Ge}else if(35722==b){if(!a.Ee)for(e=R.getProgramParameter(a,35721),b=0;b<e;++b)a.Ee=Math.max(a.Ee,R.getActiveAttrib(a,b).name.length+1);E[c>>2]=a.Ee}else if(35381==b){if(!a.Fe)for(e=R.getProgramParameter(a,35382),b=0;b<e;++b)a.Fe=Math.max(a.Fe,R.getActiveUniformBlockName(a,b).length+1);E[c>>2]=a.Fe}else E[c>>2]=R.getProgramParameter(a,b);else V||=1281},Eb:od,Db:od,Cb:(a,b,c)=>{if(c){a=
|
||||
R.getQueryParameter(Sc[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;E[c>>2]=e}else V||=1281},Bb:(a,b,c)=>{if(c){a=R.me.getQueryObjectEXT(Sc[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;E[c>>2]=e}else V||=1281},Ab:(a,b,c)=>{c?E[c>>2]=R.getQuery(a,b):V||=1281},zb:(a,b,c)=>{c?E[c>>2]=R.me.getQueryEXT(a,b):V||=1281},yb:(a,b,c)=>{c?E[c>>2]=R.getRenderbufferParameter(a,b):V||=1281},xb:(a,b,c,e)=>{a=R.getShaderInfoLog(Qc[a]);null===a&&(a="(unknown error)");b=0<b&&e?ra(a,e,b):0;c&&(E[c>>2]=b)},wb:(a,b,c,e)=>
|
||||
{a=R.getShaderPrecisionFormat(a,b);E[c>>2]=a.rangeMin;E[c+4>>2]=a.rangeMax;E[e>>2]=a.precision},vb:(a,b,c)=>{c?35716==b?(a=R.getShaderInfoLog(Qc[a]),null===a&&(a="(unknown error)"),E[c>>2]=a?a.length+1:0):35720==b?(a=R.getShaderSource(Qc[a]),E[c>>2]=a?a.length+1:0):E[c>>2]=R.getShaderParameter(Qc[a],b):V||=1281},ub:rd,tb:sd,sb:(a,b)=>{b=b?db(B,b):"";if(a=Nc[a]){var c=a,e=c.xe,f=c.Ue,k;if(!e){c.xe=e={};c.Te={};var n=R.getProgramParameter(c,35718);for(k=0;k<n;++k){var l=R.getActiveUniform(c,k);var p=
|
||||
l.name;l=l.size;var v=td(p);v=0<v?p.slice(0,v):p;var w=c.Me;c.Me+=l;f[v]=[l,w];for(p=0;p<l;++p)e[w]=p,c.Te[w++]=v}}c=a.xe;e=0;f=b;k=td(b);0<k&&(e=parseInt(b.slice(k+1))>>>0,f=b.slice(0,k));if((f=a.Ue[f])&&e<f[0]&&(e+=f[1],c[e]=c[e]||R.getUniformLocation(a,b)))return e}else V||=1281;return-1},rb:(a,b,c)=>{for(var e=jd[b],f=0;f<b;f++)e[f]=E[c+4*f>>2];R.invalidateFramebuffer(a,e)},qb:(a,b,c,e,f,k,n)=>{for(var l=jd[b],p=0;p<b;p++)l[p]=E[c+4*p>>2];R.invalidateSubFramebuffer(a,l,e,f,k,n)},pb:a=>R.isSync(Uc[a]),
|
||||
ob:a=>(a=ka[a])?R.isTexture(a):0,nb:a=>R.lineWidth(a),mb:a=>{a=Nc[a];R.linkProgram(a);a.xe=0;a.Ue={}},lb:(a,b,c,e,f,k)=>{R.Re.multiDrawArraysInstancedBaseInstanceWEBGL(a,E,b>>2,E,c>>2,E,e>>2,H,f>>2,k)},kb:(a,b,c,e,f,k,n,l)=>{R.Re.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,E,b>>2,c,E,e>>2,E,f>>2,E,k>>2,H,n>>2,l)},jb:(a,b)=>{3317==a?Yc=b:3314==a&&(Zc=b);R.pixelStorei(a,b)},ib:(a,b)=>{R.me.queryCounterEXT(Sc[a],b)},hb:a=>R.readBuffer(a),gb:(a,b,c,e,f,k,n)=>{if(2<=z.version)if(R.Ie)R.readPixels(a,
|
||||
b,c,e,f,k,n);else{var l=ud(k);n>>>=31-Math.clz32(l.BYTES_PER_ELEMENT);R.readPixels(a,b,c,e,f,k,l,n)}else(l=vd(k,f,c,e,n))?R.readPixels(a,b,c,e,f,k,l):V||=1280},fb:(a,b,c,e)=>R.renderbufferStorage(a,b,c,e),eb:(a,b,c,e,f)=>R.renderbufferStorageMultisample(a,b,c,e,f),db:(a,b,c)=>{R.samplerParameterf(Tc[a],b,c)},cb:(a,b,c)=>{R.samplerParameteri(Tc[a],b,c)},bb:(a,b,c)=>{R.samplerParameteri(Tc[a],b,E[c>>2])},ab:(a,b,c,e)=>R.scissor(a,b,c,e),$a:(a,b,c,e)=>{for(var f="",k=0;k<b;++k){var n=(n=H[c+4*k>>2])?
|
||||
db(B,n,e?H[e+4*k>>2]:void 0):"";f+=n}R.shaderSource(Qc[a],f)},_a:(a,b,c)=>R.stencilFunc(a,b,c),Za:(a,b,c,e)=>R.stencilFuncSeparate(a,b,c,e),Ya:a=>R.stencilMask(a),Xa:(a,b)=>R.stencilMaskSeparate(a,b),Wa:(a,b,c)=>R.stencilOp(a,b,c),Va:(a,b,c,e)=>R.stencilOpSeparate(a,b,c,e),Ua:(a,b,c,e,f,k,n,l,p)=>{if(2<=z.version){if(R.re){R.texImage2D(a,b,c,e,f,k,n,l,p);return}if(p){var v=ud(l);p>>>=31-Math.clz32(v.BYTES_PER_ELEMENT);R.texImage2D(a,b,c,e,f,k,n,l,v,p);return}}v=p?vd(l,n,e,f,p):null;R.texImage2D(a,
|
||||
b,c,e,f,k,n,l,v)},Ta:(a,b,c)=>R.texParameterf(a,b,c),Sa:(a,b,c)=>{R.texParameterf(a,b,J[c>>2])},Ra:(a,b,c)=>R.texParameteri(a,b,c),Qa:(a,b,c)=>{R.texParameteri(a,b,E[c>>2])},Pa:(a,b,c,e,f)=>R.texStorage2D(a,b,c,e,f),Oa:(a,b,c,e,f,k,n,l,p)=>{if(2<=z.version){if(R.re){R.texSubImage2D(a,b,c,e,f,k,n,l,p);return}if(p){var v=ud(l);R.texSubImage2D(a,b,c,e,f,k,n,l,v,p>>>31-Math.clz32(v.BYTES_PER_ELEMENT));return}}p=p?vd(l,n,f,k,p):null;R.texSubImage2D(a,b,c,e,f,k,n,l,p)},Na:(a,b)=>{R.uniform1f(Y(a),b)},Ma:(a,
|
||||
b,c)=>{if(2<=z.version)b&&R.uniform1fv(Y(a),J,c>>2,b);else{if(288>=b)for(var e=wd[b],f=0;f<b;++f)e[f]=J[c+4*f>>2];else e=J.subarray(c>>2,c+4*b>>2);R.uniform1fv(Y(a),e)}},La:(a,b)=>{R.uniform1i(Y(a),b)},Ka:(a,b,c)=>{if(2<=z.version)b&&R.uniform1iv(Y(a),E,c>>2,b);else{if(288>=b)for(var e=xd[b],f=0;f<b;++f)e[f]=E[c+4*f>>2];else e=E.subarray(c>>2,c+4*b>>2);R.uniform1iv(Y(a),e)}},Ja:(a,b,c)=>{R.uniform2f(Y(a),b,c)},Ia:(a,b,c)=>{if(2<=z.version)b&&R.uniform2fv(Y(a),J,c>>2,2*b);else{if(144>=b){b*=2;for(var e=
|
||||
wd[b],f=0;f<b;f+=2)e[f]=J[c+4*f>>2],e[f+1]=J[c+(4*f+4)>>2]}else e=J.subarray(c>>2,c+8*b>>2);R.uniform2fv(Y(a),e)}},Ha:(a,b,c)=>{R.uniform2i(Y(a),b,c)},Ga:(a,b,c)=>{if(2<=z.version)b&&R.uniform2iv(Y(a),E,c>>2,2*b);else{if(144>=b){b*=2;for(var e=xd[b],f=0;f<b;f+=2)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2]}else e=E.subarray(c>>2,c+8*b>>2);R.uniform2iv(Y(a),e)}},Fa:(a,b,c,e)=>{R.uniform3f(Y(a),b,c,e)},Ea:(a,b,c)=>{if(2<=z.version)b&&R.uniform3fv(Y(a),J,c>>2,3*b);else{if(96>=b){b*=3;for(var e=wd[b],f=0;f<
|
||||
b;f+=3)e[f]=J[c+4*f>>2],e[f+1]=J[c+(4*f+4)>>2],e[f+2]=J[c+(4*f+8)>>2]}else e=J.subarray(c>>2,c+12*b>>2);R.uniform3fv(Y(a),e)}},Da:(a,b,c,e)=>{R.uniform3i(Y(a),b,c,e)},Ca:(a,b,c)=>{if(2<=z.version)b&&R.uniform3iv(Y(a),E,c>>2,3*b);else{if(96>=b){b*=3;for(var e=xd[b],f=0;f<b;f+=3)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2],e[f+2]=E[c+(4*f+8)>>2]}else e=E.subarray(c>>2,c+12*b>>2);R.uniform3iv(Y(a),e)}},Ba:(a,b,c,e,f)=>{R.uniform4f(Y(a),b,c,e,f)},Aa:(a,b,c)=>{if(2<=z.version)b&&R.uniform4fv(Y(a),J,c>>2,4*
|
||||
b);else{if(72>=b){var e=wd[4*b],f=J;c>>=2;b*=4;for(var k=0;k<b;k+=4){var n=c+k;e[k]=f[n];e[k+1]=f[n+1];e[k+2]=f[n+2];e[k+3]=f[n+3]}}else e=J.subarray(c>>2,c+16*b>>2);R.uniform4fv(Y(a),e)}},za:(a,b,c,e,f)=>{R.uniform4i(Y(a),b,c,e,f)},ya:(a,b,c)=>{if(2<=z.version)b&&R.uniform4iv(Y(a),E,c>>2,4*b);else{if(72>=b){b*=4;for(var e=xd[b],f=0;f<b;f+=4)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2],e[f+2]=E[c+(4*f+8)>>2],e[f+3]=E[c+(4*f+12)>>2]}else e=E.subarray(c>>2,c+16*b>>2);R.uniform4iv(Y(a),e)}},xa:(a,b,c,e)=>
|
||||
{if(2<=z.version)b&&R.uniformMatrix2fv(Y(a),!!c,J,e>>2,4*b);else{if(72>=b){b*=4;for(var f=wd[b],k=0;k<b;k+=4)f[k]=J[e+4*k>>2],f[k+1]=J[e+(4*k+4)>>2],f[k+2]=J[e+(4*k+8)>>2],f[k+3]=J[e+(4*k+12)>>2]}else f=J.subarray(e>>2,e+16*b>>2);R.uniformMatrix2fv(Y(a),!!c,f)}},wa:(a,b,c,e)=>{if(2<=z.version)b&&R.uniformMatrix3fv(Y(a),!!c,J,e>>2,9*b);else{if(32>=b){b*=9;for(var f=wd[b],k=0;k<b;k+=9)f[k]=J[e+4*k>>2],f[k+1]=J[e+(4*k+4)>>2],f[k+2]=J[e+(4*k+8)>>2],f[k+3]=J[e+(4*k+12)>>2],f[k+4]=J[e+(4*k+16)>>2],f[k+
|
||||
5]=J[e+(4*k+20)>>2],f[k+6]=J[e+(4*k+24)>>2],f[k+7]=J[e+(4*k+28)>>2],f[k+8]=J[e+(4*k+32)>>2]}else f=J.subarray(e>>2,e+36*b>>2);R.uniformMatrix3fv(Y(a),!!c,f)}},va:(a,b,c,e)=>{if(2<=z.version)b&&R.uniformMatrix4fv(Y(a),!!c,J,e>>2,16*b);else{if(18>=b){var f=wd[16*b],k=J;e>>=2;b*=16;for(var n=0;n<b;n+=16){var l=e+n;f[n]=k[l];f[n+1]=k[l+1];f[n+2]=k[l+2];f[n+3]=k[l+3];f[n+4]=k[l+4];f[n+5]=k[l+5];f[n+6]=k[l+6];f[n+7]=k[l+7];f[n+8]=k[l+8];f[n+9]=k[l+9];f[n+10]=k[l+10];f[n+11]=k[l+11];f[n+12]=k[l+12];f[n+
|
||||
13]=k[l+13];f[n+14]=k[l+14];f[n+15]=k[l+15]}}else f=J.subarray(e>>2,e+64*b>>2);R.uniformMatrix4fv(Y(a),!!c,f)}},ua:a=>{a=Nc[a];R.useProgram(a);R.bf=a},ta:(a,b)=>R.vertexAttrib1f(a,b),sa:(a,b)=>{R.vertexAttrib2f(a,J[b>>2],J[b+4>>2])},ra:(a,b)=>{R.vertexAttrib3f(a,J[b>>2],J[b+4>>2],J[b+8>>2])},qa:(a,b)=>{R.vertexAttrib4f(a,J[b>>2],J[b+4>>2],J[b+8>>2],J[b+12>>2])},pa:(a,b)=>{R.vertexAttribDivisor(a,b)},oa:(a,b,c,e,f)=>{R.vertexAttribIPointer(a,b,c,e,f)},na:(a,b,c,e,f,k)=>{R.vertexAttribPointer(a,b,c,
|
||||
!!e,f,k)},ma:(a,b,c,e)=>R.viewport(a,b,c,e),la:(a,b,c,e)=>{R.waitSync(Uc[a],b,(c>>>0)+4294967296*e)},ka:a=>{var b=B.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+1/c);e=Math.min(e,a+100663296);a:{e=(Math.min(2147483648,65536*Math.ceil(Math.max(a,e)/65536))-za.buffer.byteLength+65535)/65536|0;try{za.grow(e);Ha();var f=1;break a}catch(k){}f=void 0}if(f)return!0}return!1},ja:()=>z?z.handle:0,qd:(a,b)=>{var c=0;Ad().forEach((e,f)=>{var k=b+c;f=H[a+4*f>>2]=k;for(k=0;k<e.length;++k)Ca[f++]=
|
||||
e.charCodeAt(k);Ca[f]=0;c+=e.length+1});return 0},pd:(a,b)=>{var c=Ad();H[a>>2]=c.length;var e=0;c.forEach(f=>e+=f.length+1);H[b>>2]=e;return 0},ia:a=>{Xa||(Ba=!0);throw new Va(a);},N:()=>52,_:function(){return 52},od:()=>52,Z:function(){return 70},T:(a,b,c,e)=>{for(var f=0,k=0;k<c;k++){var n=H[b>>2],l=H[b+4>>2];b+=8;for(var p=0;p<l;p++){var v=B[n+p],w=Bd[a];0===v||10===v?((1===a?xa:ya)(db(w)),w.length=0):w.push(v)}f+=l}H[e>>2]=f;return 0},ha:cd,ga:ed,fa:fd,ea:gd,J:nd,Q:rd,da:sd,m:Hd,y:Id,l:Jd,I:Kd,
|
||||
ca:Ld,P:Md,O:Nd,t:Od,v:Pd,u:Qd,s:Rd,ba:Sd,aa:Td,$:Ud},Z=function(){function a(c){Z=c.exports;za=Z.wd;Ha();N=Z.zd;Ja.unshift(Z.xd);La--;0==La&&(null!==Na&&(clearInterval(Na),Na=null),Oa&&(c=Oa,Oa=null,c()));return Z}var b={a:Vd};La++;if(r.instantiateWasm)try{return r.instantiateWasm(b,a)}catch(c){ya(`Module.instantiateWasm callback failed with error: ${c}`),da(c)}Ra??=r.locateFile?Qa("canvaskit.wasm")?"canvaskit.wasm":ta+"canvaskit.wasm":(new URL("canvaskit.wasm",import.meta.url)).href;
|
||||
Ua(b,function(c){a(c.instance)}).catch(da);return{}}(),bc=a=>(bc=Z.yd)(a),pd=r._malloc=a=>(pd=r._malloc=Z.Ad)(a),cc=r._free=a=>(cc=r._free=Z.Bd)(a),Wd=(a,b)=>(Wd=Z.Cd)(a,b),Xd=a=>(Xd=Z.Dd)(a),Yd=()=>(Yd=Z.Ed)();r.dynCall_viji=(a,b,c,e,f)=>(r.dynCall_viji=Z.Fd)(a,b,c,e,f);r.dynCall_vijiii=(a,b,c,e,f,k,n)=>(r.dynCall_vijiii=Z.Gd)(a,b,c,e,f,k,n);r.dynCall_viiiiij=(a,b,c,e,f,k,n,l)=>(r.dynCall_viiiiij=Z.Hd)(a,b,c,e,f,k,n,l);r.dynCall_vij=(a,b,c,e)=>(r.dynCall_vij=Z.Id)(a,b,c,e);
|
||||
r.dynCall_iiiji=(a,b,c,e,f,k)=>(r.dynCall_iiiji=Z.Jd)(a,b,c,e,f,k);r.dynCall_jii=(a,b,c)=>(r.dynCall_jii=Z.Kd)(a,b,c);r.dynCall_jiiiiii=(a,b,c,e,f,k,n)=>(r.dynCall_jiiiiii=Z.Ld)(a,b,c,e,f,k,n);r.dynCall_jiiiiji=(a,b,c,e,f,k,n,l)=>(r.dynCall_jiiiiji=Z.Md)(a,b,c,e,f,k,n,l);r.dynCall_ji=(a,b)=>(r.dynCall_ji=Z.Nd)(a,b);r.dynCall_iijj=(a,b,c,e,f,k)=>(r.dynCall_iijj=Z.Od)(a,b,c,e,f,k);r.dynCall_iiji=(a,b,c,e,f)=>(r.dynCall_iiji=Z.Pd)(a,b,c,e,f);
|
||||
r.dynCall_iijjiii=(a,b,c,e,f,k,n,l,p)=>(r.dynCall_iijjiii=Z.Qd)(a,b,c,e,f,k,n,l,p);r.dynCall_iij=(a,b,c,e)=>(r.dynCall_iij=Z.Rd)(a,b,c,e);r.dynCall_vijjjii=(a,b,c,e,f,k,n,l,p,v)=>(r.dynCall_vijjjii=Z.Sd)(a,b,c,e,f,k,n,l,p,v);r.dynCall_jiji=(a,b,c,e,f)=>(r.dynCall_jiji=Z.Td)(a,b,c,e,f);r.dynCall_viijii=(a,b,c,e,f,k,n)=>(r.dynCall_viijii=Z.Ud)(a,b,c,e,f,k,n);r.dynCall_iiiiij=(a,b,c,e,f,k,n)=>(r.dynCall_iiiiij=Z.Vd)(a,b,c,e,f,k,n);
|
||||
r.dynCall_iiiiijj=(a,b,c,e,f,k,n,l,p)=>(r.dynCall_iiiiijj=Z.Wd)(a,b,c,e,f,k,n,l,p);r.dynCall_iiiiiijj=(a,b,c,e,f,k,n,l,p,v)=>(r.dynCall_iiiiiijj=Z.Xd)(a,b,c,e,f,k,n,l,p,v);function Rd(a,b,c,e,f){var k=Yd();try{N.get(a)(b,c,e,f)}catch(n){Xd(k);if(n!==n+0)throw n;Wd(1,0)}}function Id(a,b,c){var e=Yd();try{return N.get(a)(b,c)}catch(f){Xd(e);if(f!==f+0)throw f;Wd(1,0)}}function Pd(a,b,c){var e=Yd();try{N.get(a)(b,c)}catch(f){Xd(e);if(f!==f+0)throw f;Wd(1,0)}}
|
||||
function Hd(a,b){var c=Yd();try{return N.get(a)(b)}catch(e){Xd(c);if(e!==e+0)throw e;Wd(1,0)}}function Od(a,b){var c=Yd();try{N.get(a)(b)}catch(e){Xd(c);if(e!==e+0)throw e;Wd(1,0)}}function Jd(a,b,c,e){var f=Yd();try{return N.get(a)(b,c,e)}catch(k){Xd(f);if(k!==k+0)throw k;Wd(1,0)}}function Ud(a,b,c,e,f,k,n,l,p,v){var w=Yd();try{N.get(a)(b,c,e,f,k,n,l,p,v)}catch(A){Xd(w);if(A!==A+0)throw A;Wd(1,0)}}function Qd(a,b,c,e){var f=Yd();try{N.get(a)(b,c,e)}catch(k){Xd(f);if(k!==k+0)throw k;Wd(1,0)}}
|
||||
function Td(a,b,c,e,f,k,n){var l=Yd();try{N.get(a)(b,c,e,f,k,n)}catch(p){Xd(l);if(p!==p+0)throw p;Wd(1,0)}}function Md(a,b,c,e,f,k,n,l){var p=Yd();try{return N.get(a)(b,c,e,f,k,n,l)}catch(v){Xd(p);if(v!==v+0)throw v;Wd(1,0)}}function Sd(a,b,c,e,f,k){var n=Yd();try{N.get(a)(b,c,e,f,k)}catch(l){Xd(n);if(l!==l+0)throw l;Wd(1,0)}}function Kd(a,b,c,e,f){var k=Yd();try{return N.get(a)(b,c,e,f)}catch(n){Xd(k);if(n!==n+0)throw n;Wd(1,0)}}
|
||||
function Nd(a,b,c,e,f,k,n,l,p,v){var w=Yd();try{return N.get(a)(b,c,e,f,k,n,l,p,v)}catch(A){Xd(w);if(A!==A+0)throw A;Wd(1,0)}}function Ld(a,b,c,e,f,k,n){var l=Yd();try{return N.get(a)(b,c,e,f,k,n)}catch(p){Xd(l);if(p!==p+0)throw p;Wd(1,0)}}var Zd,$d;Oa=function ae(){Zd||be();Zd||(Oa=ae)};function be(){if(!(0<La)){if(!$d&&($d=1,Wa(Ia),0<La))return;Zd||(Zd=1,r.calledRun=1,Ba||(Wa(Ja),ca(r),r.onRuntimeInitialized?.(),Wa(Ka)))}}be();moduleRtn=ea;
|
||||
|
||||
|
||||
return moduleRtn;
|
||||
}
|
||||
);
|
||||
})();
|
||||
export default CanvasKitInit;
|
||||
|
|
@ -1,193 +0,0 @@
|
|||
|
||||
var CanvasKitInit = (() => {
|
||||
var _scriptName = import.meta.url;
|
||||
|
||||
return (
|
||||
function(moduleArg = {}) {
|
||||
var moduleRtn;
|
||||
|
||||
var r=moduleArg,ca,da,ea=new Promise((a,b)=>{ca=a;da=b}),fa="object"==typeof window,ia="function"==typeof importScripts;
|
||||
(function(a){a.Xd=a.Xd||[];a.Xd.push(function(){a.MakeSWCanvasSurface=function(b){var c=b,e="undefined"!==typeof OffscreenCanvas&&c instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&c instanceof HTMLCanvasElement||e||(c=document.getElementById(b),c)))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.ue=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var e={width:b,height:c,colorType:a.ColorType.RGBA_8888,
|
||||
alphaType:a.AlphaType.Unpremul,colorSpace:a.ColorSpace.SRGB},f=b*c*4,k=a._malloc(f);if(e=a.Surface._makeRasterDirect(e,k,4*b))e.ue=null,e.Ue=b,e.Re=c,e.Se=f,e.Be=k,e.getCanvas().clear(a.TRANSPARENT);return e};a.MakeRasterDirectSurface=function(b,c,e){return a.Surface._makeRasterDirect(b,c.byteOffset,e)};a.Surface.prototype.flush=function(b){a.Ud(this.Td);this._flush();if(this.ue){var c=new Uint8ClampedArray(a.HEAPU8.buffer,this.Be,this.Se);c=new ImageData(c,this.Ue,this.Re);b?this.ue.getContext("2d").putImageData(c,
|
||||
0,0,b[0],b[1],b[2]-b[0],b[3]-b[1]):this.ue.getContext("2d").putImageData(c,0,0)}};a.Surface.prototype.dispose=function(){this.Be&&a._free(this.Be);this.delete()};a.Ud=a.Ud||function(){};a.ve=a.ve||function(){return null}})})(r);
|
||||
(function(a){a.Xd=a.Xd||[];a.Xd.push(function(){function b(l,q,v){return l&&l.hasOwnProperty(q)?l[q]:v}function c(l){var q=ja(ka);ka[q]=l;return q}function e(l){return l.naturalHeight||l.videoHeight||l.displayHeight||l.height}function f(l){return l.naturalWidth||l.videoWidth||l.displayWidth||l.width}function k(l,q,v,w){l.bindTexture(l.TEXTURE_2D,q);w||v.alphaType!==a.AlphaType.Premul||l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);return q}function n(l,q,v){v||q.alphaType!==a.AlphaType.Premul||
|
||||
l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null)}a.GetWebGLContext=function(l,q){if(!l)throw"null canvas passed into makeWebGLContext";var v={alpha:b(q,"alpha",1),depth:b(q,"depth",1),stencil:b(q,"stencil",8),antialias:b(q,"antialias",0),premultipliedAlpha:b(q,"premultipliedAlpha",1),preserveDrawingBuffer:b(q,"preserveDrawingBuffer",0),preferLowPowerToHighPerformance:b(q,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(q,"failIfMajorPerformanceCaveat",
|
||||
0),enableExtensionsByDefault:b(q,"enableExtensionsByDefault",1),explicitSwapControl:b(q,"explicitSwapControl",0),renderViaOffscreenBackBuffer:b(q,"renderViaOffscreenBackBuffer",0)};v.majorVersion=q&&q.majorVersion?q.majorVersion:"undefined"!==typeof WebGL2RenderingContext?2:1;if(v.explicitSwapControl)throw"explicitSwapControl is not supported";l=na(l,v);if(!l)return 0;oa(l);z.fe.getExtension("WEBGL_debug_renderer_info");return l};a.deleteContext=function(l){z===pa[l]&&(z=null);"object"==typeof JSEvents&&
|
||||
JSEvents.uf(pa[l].fe.canvas);pa[l]&&pa[l].fe.canvas&&(pa[l].fe.canvas.Pe=void 0);pa[l]=null};a._setTextureCleanup({deleteTexture:function(l,q){var v=ka[q];v&&pa[l].fe.deleteTexture(v);ka[q]=null}});a.MakeWebGLContext=function(l){if(!this.Ud(l))return null;var q=this._MakeGrContext();if(!q)return null;q.Td=l;var v=q.delete.bind(q);q["delete"]=function(){a.Ud(this.Td);v()}.bind(q);return z.De=q};a.MakeGrContext=a.MakeWebGLContext;a.GrDirectContext.prototype.getResourceCacheLimitBytes=function(){a.Ud(this.Td);
|
||||
this._getResourceCacheLimitBytes()};a.GrDirectContext.prototype.getResourceCacheUsageBytes=function(){a.Ud(this.Td);this._getResourceCacheUsageBytes()};a.GrDirectContext.prototype.releaseResourcesAndAbandonContext=function(){a.Ud(this.Td);this._releaseResourcesAndAbandonContext()};a.GrDirectContext.prototype.setResourceCacheLimitBytes=function(l){a.Ud(this.Td);this._setResourceCacheLimitBytes(l)};a.MakeOnScreenGLSurface=function(l,q,v,w,A,D){if(!this.Ud(l.Td))return null;q=void 0===A||void 0===D?
|
||||
this._MakeOnScreenGLSurface(l,q,v,w):this._MakeOnScreenGLSurface(l,q,v,w,A,D);if(!q)return null;q.Td=l.Td;return q};a.MakeRenderTarget=function(){var l=arguments[0];if(!this.Ud(l.Td))return null;if(3===arguments.length){var q=this._MakeRenderTargetWH(l,arguments[1],arguments[2]);if(!q)return null}else if(2===arguments.length){if(q=this._MakeRenderTargetII(l,arguments[1]),!q)return null}else return null;q.Td=l.Td;return q};a.MakeWebGLCanvasSurface=function(l,q,v){q=q||null;var w=l,A="undefined"!==
|
||||
typeof OffscreenCanvas&&w instanceof OffscreenCanvas;if(!("undefined"!==typeof HTMLCanvasElement&&w instanceof HTMLCanvasElement||A||(w=document.getElementById(l),w)))throw"Canvas with id "+l+" was not found";l=this.GetWebGLContext(w,v);if(!l||0>l)throw"failed to create webgl context: err "+l;l=this.MakeWebGLContext(l);q=this.MakeOnScreenGLSurface(l,w.width,w.height,q);return q?q:(q=w.cloneNode(!0),w.parentNode.replaceChild(q,w),q.classList.add("ck-replaced"),a.MakeSWCanvasSurface(q))};a.MakeCanvasSurface=
|
||||
a.MakeWebGLCanvasSurface;a.Surface.prototype.makeImageFromTexture=function(l,q){a.Ud(this.Td);l=c(l);if(q=this._makeImageFromTexture(this.Td,l,q))q.oe=l;return q};a.Surface.prototype.makeImageFromTextureSource=function(l,q,v){q||={height:e(l),width:f(l),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul};q.colorSpace||(q.colorSpace=a.ColorSpace.SRGB);a.Ud(this.Td);var w=z.fe;v=k(w,w.createTexture(),q,v);2===z.version?w.texImage2D(w.TEXTURE_2D,0,w.RGBA,q.width,q.height,
|
||||
0,w.RGBA,w.UNSIGNED_BYTE,l):w.texImage2D(w.TEXTURE_2D,0,w.RGBA,w.RGBA,w.UNSIGNED_BYTE,l);n(w,q);this._resetContext();return this.makeImageFromTexture(v,q)};a.Surface.prototype.updateTextureFromSource=function(l,q,v){if(l.oe){a.Ud(this.Td);var w=l.getImageInfo(),A=z.fe,D=k(A,ka[l.oe],w,v);2===z.version?A.texImage2D(A.TEXTURE_2D,0,A.RGBA,f(q),e(q),0,A.RGBA,A.UNSIGNED_BYTE,q):A.texImage2D(A.TEXTURE_2D,0,A.RGBA,A.RGBA,A.UNSIGNED_BYTE,q);n(A,w,v);this._resetContext();ka[l.oe]=null;l.oe=c(D);w.colorSpace=
|
||||
l.getColorSpace();q=this._makeImageFromTexture(this.Td,l.oe,w);v=l.Sd.Vd;A=l.Sd.Zd;l.Sd.Vd=q.Sd.Vd;l.Sd.Zd=q.Sd.Zd;q.Sd.Vd=v;q.Sd.Zd=A;q.delete();w.colorSpace.delete()}};a.MakeLazyImageFromTextureSource=function(l,q,v){q||={height:e(l),width:f(l),colorType:a.ColorType.RGBA_8888,alphaType:v?a.AlphaType.Premul:a.AlphaType.Unpremul};q.colorSpace||(q.colorSpace=a.ColorSpace.SRGB);var w={makeTexture:function(){var A=z,D=A.fe,I=k(D,D.createTexture(),q,v);2===A.version?D.texImage2D(D.TEXTURE_2D,0,D.RGBA,
|
||||
q.width,q.height,0,D.RGBA,D.UNSIGNED_BYTE,l):D.texImage2D(D.TEXTURE_2D,0,D.RGBA,D.RGBA,D.UNSIGNED_BYTE,l);n(D,q,v);return c(I)},freeSrc:function(){}};"VideoFrame"===l.constructor.name&&(w.freeSrc=function(){l.close()});return a.Image._makeFromGenerator(q,w)};a.Ud=function(l){return l?oa(l):!1};a.ve=function(){return z&&z.De&&!z.De.isDeleted()?z.De:null}})})(r);
|
||||
(function(a){function b(g){return(f(255*g[3])<<24|f(255*g[0])<<16|f(255*g[1])<<8|f(255*g[2])<<0)>>>0}function c(g){if(g&&g._ck)return g;if(g instanceof Float32Array){for(var d=Math.floor(g.length/4),h=new Uint32Array(d),m=0;m<d;m++)h[m]=b(g.slice(4*m,4*(m+1)));return h}if(g instanceof Uint32Array)return g;if(g instanceof Array&&g[0]instanceof Float32Array)return g.map(b)}function e(g){if(void 0===g)return 1;var d=parseFloat(g);return g&&-1!==g.indexOf("%")?d/100:d}function f(g){return Math.round(Math.max(0,
|
||||
Math.min(g||0,255)))}function k(g,d){d&&d._ck||a._free(g)}function n(g,d,h){if(!g||!g.length)return 0;if(g&&g._ck)return g.byteOffset;var m=a[d].BYTES_PER_ELEMENT;h||=a._malloc(g.length*m);a[d].set(g,h/m);return h}function l(g){var d={be:0,count:g.length,colorType:a.ColorType.RGBA_F32};if(g instanceof Float32Array)d.be=n(g,"HEAPF32"),d.count=g.length/4;else if(g instanceof Uint32Array)d.be=n(g,"HEAPU32"),d.colorType=a.ColorType.RGBA_8888;else if(g instanceof Array){if(g&&g.length){for(var h=a._malloc(16*
|
||||
g.length),m=0,t=h/4,u=0;u<g.length;u++)for(var y=0;4>y;y++)a.HEAPF32[t+m]=g[u][y],m++;g=h}else g=0;d.be=g}else throw"Invalid argument to copyFlexibleColorArray, Not a color array "+typeof g;return d}function q(g){if(!g)return 0;var d=aa.toTypedArray();if(g.length){if(6===g.length||9===g.length)return n(g,"HEAPF32",O),6===g.length&&a.HEAPF32.set(Vc,6+O/4),O;if(16===g.length)return d[0]=g[0],d[1]=g[1],d[2]=g[3],d[3]=g[4],d[4]=g[5],d[5]=g[7],d[6]=g[12],d[7]=g[13],d[8]=g[15],O;throw"invalid matrix size";
|
||||
}if(void 0===g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m41;d[3]=g.m12;d[4]=g.m22;d[5]=g.m42;d[6]=g.m14;d[7]=g.m24;d[8]=g.m44;return O}function v(g){if(!g)return 0;var d=X.toTypedArray();if(g.length){if(16!==g.length&&6!==g.length&&9!==g.length)throw"invalid matrix size";if(16===g.length)return n(g,"HEAPF32",la);d.fill(0);d[0]=g[0];d[1]=g[1];d[3]=g[2];d[4]=g[3];d[5]=g[4];d[7]=g[5];d[10]=1;d[12]=g[6];d[13]=g[7];d[15]=g[8];6===g.length&&(d[12]=0,d[13]=0,d[15]=1);return la}if(void 0===
|
||||
g.m11)throw"invalid matrix argument";d[0]=g.m11;d[1]=g.m21;d[2]=g.m31;d[3]=g.m41;d[4]=g.m12;d[5]=g.m22;d[6]=g.m32;d[7]=g.m42;d[8]=g.m13;d[9]=g.m23;d[10]=g.m33;d[11]=g.m43;d[12]=g.m14;d[13]=g.m24;d[14]=g.m34;d[15]=g.m44;return la}function w(g,d){return n(g,"HEAPF32",d||ha)}function A(g,d,h,m){var t=Ea.toTypedArray();t[0]=g;t[1]=d;t[2]=h;t[3]=m;return ha}function D(g){for(var d=new Float32Array(4),h=0;4>h;h++)d[h]=a.HEAPF32[g/4+h];return d}function I(g,d){return n(g,"HEAPF32",d||U)}function P(g,d){return n(g,
|
||||
"HEAPF32",d||tb)}a.Color=function(g,d,h,m){void 0===m&&(m=1);return a.Color4f(f(g)/255,f(d)/255,f(h)/255,m)};a.ColorAsInt=function(g,d,h,m){void 0===m&&(m=255);return(f(m)<<24|f(g)<<16|f(d)<<8|f(h)<<0&268435455)>>>0};a.Color4f=function(g,d,h,m){void 0===m&&(m=1);return Float32Array.of(g,d,h,m)};Object.defineProperty(a,"TRANSPARENT",{get:function(){return a.Color4f(0,0,0,0)}});Object.defineProperty(a,"BLACK",{get:function(){return a.Color4f(0,0,0,1)}});Object.defineProperty(a,"WHITE",{get:function(){return a.Color4f(1,
|
||||
1,1,1)}});Object.defineProperty(a,"RED",{get:function(){return a.Color4f(1,0,0,1)}});Object.defineProperty(a,"GREEN",{get:function(){return a.Color4f(0,1,0,1)}});Object.defineProperty(a,"BLUE",{get:function(){return a.Color4f(0,0,1,1)}});Object.defineProperty(a,"YELLOW",{get:function(){return a.Color4f(1,1,0,1)}});Object.defineProperty(a,"CYAN",{get:function(){return a.Color4f(0,1,1,1)}});Object.defineProperty(a,"MAGENTA",{get:function(){return a.Color4f(1,0,1,1)}});a.getColorComponents=function(g){return[Math.floor(255*
|
||||
g[0]),Math.floor(255*g[1]),Math.floor(255*g[2]),g[3]]};a.parseColorString=function(g,d){g=g.toLowerCase();if(g.startsWith("#")){d=255;switch(g.length){case 9:d=parseInt(g.slice(7,9),16);case 7:var h=parseInt(g.slice(1,3),16);var m=parseInt(g.slice(3,5),16);var t=parseInt(g.slice(5,7),16);break;case 5:d=17*parseInt(g.slice(4,5),16);case 4:h=17*parseInt(g.slice(1,2),16),m=17*parseInt(g.slice(2,3),16),t=17*parseInt(g.slice(3,4),16)}return a.Color(h,m,t,d/255)}return g.startsWith("rgba")?(g=g.slice(5,
|
||||
-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("rgb")?(g=g.slice(4,-1),g=g.split(","),a.Color(+g[0],+g[1],+g[2],e(g[3]))):g.startsWith("gray(")||g.startsWith("hsl")||!d||(g=d[g],void 0===g)?a.BLACK:g};a.multiplyByAlpha=function(g,d){g=g.slice();g[3]=Math.max(0,Math.min(g[3]*d,1));return g};a.Malloc=function(g,d){var h=a._malloc(d*g.BYTES_PER_ELEMENT);return{_ck:!0,length:d,byteOffset:h,ke:null,subarray:function(m,t){m=this.toTypedArray().subarray(m,t);m._ck=!0;return m},toTypedArray:function(){if(this.ke&&
|
||||
this.ke.length)return this.ke;this.ke=new g(a.HEAPU8.buffer,h,d);this.ke._ck=!0;return this.ke}}};a.Free=function(g){a._free(g.byteOffset);g.byteOffset=0;g.toTypedArray=null;g.ke=null};var O=0,aa,la=0,X,ha=0,Ea,ba,U=0,Ub,Aa=0,Vb,ub=0,Wb,vb=0,$a,Ma=0,Xb,tb=0,Yb,Zb=0,Vc=Float32Array.of(0,0,1);a.onRuntimeInitialized=function(){function g(d,h,m,t,u,y,C){y||(y=4*t.width,t.colorType===a.ColorType.RGBA_F16?y*=2:t.colorType===a.ColorType.RGBA_F32&&(y*=4));var G=y*t.height;var F=u?u.byteOffset:a._malloc(G);
|
||||
if(C?!d._readPixels(t,F,y,h,m,C):!d._readPixels(t,F,y,h,m))return u||a._free(F),null;if(u)return u.toTypedArray();switch(t.colorType){case a.ColorType.RGBA_8888:case a.ColorType.RGBA_F16:d=(new Uint8Array(a.HEAPU8.buffer,F,G)).slice();break;case a.ColorType.RGBA_F32:d=(new Float32Array(a.HEAPU8.buffer,F,G)).slice();break;default:return null}a._free(F);return d}Ea=a.Malloc(Float32Array,4);ha=Ea.byteOffset;X=a.Malloc(Float32Array,16);la=X.byteOffset;aa=a.Malloc(Float32Array,9);O=aa.byteOffset;Xb=a.Malloc(Float32Array,
|
||||
12);tb=Xb.byteOffset;Yb=a.Malloc(Float32Array,12);Zb=Yb.byteOffset;ba=a.Malloc(Float32Array,4);U=ba.byteOffset;Ub=a.Malloc(Float32Array,4);Aa=Ub.byteOffset;Vb=a.Malloc(Float32Array,3);ub=Vb.byteOffset;Wb=a.Malloc(Float32Array,3);vb=Wb.byteOffset;$a=a.Malloc(Int32Array,4);Ma=$a.byteOffset;a.ColorSpace.SRGB=a.ColorSpace._MakeSRGB();a.ColorSpace.DISPLAY_P3=a.ColorSpace._MakeDisplayP3();a.ColorSpace.ADOBE_RGB=a.ColorSpace._MakeAdobeRGB();a.GlyphRunFlags={IsWhiteSpace:a._GlyphRunFlags_isWhiteSpace};a.Path.MakeFromCmds=
|
||||
function(d){var h=n(d,"HEAPF32"),m=a.Path._MakeFromCmds(h,d.length);k(h,d);return m};a.Path.MakeFromVerbsPointsWeights=function(d,h,m){var t=n(d,"HEAPU8"),u=n(h,"HEAPF32"),y=n(m,"HEAPF32"),C=a.Path._MakeFromVerbsPointsWeights(t,d.length,u,h.length/2,y,m&&m.length||0);k(t,d);k(u,h);k(y,m);return C};a.PathBuilder.prototype.addArc=function(d,h,m){d=I(d);this._addArc(d,h,m);return this};a.PathBuilder.prototype.addCircle=function(d,h,m,t){this._addCircle(d,h,m,!!t);return this};a.PathBuilder.prototype.addOval=
|
||||
function(d,h,m){void 0===m&&(m=1);d=I(d);this._addOval(d,!!h,m);return this};a.PathBuilder.prototype.addPath=function(){var d=Array.prototype.slice.call(arguments),h=d[0],m=!1;"boolean"===typeof d[d.length-1]&&(m=d.pop());if(1===d.length)this._addPath(h,1,0,0,0,1,0,0,0,1,m);else if(2===d.length)d=d[1],this._addPath(h,d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1,m);else if(7===d.length||10===d.length)this._addPath(h,d[1],d[2],d[3],d[4],d[5],d[6],d[7]||0,d[8]||0,d[9]||1,m);else return null;
|
||||
return this};a.PathBuilder.prototype.addPolygon=function(d,h){var m=n(d,"HEAPF32");this._addPolygon(m,d.length/2,h);k(m,d);return this};a.PathBuilder.prototype.addRect=function(d,h){d=I(d);this._addRect(d,!!h);return this};a.PathBuilder.prototype.addRRect=function(d,h){d=P(d);this._addRRect(d,!!h);return this};a.PathBuilder.prototype.addVerbsPointsWeights=function(d,h,m){var t=n(d,"HEAPU8"),u=n(h,"HEAPF32"),y=n(m,"HEAPF32");this._addVerbsPointsWeights(t,d.length,u,h.length/2,y,m&&m.length||0);k(t,
|
||||
d);k(u,h);k(y,m);return this};a.PathBuilder.prototype.arc=function(d,h,m,t,u,y){d=a.LTRBRect(d-m,h-m,d+m,h+m);u=(u-t)/Math.PI*180-360*!!y;t=(new a.PathBuilder).addArc(d,t/Math.PI*180,u).detachAndDelete();this.addPath(t,!0);t.delete();return this};a.PathBuilder.prototype.arcToOval=function(d,h,m,t){d=I(d);this._arcToOval(d,h,m,t);return this};a.PathBuilder.prototype.arcToRotated=function(d,h,m,t,u,y,C){this._arcToRotated(d,h,m,!!t,!!u,y,C);return this};a.PathBuilder.prototype.arcToTangent=function(d,
|
||||
h,m,t,u){this._arcToTangent(d,h,m,t,u);return this};a.PathBuilder.prototype.close=function(){this._close();return this};a.PathBuilder.prototype.conicTo=function(d,h,m,t,u){this._conicTo(d,h,m,t,u);return this};a.Path.prototype.computeTightBounds=function(d){this._computeTightBounds(U);var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.PathBuilder.prototype.cubicTo=function(d,h,m,t,u,y){this._cubicTo(d,h,m,t,u,y);return this};a.PathBuilder.prototype.detachAndDelete=function(){var d=this.detach();
|
||||
this.delete();return d};a.Path.prototype.getBounds=function(d){this._getBounds(U);var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.PathBuilder.prototype.getBounds=function(d){this._getBounds(U);var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.PathBuilder.prototype.lineTo=function(d,h){this._lineTo(d,h);return this};a.PathBuilder.prototype.moveTo=function(d,h){this._moveTo(d,h);return this};a.PathBuilder.prototype.offset=function(d,h){this._transform(1,0,d,0,1,h,0,0,1);return this};
|
||||
a.PathBuilder.prototype.quadTo=function(d,h,m,t){this._quadTo(d,h,m,t);return this};a.PathBuilder.prototype.rArcTo=function(d,h,m,t,u,y,C){this._rArcTo(d,h,m,t,u,y,C);return this};a.PathBuilder.prototype.rConicTo=function(d,h,m,t,u){this._rConicTo(d,h,m,t,u);return this};a.PathBuilder.prototype.rCubicTo=function(d,h,m,t,u,y){this._rCubicTo(d,h,m,t,u,y);return this};a.PathBuilder.prototype.rLineTo=function(d,h){this._rLineTo(d,h);return this};a.PathBuilder.prototype.rMoveTo=function(d,h){this._rMoveTo(d,
|
||||
h);return this};a.PathBuilder.prototype.rQuadTo=function(d,h,m,t){this._rQuadTo(d,h,m,t);return this};a.Path.prototype.makeStroked=function(d){d=d||{};d.width=d.width||1;d.miter_limit=d.miter_limit||4;d.cap=d.cap||a.StrokeCap.Butt;d.join=d.join||a.StrokeJoin.Miter;d.precision=d.precision||1;return this._makeStroked(d)};a.PathBuilder.prototype.transform=function(){if(1===arguments.length){var d=arguments[0];this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1)}else if(6===arguments.length||
|
||||
9===arguments.length)d=arguments,this._transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6]||0,d[7]||0,d[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.Path.prototype.makeTrimmed=function(d,h,m){return this._makeTrimmed(d,h,!!m)};a.Image.prototype.encodeToBytes=function(d,h){var m=a.ve();d=d||a.ImageFormat.PNG;h=h||100;return m?this._encodeToBytes(d,h,m):this._encodeToBytes(d,h)};a.Image.prototype.makeShaderCubic=function(d,h,m,t,u){u=q(u);return this._makeShaderCubic(d,
|
||||
h,m,t,u)};a.Image.prototype.makeShaderOptions=function(d,h,m,t,u){u=q(u);return this._makeShaderOptions(d,h,m,t,u)};a.Image.prototype.readPixels=function(d,h,m,t,u){var y=a.ve();return g(this,d,h,m,t,u,y)};a.Canvas.prototype.clear=function(d){a.Ud(this.Td);d=w(d);this._clear(d)};a.Canvas.prototype.clipRRect=function(d,h,m){a.Ud(this.Td);d=P(d);this._clipRRect(d,h,m)};a.Canvas.prototype.clipRect=function(d,h,m){a.Ud(this.Td);d=I(d);this._clipRect(d,h,m)};a.Canvas.prototype.concat=function(d){a.Ud(this.Td);
|
||||
d=v(d);this._concat(d)};a.Canvas.prototype.drawArc=function(d,h,m,t,u){a.Ud(this.Td);d=I(d);this._drawArc(d,h,m,t,u)};a.Canvas.prototype.drawAtlas=function(d,h,m,t,u,y,C){if(d&&t&&h&&m&&h.length===m.length){a.Ud(this.Td);u||(u=a.BlendMode.SrcOver);var G=n(h,"HEAPF32"),F=n(m,"HEAPF32"),S=m.length/4,T=n(c(y),"HEAPU32");if(C&&"B"in C&&"C"in C)this._drawAtlasCubic(d,F,G,T,S,u,C.B,C.C,t);else{let p=a.FilterMode.Linear,x=a.MipmapMode.None;C&&(p=C.filter,"mipmap"in C&&(x=C.mipmap));this._drawAtlasOptions(d,
|
||||
F,G,T,S,u,p,x,t)}k(G,h);k(F,m);k(T,y)}};a.Canvas.prototype.drawCircle=function(d,h,m,t){a.Ud(this.Td);this._drawCircle(d,h,m,t)};a.Canvas.prototype.drawColor=function(d,h){a.Ud(this.Td);d=w(d);void 0!==h?this._drawColor(d,h):this._drawColor(d)};a.Canvas.prototype.drawColorInt=function(d,h){a.Ud(this.Td);this._drawColorInt(d,h||a.BlendMode.SrcOver)};a.Canvas.prototype.drawColorComponents=function(d,h,m,t,u){a.Ud(this.Td);d=A(d,h,m,t);void 0!==u?this._drawColor(d,u):this._drawColor(d)};a.Canvas.prototype.drawDRRect=
|
||||
function(d,h,m){a.Ud(this.Td);d=P(d,tb);h=P(h,Zb);this._drawDRRect(d,h,m)};a.Canvas.prototype.drawImage=function(d,h,m,t){a.Ud(this.Td);this._drawImage(d,h,m,t||null)};a.Canvas.prototype.drawImageCubic=function(d,h,m,t,u,y){a.Ud(this.Td);this._drawImageCubic(d,h,m,t,u,y||null)};a.Canvas.prototype.drawImageOptions=function(d,h,m,t,u,y){a.Ud(this.Td);this._drawImageOptions(d,h,m,t,u,y||null)};a.Canvas.prototype.drawImageNine=function(d,h,m,t,u){a.Ud(this.Td);h=n(h,"HEAP32",Ma);m=I(m);this._drawImageNine(d,
|
||||
h,m,t,u||null)};a.Canvas.prototype.drawImageRect=function(d,h,m,t,u){a.Ud(this.Td);I(h,U);I(m,Aa);this._drawImageRect(d,U,Aa,t,!!u)};a.Canvas.prototype.drawImageRectCubic=function(d,h,m,t,u,y){a.Ud(this.Td);I(h,U);I(m,Aa);this._drawImageRectCubic(d,U,Aa,t,u,y||null)};a.Canvas.prototype.drawImageRectOptions=function(d,h,m,t,u,y){a.Ud(this.Td);I(h,U);I(m,Aa);this._drawImageRectOptions(d,U,Aa,t,u,y||null)};a.Canvas.prototype.drawLine=function(d,h,m,t,u){a.Ud(this.Td);this._drawLine(d,h,m,t,u)};a.Canvas.prototype.drawOval=
|
||||
function(d,h){a.Ud(this.Td);d=I(d);this._drawOval(d,h)};a.Canvas.prototype.drawPaint=function(d){a.Ud(this.Td);this._drawPaint(d)};a.Canvas.prototype.drawParagraph=function(d,h,m){a.Ud(this.Td);this._drawParagraph(d,h,m)};a.Canvas.prototype.drawPatch=function(d,h,m,t,u){if(24>d.length)throw"Need 12 cubic points";if(h&&4>h.length)throw"Need 4 colors";if(m&&8>m.length)throw"Need 4 shader coordinates";a.Ud(this.Td);const y=n(d,"HEAPF32"),C=h?n(c(h),"HEAPU32"):0,G=m?n(m,"HEAPF32"):0;t||(t=a.BlendMode.Modulate);
|
||||
this._drawPatch(y,C,G,t,u);k(G,m);k(C,h);k(y,d)};a.Canvas.prototype.drawPath=function(d,h){a.Ud(this.Td);this._drawPath(d,h)};a.Canvas.prototype.drawPicture=function(d){a.Ud(this.Td);this._drawPicture(d)};a.Canvas.prototype.drawPoints=function(d,h,m){a.Ud(this.Td);var t=n(h,"HEAPF32");this._drawPoints(d,t,h.length/2,m);k(t,h)};a.Canvas.prototype.drawRRect=function(d,h){a.Ud(this.Td);d=P(d);this._drawRRect(d,h)};a.Canvas.prototype.drawRect=function(d,h){a.Ud(this.Td);d=I(d);this._drawRect(d,h)};a.Canvas.prototype.drawRect4f=
|
||||
function(d,h,m,t,u){a.Ud(this.Td);this._drawRect4f(d,h,m,t,u)};a.Canvas.prototype.drawShadow=function(d,h,m,t,u,y,C){a.Ud(this.Td);var G=n(u,"HEAPF32"),F=n(y,"HEAPF32");h=n(h,"HEAPF32",ub);m=n(m,"HEAPF32",vb);this._drawShadow(d,h,m,t,G,F,C);k(G,u);k(F,y)};a.getShadowLocalBounds=function(d,h,m,t,u,y,C){d=q(d);m=n(m,"HEAPF32",ub);t=n(t,"HEAPF32",vb);if(!this._getShadowLocalBounds(d,h,m,t,u,y,U))return null;h=ba.toTypedArray();return C?(C.set(h),C):h.slice()};a.Canvas.prototype.drawTextBlob=function(d,
|
||||
h,m,t){a.Ud(this.Td);this._drawTextBlob(d,h,m,t)};a.Canvas.prototype.drawVertices=function(d,h,m){a.Ud(this.Td);this._drawVertices(d,h,m)};a.Canvas.prototype.getDeviceClipBounds=function(d){this._getDeviceClipBounds(Ma);var h=$a.toTypedArray();d?d.set(h):d=h.slice();return d};a.Canvas.prototype.quickReject=function(d){d=I(d);return this._quickReject(d)};a.Canvas.prototype.getLocalToDevice=function(){this._getLocalToDevice(la);for(var d=la,h=Array(16),m=0;16>m;m++)h[m]=a.HEAPF32[d/4+m];return h};a.Canvas.prototype.getTotalMatrix=
|
||||
function(){this._getTotalMatrix(O);for(var d=Array(9),h=0;9>h;h++)d[h]=a.HEAPF32[O/4+h];return d};a.Canvas.prototype.makeSurface=function(d){d=this._makeSurface(d);d.Td=this.Td;return d};a.Canvas.prototype.readPixels=function(d,h,m,t,u){a.Ud(this.Td);return g(this,d,h,m,t,u)};a.Canvas.prototype.saveLayer=function(d,h,m,t,u){h=I(h);return this._saveLayer(d||null,h,m||null,t||0,u||a.TileMode.Clamp)};a.Canvas.prototype.writePixels=function(d,h,m,t,u,y,C,G){if(d.byteLength%(h*m))throw"pixels length must be a multiple of the srcWidth * srcHeight";
|
||||
a.Ud(this.Td);var F=d.byteLength/(h*m);y=y||a.AlphaType.Unpremul;C=C||a.ColorType.RGBA_8888;G=G||a.ColorSpace.SRGB;var S=F*h;F=n(d,"HEAPU8");h=this._writePixels({width:h,height:m,colorType:C,alphaType:y,colorSpace:G},F,S,t,u);k(F,d);return h};a.ColorFilter.MakeBlend=function(d,h,m){d=w(d);m=m||a.ColorSpace.SRGB;return a.ColorFilter._MakeBlend(d,h,m)};a.ColorFilter.MakeMatrix=function(d){if(!d||20!==d.length)throw"invalid color matrix";var h=n(d,"HEAPF32"),m=a.ColorFilter._makeMatrix(h);k(h,d);return m};
|
||||
a.ContourMeasure.prototype.getPosTan=function(d,h){this._getPosTan(d,U);d=ba.toTypedArray();return h?(h.set(d),h):d.slice()};a.ImageFilter.prototype.getOutputBounds=function(d,h,m){d=I(d,U);h=q(h);this._getOutputBounds(d,h,Ma);h=$a.toTypedArray();return m?(m.set(h),m):h.slice()};a.ImageFilter.MakeDropShadow=function(d,h,m,t,u,y){u=w(u,ha);return a.ImageFilter._MakeDropShadow(d,h,m,t,u,y)};a.ImageFilter.MakeDropShadowOnly=function(d,h,m,t,u,y){u=w(u,ha);return a.ImageFilter._MakeDropShadowOnly(d,h,
|
||||
m,t,u,y)};a.ImageFilter.MakeImage=function(d,h,m,t){m=I(m,U);t=I(t,Aa);if("B"in h&&"C"in h)return a.ImageFilter._MakeImageCubic(d,h.B,h.C,m,t);const u=h.filter;let y=a.MipmapMode.None;"mipmap"in h&&(y=h.mipmap);return a.ImageFilter._MakeImageOptions(d,u,y,m,t)};a.ImageFilter.MakeMatrixTransform=function(d,h,m){d=q(d);if("B"in h&&"C"in h)return a.ImageFilter._MakeMatrixTransformCubic(d,h.B,h.C,m);const t=h.filter;let u=a.MipmapMode.None;"mipmap"in h&&(u=h.mipmap);return a.ImageFilter._MakeMatrixTransformOptions(d,
|
||||
t,u,m)};a.Paint.prototype.getColor=function(){this._getColor(ha);return D(ha)};a.Paint.prototype.setColor=function(d,h){h=h||null;d=w(d);this._setColor(d,h)};a.Paint.prototype.setColorComponents=function(d,h,m,t,u){u=u||null;d=A(d,h,m,t);this._setColor(d,u)};a.Path.prototype.getPoint=function(d,h){this._getPoint(d,U);d=ba.toTypedArray();return h?(h[0]=d[0],h[1]=d[1],h):d.slice(0,2)};a.Picture.prototype.makeShader=function(d,h,m,t,u){t=q(t);u=I(u);return this._makeShader(d,h,m,t,u)};a.Picture.prototype.cullRect=
|
||||
function(d){this._cullRect(U);var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.PictureRecorder.prototype.beginRecording=function(d,h){d=I(d);return this._beginRecording(d,!!h)};a.Surface.prototype.getCanvas=function(){var d=this._getCanvas();d.Td=this.Td;return d};a.Surface.prototype.makeImageSnapshot=function(d){a.Ud(this.Td);d=n(d,"HEAP32",Ma);return this._makeImageSnapshot(d)};a.Surface.prototype.makeSurface=function(d){a.Ud(this.Td);d=this._makeSurface(d);d.Td=this.Td;return d};a.Surface.prototype.Te=
|
||||
function(d,h){this.ne||(this.ne=this.getCanvas());return requestAnimationFrame(function(){a.Ud(this.Td);d(this.ne);this.flush(h)}.bind(this))};a.Surface.prototype.requestAnimationFrame||(a.Surface.prototype.requestAnimationFrame=a.Surface.prototype.Te);a.Surface.prototype.Qe=function(d,h){this.ne||(this.ne=this.getCanvas());requestAnimationFrame(function(){a.Ud(this.Td);d(this.ne);this.flush(h);this.dispose()}.bind(this))};a.Surface.prototype.drawOnce||(a.Surface.prototype.drawOnce=a.Surface.prototype.Qe);
|
||||
a.PathEffect.MakeDash=function(d,h){h||=0;if(!d.length||1===d.length%2)throw"Intervals array must have even length";var m=n(d,"HEAPF32");h=a.PathEffect._MakeDash(m,d.length,h);k(m,d);return h};a.PathEffect.MakeLine2D=function(d,h){h=q(h);return a.PathEffect._MakeLine2D(d,h)};a.PathEffect.MakePath2D=function(d,h){d=q(d);return a.PathEffect._MakePath2D(d,h)};a.Shader.MakeColor=function(d,h){h=h||null;d=w(d);return a.Shader._MakeColor(d,h)};a.Shader.Blend=a.Shader.MakeBlend;a.Shader.Color=a.Shader.MakeColor;
|
||||
a.Shader.MakeLinearGradient=function(d,h,m,t,u,y,C,G){G=G||null;var F=l(m),S=n(t,"HEAPF32");C=C||0;y=q(y);var T=ba.toTypedArray();T.set(d);T.set(h,2);d=a.Shader._MakeLinearGradient(U,F.be,F.colorType,S,F.count,u,C,y,G);k(F.be,m);t&&k(S,t);return d};a.Shader.MakeRadialGradient=function(d,h,m,t,u,y,C,G){G=G||null;var F=l(m),S=n(t,"HEAPF32");C=C||0;y=q(y);d=a.Shader._MakeRadialGradient(d[0],d[1],h,F.be,F.colorType,S,F.count,u,C,y,G);k(F.be,m);t&&k(S,t);return d};a.Shader.MakeSweepGradient=function(d,
|
||||
h,m,t,u,y,C,G,F,S){S=S||null;var T=l(m),p=n(t,"HEAPF32");C=C||0;G=G||0;F=F||360;y=q(y);d=a.Shader._MakeSweepGradient(d,h,T.be,T.colorType,p,T.count,u,G,F,C,y,S);k(T.be,m);t&&k(p,t);return d};a.Shader.MakeTwoPointConicalGradient=function(d,h,m,t,u,y,C,G,F,S){S=S||null;var T=l(u),p=n(y,"HEAPF32");F=F||0;G=q(G);var x=ba.toTypedArray();x.set(d);x.set(m,2);d=a.Shader._MakeTwoPointConicalGradient(U,h,t,T.be,T.colorType,p,T.count,C,F,G,S);k(T.be,u);y&&k(p,y);return d};a.Vertices.prototype.bounds=function(d){this._bounds(U);
|
||||
var h=ba.toTypedArray();return d?(d.set(h),d):h.slice()};a.Xd&&a.Xd.forEach(function(d){d()})};a.computeTonalColors=function(g){var d=n(g.ambient,"HEAPF32"),h=n(g.spot,"HEAPF32");this._computeTonalColors(d,h);var m={ambient:D(d),spot:D(h)};k(d,g.ambient);k(h,g.spot);return m};a.LTRBRect=function(g,d,h,m){return Float32Array.of(g,d,h,m)};a.XYWHRect=function(g,d,h,m){return Float32Array.of(g,d,g+h,d+m)};a.LTRBiRect=function(g,d,h,m){return Int32Array.of(g,d,h,m)};a.XYWHiRect=function(g,d,h,m){return Int32Array.of(g,
|
||||
d,g+h,d+m)};a.RRectXY=function(g,d,h){return Float32Array.of(g[0],g[1],g[2],g[3],d,h,d,h,d,h,d,h)};a.MakeAnimatedImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeAnimatedImage(d,g.byteLength))?g:null};a.MakeImageFromEncoded=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._decodeImage(d,g.byteLength))?g:null};var ab=null;a.MakeImageFromCanvasImageSource=function(g){var d=g.width,h=g.height;
|
||||
ab||=document.createElement("canvas");ab.width=d;ab.height=h;var m=ab.getContext("2d",{willReadFrequently:!0});m.drawImage(g,0,0);g=m.getImageData(0,0,d,h);return a.MakeImage({width:d,height:h,alphaType:a.AlphaType.Unpremul,colorType:a.ColorType.RGBA_8888,colorSpace:a.ColorSpace.SRGB},g.data,4*d)};a.MakeImage=function(g,d,h){var m=a._malloc(d.length);a.HEAPU8.set(d,m);return a._MakeImage(g,m,d.length,h)};a.MakeVertices=function(g,d,h,m,t,u){var y=t&&t.length||0,C=0;h&&h.length&&(C|=1);m&&m.length&&
|
||||
(C|=2);void 0===u||u||(C|=4);g=new a._VerticesBuilder(g,d.length/2,y,C);n(d,"HEAPF32",g.positions());g.texCoords()&&n(h,"HEAPF32",g.texCoords());g.colors()&&n(c(m),"HEAPU32",g.colors());g.indices()&&n(t,"HEAPU16",g.indices());return g.detach()};(function(g){g.Xd=g.Xd||[];g.Xd.push(function(){function d(p){p&&(p.dir=0===p.dir?g.TextDirection.RTL:g.TextDirection.LTR);return p}function h(p){if(!p||!p.length)return[];for(var x=[],M=0;M<p.length;M+=5){var W=g.LTRBRect(p[M],p[M+1],p[M+2],p[M+3]),wa=g.TextDirection.LTR;
|
||||
0===p[M+4]&&(wa=g.TextDirection.RTL);x.push({rect:W,dir:wa})}g._free(p.byteOffset);return x}function m(p){p=p||{};void 0===p.weight&&(p.weight=g.FontWeight.Normal);p.width=p.width||g.FontWidth.Normal;p.slant=p.slant||g.FontSlant.Upright;return p}function t(p){if(!p||!p.length)return 0;for(var x=[],M=0;M<p.length;M++){var W=u(p[M]);x.push(W)}return n(x,"HEAPU32")}function u(p){if(G[p])return G[p];var x=qa(p)+1,M=g._malloc(x);ra(p,M,x);return G[p]=M}function y(p){p._colorPtr=w(p.color);p._foregroundColorPtr=
|
||||
0;p._backgroundColorPtr=0;p._decorationColorPtr=0;p.foregroundColor&&(p._foregroundColorPtr=w(p.foregroundColor,F));p.backgroundColor&&(p._backgroundColorPtr=w(p.backgroundColor,S));p.decorationColor&&(p._decorationColorPtr=w(p.decorationColor,T));Array.isArray(p.fontFamilies)&&p.fontFamilies.length?(p._fontFamiliesPtr=t(p.fontFamilies),p._fontFamiliesLen=p.fontFamilies.length):(p._fontFamiliesPtr=0,p._fontFamiliesLen=0);if(p.locale){var x=p.locale;p._localePtr=u(x);p._localeLen=qa(x)}else p._localePtr=
|
||||
0,p._localeLen=0;if(Array.isArray(p.shadows)&&p.shadows.length){x=p.shadows;var M=x.map(function(ma){return ma.color||g.BLACK}),W=x.map(function(ma){return ma.blurRadius||0});p._shadowLen=x.length;for(var wa=g._malloc(8*x.length),wb=wa/4,xb=0;xb<x.length;xb++){var $b=x[xb].offset||[0,0];g.HEAPF32[wb]=$b[0];g.HEAPF32[wb+1]=$b[1];wb+=2}p._shadowColorsPtr=l(M).be;p._shadowOffsetsPtr=wa;p._shadowBlurRadiiPtr=n(W,"HEAPF32")}else p._shadowLen=0,p._shadowColorsPtr=0,p._shadowOffsetsPtr=0,p._shadowBlurRadiiPtr=
|
||||
0;Array.isArray(p.fontFeatures)&&p.fontFeatures.length?(x=p.fontFeatures,M=x.map(function(ma){return ma.name}),W=x.map(function(ma){return ma.value}),p._fontFeatureLen=x.length,p._fontFeatureNamesPtr=t(M),p._fontFeatureValuesPtr=n(W,"HEAPU32")):(p._fontFeatureLen=0,p._fontFeatureNamesPtr=0,p._fontFeatureValuesPtr=0);Array.isArray(p.fontVariations)&&p.fontVariations.length?(x=p.fontVariations,M=x.map(function(ma){return ma.axis}),W=x.map(function(ma){return ma.value}),p._fontVariationLen=x.length,
|
||||
p._fontVariationAxesPtr=t(M),p._fontVariationValuesPtr=n(W,"HEAPF32")):(p._fontVariationLen=0,p._fontVariationAxesPtr=0,p._fontVariationValuesPtr=0)}function C(p){g._free(p._fontFamiliesPtr);g._free(p._shadowColorsPtr);g._free(p._shadowOffsetsPtr);g._free(p._shadowBlurRadiiPtr);g._free(p._fontFeatureNamesPtr);g._free(p._fontFeatureValuesPtr);g._free(p._fontVariationAxesPtr);g._free(p._fontVariationValuesPtr)}g.Paragraph.prototype.getRectsForRange=function(p,x,M,W){p=this._getRectsForRange(p,x,M,W);
|
||||
return h(p)};g.Paragraph.prototype.getRectsForPlaceholders=function(){var p=this._getRectsForPlaceholders();return h(p)};g.Paragraph.prototype.getGlyphInfoAt=function(p){return d(this._getGlyphInfoAt(p))};g.Paragraph.prototype.getClosestGlyphInfoAtCoordinate=function(p,x){return d(this._getClosestGlyphInfoAtCoordinate(p,x))};g.TypefaceFontProvider.prototype.registerFont=function(p,x){p=g.Typeface.MakeTypefaceFromData(p);if(!p)return null;x=u(x);this._registerFont(p,x);p.delete()};g.ParagraphStyle=
|
||||
function(p){p.disableHinting=p.disableHinting||!1;if(p.ellipsis){var x=p.ellipsis;p._ellipsisPtr=u(x);p._ellipsisLen=qa(x)}else p._ellipsisPtr=0,p._ellipsisLen=0;null==p.heightMultiplier&&(p.heightMultiplier=-1);p.maxLines=p.maxLines||0;p.replaceTabCharacters=p.replaceTabCharacters||!1;x=(x=p.strutStyle)||{};x.strutEnabled=x.strutEnabled||!1;x.strutEnabled&&Array.isArray(x.fontFamilies)&&x.fontFamilies.length?(x._fontFamiliesPtr=t(x.fontFamilies),x._fontFamiliesLen=x.fontFamilies.length):(x._fontFamiliesPtr=
|
||||
0,x._fontFamiliesLen=0);x.fontStyle=m(x.fontStyle);null==x.fontSize&&(x.fontSize=-1);null==x.heightMultiplier&&(x.heightMultiplier=-1);x.halfLeading=x.halfLeading||!1;x.leading=x.leading||0;x.forceStrutHeight=x.forceStrutHeight||!1;p.strutStyle=x;p.textAlign=p.textAlign||g.TextAlign.Start;p.textDirection=p.textDirection||g.TextDirection.LTR;p.textHeightBehavior=p.textHeightBehavior||g.TextHeightBehavior.All;p.textStyle=g.TextStyle(p.textStyle);p.applyRoundingHack=!1!==p.applyRoundingHack;return p};
|
||||
g.TextStyle=function(p){p.color||(p.color=g.BLACK);p.decoration=p.decoration||0;p.decorationThickness=p.decorationThickness||0;p.decorationStyle=p.decorationStyle||g.DecorationStyle.Solid;p.textBaseline=p.textBaseline||g.TextBaseline.Alphabetic;null==p.fontSize&&(p.fontSize=-1);p.letterSpacing=p.letterSpacing||0;p.wordSpacing=p.wordSpacing||0;null==p.heightMultiplier&&(p.heightMultiplier=-1);p.halfLeading=p.halfLeading||!1;p.fontStyle=m(p.fontStyle);return p};var G={},F=g._malloc(16),S=g._malloc(16),
|
||||
T=g._malloc(16);g.ParagraphBuilder.Make=function(p,x){y(p.textStyle);x=g.ParagraphBuilder._Make(p,x);C(p.textStyle);return x};g.ParagraphBuilder.MakeFromFontProvider=function(p,x){y(p.textStyle);x=g.ParagraphBuilder._MakeFromFontProvider(p,x);C(p.textStyle);return x};g.ParagraphBuilder.MakeFromFontCollection=function(p,x){y(p.textStyle);x=g.ParagraphBuilder._MakeFromFontCollection(p,x);C(p.textStyle);return x};g.ParagraphBuilder.ShapeText=function(p,x,M){let W=0;for(const wa of x)W+=wa.length;if(W!==
|
||||
p.length)throw"Accumulated block lengths must equal text.length";return g.ParagraphBuilder._ShapeText(p,x,M)};g.ParagraphBuilder.prototype.pushStyle=function(p){y(p);this._pushStyle(p);C(p)};g.ParagraphBuilder.prototype.pushPaintStyle=function(p,x,M){y(p);this._pushPaintStyle(p,x,M);C(p)};g.ParagraphBuilder.prototype.addPlaceholder=function(p,x,M,W,wa){M=M||g.PlaceholderAlignment.Baseline;W=W||g.TextBaseline.Alphabetic;this._addPlaceholder(p||0,x||0,M,W,wa||0)};g.ParagraphBuilder.prototype.setWordsUtf8=
|
||||
function(p){var x=n(p,"HEAPU32");this._setWordsUtf8(x,p&&p.length||0);k(x,p)};g.ParagraphBuilder.prototype.setWordsUtf16=function(p){var x=n(p,"HEAPU32");this._setWordsUtf16(x,p&&p.length||0);k(x,p)};g.ParagraphBuilder.prototype.setGraphemeBreaksUtf8=function(p){var x=n(p,"HEAPU32");this._setGraphemeBreaksUtf8(x,p&&p.length||0);k(x,p)};g.ParagraphBuilder.prototype.setGraphemeBreaksUtf16=function(p){var x=n(p,"HEAPU32");this._setGraphemeBreaksUtf16(x,p&&p.length||0);k(x,p)};g.ParagraphBuilder.prototype.setLineBreaksUtf8=
|
||||
function(p){var x=n(p,"HEAPU32");this._setLineBreaksUtf8(x,p&&p.length||0);k(x,p)};g.ParagraphBuilder.prototype.setLineBreaksUtf16=function(p){var x=n(p,"HEAPU32");this._setLineBreaksUtf16(x,p&&p.length||0);k(x,p)}})})(r);a.Xd=a.Xd||[];a.Xd.push(function(){});a.Xd=a.Xd||[];a.Xd.push(function(){a.Canvas.prototype.drawText=function(g,d,h,m,t){var u=qa(g),y=a._malloc(u+1);ra(g,y,u+1);this._drawSimpleText(y,u,d,h,t,m);a._free(y)};a.Canvas.prototype.drawGlyphs=function(g,d,h,m,t,u){if(!(2*g.length<=d.length))throw"Not enough positions for the array of gyphs";
|
||||
a.Ud(this.Td);const y=n(g,"HEAPU16"),C=n(d,"HEAPF32");this._drawGlyphs(g.length,y,C,h,m,t,u);k(C,d);k(y,g)};a.Font.prototype.getGlyphBounds=function(g,d,h){var m=n(g,"HEAPU16"),t=a._malloc(16*g.length);this._getGlyphWidthBounds(m,g.length,0,t,d||null);d=new Float32Array(a.HEAPU8.buffer,t,4*g.length);k(m,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.Font.prototype.getGlyphIDs=function(g,d,h){d||(d=g.length);var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=a._malloc(2*d);
|
||||
d=this._getGlyphIDs(t,m-1,d,g);a._free(t);if(0>d)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);a._free(g);return h};a.Font.prototype.getGlyphIntercepts=function(g,d,h,m){var t=n(g,"HEAPU16"),u=n(d,"HEAPF32");return this._getGlyphIntercepts(t,g.length,!(g&&g._ck),u,d.length,!(d&&d._ck),h,m)};a.Font.prototype.getGlyphWidths=function(g,d,h){var m=n(g,"HEAPU16"),t=a._malloc(4*g.length);this._getGlyphWidthBounds(m,g.length,t,0,d||
|
||||
null);d=new Float32Array(a.HEAPU8.buffer,t,g.length);k(m,g);if(h)return h.set(d),a._free(t),h;g=Float32Array.from(d);a._free(t);return g};a.FontMgr.FromData=function(){if(!arguments.length)return null;var g=arguments;1===g.length&&Array.isArray(g[0])&&(g=arguments[0]);if(!g.length)return null;for(var d=[],h=[],m=0;m<g.length;m++){var t=new Uint8Array(g[m]),u=n(t,"HEAPU8");d.push(u);h.push(t.byteLength)}d=n(d,"HEAPU32");h=n(h,"HEAPU32");g=a.FontMgr._fromData(d,h,g.length);a._free(d);a._free(h);return g};
|
||||
a.Typeface.MakeTypefaceFromData=function(g){g=new Uint8Array(g);var d=n(g,"HEAPU8");return(g=a.Typeface._MakeTypefaceFromData(d,g.byteLength))?g:null};a.Typeface.MakeFreeTypeFaceFromData=a.Typeface.MakeTypefaceFromData;a.Typeface.prototype.getGlyphIDs=function(g,d,h){d||(d=g.length);var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=a._malloc(2*d);d=this._getGlyphIDs(t,m-1,d,g);a._free(t);if(0>d)return a._free(g),null;t=new Uint16Array(a.HEAPU8.buffer,g,d);if(h)return h.set(t),a._free(g),h;h=Uint16Array.from(t);
|
||||
a._free(g);return h};a.TextBlob.MakeOnPath=function(g,d,h,m){if(g&&g.length&&d&&d.countPoints()){if(1===d.countPoints())return this.MakeFromText(g,h);m||=0;var t=h.getGlyphIDs(g);t=h.getGlyphWidths(t);var u=[];d=new a.ContourMeasureIter(d,!1,1);for(var y=d.next(),C=new Float32Array(4),G=0;G<g.length&&y;G++){var F=t[G];m+=F/2;if(m>y.length()){y.delete();y=d.next();if(!y){g=g.substring(0,G);break}m=F/2}y.getPosTan(m,C);var S=C[2],T=C[3];u.push(S,T,C[0]-F/2*S,C[1]-F/2*T);m+=F/2}g=this.MakeFromRSXform(g,
|
||||
u,h);y&&y.delete();d.delete();return g}};a.TextBlob.MakeFromRSXform=function(g,d,h){var m=qa(g)+1,t=a._malloc(m);ra(g,t,m);g=n(d,"HEAPF32");h=a.TextBlob._MakeFromRSXform(t,m-1,g,h);a._free(t);return h?h:null};a.TextBlob.MakeFromRSXformGlyphs=function(g,d,h){var m=n(g,"HEAPU16");d=n(d,"HEAPF32");h=a.TextBlob._MakeFromRSXformGlyphs(m,2*g.length,d,h);k(m,g);return h?h:null};a.TextBlob.MakeFromGlyphs=function(g,d){var h=n(g,"HEAPU16");d=a.TextBlob._MakeFromGlyphs(h,2*g.length,d);k(h,g);return d?d:null};
|
||||
a.TextBlob.MakeFromText=function(g,d){var h=qa(g)+1,m=a._malloc(h);ra(g,m,h);g=a.TextBlob._MakeFromText(m,h-1,d);a._free(m);return g?g:null};a.MallocGlyphIDs=function(g){return a.Malloc(Uint16Array,g)}});a.Xd=a.Xd||[];a.Xd.push(function(){a.MakePicture=function(g){g=new Uint8Array(g);var d=a._malloc(g.byteLength);a.HEAPU8.set(g,d);return(g=a._MakePicture(d,g.byteLength))?g:null}});a.Xd=a.Xd||[];a.Xd.push(function(){a.RuntimeEffect.Make=function(g,d){return a.RuntimeEffect._Make(g,{onError:d||function(h){console.log("RuntimeEffect error",
|
||||
h)}})};a.RuntimeEffect.MakeForBlender=function(g,d){return a.RuntimeEffect._MakeForBlender(g,{onError:d||function(h){console.log("RuntimeEffect error",h)}})};a.RuntimeEffect.prototype.makeShader=function(g,d){var h=!g._ck,m=n(g,"HEAPF32");d=q(d);return this._makeShader(m,4*g.length,h,d)};a.RuntimeEffect.prototype.makeShaderWithChildren=function(g,d,h){var m=!g._ck,t=n(g,"HEAPF32");h=q(h);for(var u=[],y=0;y<d.length;y++)u.push(d[y].Sd.Vd);d=n(u,"HEAPU32");return this._makeShaderWithChildren(t,4*g.length,
|
||||
m,d,u.length,h)};a.RuntimeEffect.prototype.makeBlender=function(g){var d=!g._ck,h=n(g,"HEAPF32");return this._makeBlender(h,4*g.length,d)}})})(r);var sa=Object.assign({},r),ta="",ua,va;
|
||||
if(fa||ia)ia?ta=self.location.href:"undefined"!=typeof document&&document.currentScript&&(ta=document.currentScript.src),_scriptName&&(ta=_scriptName),ta.startsWith("blob:")?ta="":ta=ta.substr(0,ta.replace(/[?#].*/,"").lastIndexOf("/")+1),ia&&(va=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),ua=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
|
||||
var xa=console.log.bind(console),ya=console.error.bind(console);Object.assign(r,sa);sa=null;var za,Ba=!1,Ca,B,Da,Fa,E,H,J,Ga;function Ha(){var a=za.buffer;r.HEAP8=Ca=new Int8Array(a);r.HEAP16=Da=new Int16Array(a);r.HEAPU8=B=new Uint8Array(a);r.HEAPU16=Fa=new Uint16Array(a);r.HEAP32=E=new Int32Array(a);r.HEAPU32=H=new Uint32Array(a);r.HEAPF32=J=new Float32Array(a);r.HEAPF64=Ga=new Float64Array(a)}var Ia=[],Ja=[],Ka=[],La=0,Na=null,Oa=null;
|
||||
function Pa(a){a="Aborted("+a+")";ya(a);Ba=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");da(a);throw a;}var Qa=a=>a.startsWith("data:application/octet-stream;base64,"),Ra;function Sa(a){return ua(a).then(b=>new Uint8Array(b),()=>{if(va)var b=va(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ta(a,b,c){return Sa(a).then(e=>WebAssembly.instantiate(e,b)).then(c,e=>{ya(`failed to asynchronously prepare wasm: ${e}`);Pa(e)})}
|
||||
function Ua(a,b){var c=Ra;return"function"!=typeof WebAssembly.instantiateStreaming||Qa(c)||"function"!=typeof fetch?Ta(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){ya(`wasm streaming compile failed: ${f}`);ya("falling back to ArrayBuffer instantiation");return Ta(c,a,b)}))}function Va(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}var Wa=a=>{a.forEach(b=>b(r))},Xa=r.noExitRuntime||!0;
|
||||
class Ya{constructor(a){this.Vd=a-24}}
|
||||
var Za=0,bb=0,cb="undefined"!=typeof TextDecoder?new TextDecoder:void 0,db=(a,b=0,c=NaN)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16<c-b&&a.buffer&&cb)return cb.decode(a.subarray(b,c));for(e="";b<c;){var f=a[b++];if(f&128){var k=a[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|k);else{var n=a[b++]&63;f=224==(f&240)?(f&15)<<12|k<<6|n:(f&7)<<18|k<<12|n<<6|a[b++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e},
|
||||
eb={},fb=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}};function gb(a){return this.fromWireType(H[a>>2])}
|
||||
var hb={},ib={},jb={},kb,mb=(a,b,c)=>{function e(l){l=c(l);if(l.length!==a.length)throw new kb("Mismatched type converter count");for(var q=0;q<a.length;++q)lb(a[q],l[q])}a.forEach(l=>jb[l]=b);var f=Array(b.length),k=[],n=0;b.forEach((l,q)=>{ib.hasOwnProperty(l)?f[q]=ib[l]:(k.push(l),hb.hasOwnProperty(l)||(hb[l]=[]),hb[l].push(()=>{f[q]=ib[l];++n;n===k.length&&e(f)}))});0===k.length&&e(f)},nb,K=a=>{for(var b="";B[a];)b+=nb[B[a++]];return b},L;
|
||||
function ob(a,b,c={}){var e=b.name;if(!a)throw new L(`type "${e}" must have a positive integer typeid pointer`);if(ib.hasOwnProperty(a)){if(c.ef)return;throw new L(`Cannot register type '${e}' twice`);}ib[a]=b;delete jb[a];hb.hasOwnProperty(a)&&(b=hb[a],delete hb[a],b.forEach(f=>f()))}function lb(a,b,c={}){return ob(a,b,c)}
|
||||
var pb=a=>{throw new L(a.Sd.Yd.Wd.name+" instance already deleted");},qb=!1,rb=()=>{},sb=(a,b,c)=>{if(b===c)return a;if(void 0===c.ae)return null;a=sb(a,b,c.ae);return null===a?null:c.Xe(a)},yb={},zb={},Ab=(a,b)=>{if(void 0===b)throw new L("ptr should not be undefined");for(;a.ae;)b=a.se(b),a=a.ae;return zb[b]},Cb=(a,b)=>{if(!b.Yd||!b.Vd)throw new kb("makeClassHandle requires ptr and ptrType");if(!!b.ce!==!!b.Zd)throw new kb("Both smartPtrType and smartPtr must be specified");b.count={value:1};return Bb(Object.create(a,
|
||||
{Sd:{value:b,writable:!0}}))},Bb=a=>{if("undefined"===typeof FinalizationRegistry)return Bb=b=>b,a;qb=new FinalizationRegistry(b=>{b=b.Sd;--b.count.value;0===b.count.value&&(b.Zd?b.ce.he(b.Zd):b.Yd.Wd.he(b.Vd))});Bb=b=>{var c=b.Sd;c.Zd&&qb.register(b,{Sd:c},b);return b};rb=b=>{qb.unregister(b)};return Bb(a)},Db=[];function Eb(){}
|
||||
var Fb=(a,b)=>Object.defineProperty(b,"name",{value:a}),Gb=(a,b,c)=>{if(void 0===a[b].$d){var e=a[b];a[b]=function(...f){if(!a[b].$d.hasOwnProperty(f.length))throw new L(`Function '${c}' called with an invalid number of arguments (${f.length}) - expects one of (${a[b].$d})!`);return a[b].$d[f.length].apply(this,f)};a[b].$d=[];a[b].$d[e.ie]=e}},Hb=(a,b,c)=>{if(r.hasOwnProperty(a)){if(void 0===c||void 0!==r[a].$d&&void 0!==r[a].$d[c])throw new L(`Cannot register public name '${a}' twice`);Gb(r,a,a);
|
||||
if(r[a].$d.hasOwnProperty(c))throw new L(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);r[a].$d[c]=b}else r[a]=b,r[a].ie=c},Ib=a=>{a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function Jb(a,b,c,e,f,k,n,l){this.name=a;this.constructor=b;this.me=c;this.he=e;this.ae=f;this.$e=k;this.se=n;this.Xe=l;this.hf=[]}
|
||||
var Kb=(a,b,c)=>{for(;b!==c;){if(!b.se)throw new L(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.se(a);b=b.ae}return a};function Lb(a,b){if(null===b){if(this.Ee)throw new L(`null is not a valid ${this.name}`);return 0}if(!b.Sd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Sd.Vd)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);return Kb(b.Sd.Vd,b.Sd.Yd.Wd,this.Wd)}
|
||||
function Nb(a,b){if(null===b){if(this.Ee)throw new L(`null is not a valid ${this.name}`);if(this.xe){var c=this.Fe();null!==a&&a.push(this.he,c);return c}return 0}if(!b||!b.Sd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Sd.Vd)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.we&&b.Sd.Yd.we)throw new L(`Cannot convert argument of type ${b.Sd.ce?b.Sd.ce.name:b.Sd.Yd.name} to parameter type ${this.name}`);c=Kb(b.Sd.Vd,b.Sd.Yd.Wd,this.Wd);if(this.xe){if(void 0===
|
||||
b.Sd.Zd)throw new L("Passing raw pointer to smart pointer is illegal");switch(this.nf){case 0:if(b.Sd.ce===this)c=b.Sd.Zd;else throw new L(`Cannot convert argument of type ${b.Sd.ce?b.Sd.ce.name:b.Sd.Yd.name} to parameter type ${this.name}`);break;case 1:c=b.Sd.Zd;break;case 2:if(b.Sd.ce===this)c=b.Sd.Zd;else{var e=b.clone();c=this.jf(c,Ob(()=>e["delete"]()));null!==a&&a.push(this.he,c)}break;default:throw new L("Unsupporting sharing policy");}}return c}
|
||||
function Pb(a,b){if(null===b){if(this.Ee)throw new L(`null is not a valid ${this.name}`);return 0}if(!b.Sd)throw new L(`Cannot pass "${Mb(b)}" as a ${this.name}`);if(!b.Sd.Vd)throw new L(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.Sd.Yd.we)throw new L(`Cannot convert argument of type ${b.Sd.Yd.name} to parameter type ${this.name}`);return Kb(b.Sd.Vd,b.Sd.Yd.Wd,this.Wd)}
|
||||
function Qb(a,b,c,e,f,k,n,l,q,v,w){this.name=a;this.Wd=b;this.Ee=c;this.we=e;this.xe=f;this.gf=k;this.nf=n;this.Me=l;this.Fe=q;this.jf=v;this.he=w;f||void 0!==b.ae?this.toWireType=Nb:(this.toWireType=e?Lb:Pb,this.ee=null)}
|
||||
var Rb=(a,b,c)=>{if(!r.hasOwnProperty(a))throw new kb("Replacing nonexistent public symbol");void 0!==r[a].$d&&void 0!==c?r[a].$d[c]=b:(r[a]=b,r[a].ie=c)},N,Sb=(a,b,c=[])=>{a.includes("j")?(a=a.replace(/p/g,"i"),b=(0,r["dynCall_"+a])(b,...c)):b=N.get(b)(...c);return b},Tb=(a,b)=>(...c)=>Sb(a,b,c),Q=(a,b)=>{a=K(a);var c=a.includes("j")?Tb(a,b):N.get(b);if("function"!=typeof c)throw new L(`unknown function pointer with signature ${a}: ${b}`);return c},ac,dc=a=>{a=bc(a);var b=K(a);cc(a);return b},ec=
|
||||
(a,b)=>{function c(k){f[k]||ib[k]||(jb[k]?jb[k].forEach(c):(e.push(k),f[k]=!0))}var e=[],f={};b.forEach(c);throw new ac(`${a}: `+e.map(dc).join([", "]));};function fc(a){for(var b=1;b<a.length;++b)if(null!==a[b]&&void 0===a[b].ee)return!0;return!1}
|
||||
function gc(a,b,c,e,f){var k=b.length;if(2>k)throw new L("argTypes array size mismatch! Must at least get return value and 'this' types!");var n=null!==b[1]&&null!==c,l=fc(b),q="void"!==b[0].name,v=k-2,w=Array(v),A=[],D=[];return Fb(a,function(...I){D.length=0;A.length=n?2:1;A[0]=f;if(n){var P=b[1].toWireType(D,this);A[1]=P}for(var O=0;O<v;++O)w[O]=b[O+2].toWireType(D,I[O]),A.push(w[O]);I=e(...A);if(l)fb(D);else for(O=n?1:2;O<b.length;O++){var aa=1===O?P:w[O-2];null!==b[O].ee&&b[O].ee(aa)}P=q?b[0].fromWireType(I):
|
||||
void 0;return P})}
|
||||
var hc=(a,b)=>{for(var c=[],e=0;e<a;e++)c.push(H[b+4*e>>2]);return c},ic=a=>{a=a.trim();const b=a.indexOf("(");return-1!==b?a.substr(0,b):a},jc=[],kc=[],lc=a=>{9<a&&0===--kc[a+1]&&(kc[a]=void 0,jc.push(a))},mc=a=>{if(!a)throw new L("Cannot use deleted val. handle = "+a);return kc[a]},Ob=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=jc.pop()||kc.length;kc[b]=a;kc[b+1]=1;return b}},nc={name:"emscripten::val",fromWireType:a=>{var b=mc(a);lc(a);
|
||||
return b},toWireType:(a,b)=>Ob(b),de:8,readValueFromPointer:gb,ee:null},oc=(a,b,c)=>{switch(b){case 1:return c?function(e){return this.fromWireType(Ca[e])}:function(e){return this.fromWireType(B[e])};case 2:return c?function(e){return this.fromWireType(Da[e>>1])}:function(e){return this.fromWireType(Fa[e>>1])};case 4:return c?function(e){return this.fromWireType(E[e>>2])}:function(e){return this.fromWireType(H[e>>2])};default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},pc=(a,b)=>
|
||||
{var c=ib[a];if(void 0===c)throw a=`${b} has unknown type ${dc(a)}`,new L(a);return c},Mb=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},qc=(a,b)=>{switch(b){case 4:return function(c){return this.fromWireType(J[c>>2])};case 8:return function(c){return this.fromWireType(Ga[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},rc=(a,b,c)=>{switch(b){case 1:return c?e=>Ca[e]:e=>B[e];case 2:return c?e=>Da[e>>1]:e=>Fa[e>>
|
||||
1];case 4:return c?e=>E[e>>2]:e=>H[e>>2];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},ra=(a,b,c)=>{var e=B;if(!(0<c))return 0;var f=b;c=b+c-1;for(var k=0;k<a.length;++k){var n=a.charCodeAt(k);if(55296<=n&&57343>=n){var l=a.charCodeAt(++k);n=65536+((n&1023)<<10)|l&1023}if(127>=n){if(b>=c)break;e[b++]=n}else{if(2047>=n){if(b+1>=c)break;e[b++]=192|n>>6}else{if(65535>=n){if(b+2>=c)break;e[b++]=224|n>>12}else{if(b+3>=c)break;e[b++]=240|n>>18;e[b++]=128|n>>12&63}e[b++]=128|n>>6&
|
||||
63}e[b++]=128|n&63}}e[b]=0;return b-f},qa=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}return b},sc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,tc=(a,b)=>{var c=a>>1;for(var e=c+b/2;!(c>=e)&&Fa[c];)++c;c<<=1;if(32<c-a&&sc)return sc.decode(B.subarray(a,c));c="";for(e=0;!(e>=b/2);++e){var f=Da[a+2*e>>1];if(0==f)break;c+=String.fromCharCode(f)}return c},uc=(a,b,c)=>{c??=2147483647;if(2>c)return 0;c-=2;var e=
|
||||
b;c=c<2*a.length?c/2:a.length;for(var f=0;f<c;++f)Da[b>>1]=a.charCodeAt(f),b+=2;Da[b>>1]=0;return b-e},vc=a=>2*a.length,wc=(a,b)=>{for(var c=0,e="";!(c>=b/4);){var f=E[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023)):e+=String.fromCharCode(f)}return e},xc=(a,b,c)=>{c??=2147483647;if(4>c)return 0;var e=b;c=e+c-4;for(var f=0;f<a.length;++f){var k=a.charCodeAt(f);if(55296<=k&&57343>=k){var n=a.charCodeAt(++f);k=65536+((k&1023)<<10)|n&1023}E[b>>2]=k;b+=
|
||||
4;if(b+4>c)break}E[b>>2]=0;return b-e},yc=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);55296<=e&&57343>=e&&++c;b+=4}return b},zc=(a,b,c)=>{var e=[];a=a.toWireType(e,c);e.length&&(H[b>>2]=Ob(e));return a},Ac=[],Bc={},Cc=a=>{var b=Bc[a];return void 0===b?K(a):b},Dc=()=>{function a(b){b.$$$embind_global$$$=b;var c="object"==typeof $$$embind_global$$$&&b.$$$embind_global$$$==b;c||delete b.$$$embind_global$$$;return c}if("object"==typeof globalThis)return globalThis;if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;
|
||||
"object"==typeof global&&a(global)?$$$embind_global$$$=global:"object"==typeof self&&a(self)&&($$$embind_global$$$=self);if("object"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error("unable to get global object.");},Ec=a=>{var b=Ac.length;Ac.push(a);return b},Fc=(a,b)=>{for(var c=Array(a),e=0;e<a;++e)c[e]=pc(H[b+4*e>>2],"parameter "+e);return c},Gc=Reflect.construct,R,Hc=a=>{var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=(c,e)=>b.vertexAttribDivisorANGLE(c,
|
||||
e),a.drawArraysInstanced=(c,e,f,k)=>b.drawArraysInstancedANGLE(c,e,f,k),a.drawElementsInstanced=(c,e,f,k,n)=>b.drawElementsInstancedANGLE(c,e,f,k,n))},Ic=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c),a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},Jc=a=>{var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},Kc=a=>
|
||||
{var b="ANGLE_instanced_arrays EXT_blend_minmax EXT_disjoint_timer_query EXT_frag_depth EXT_shader_texture_lod EXT_sRGB OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_depth_texture WEBGL_draw_buffers EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
|
||||
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},Lc=1,Mc=[],Nc=[],Oc=[],Pc=[],ka=[],Qc=[],Rc=[],pa=[],Sc=[],Tc=[],Uc=[],Wc={},Xc={},Yc=4,Zc=0,ja=a=>{for(var b=Lc++,c=a.length;c<b;c++)a[c]=null;return b},$c=(a,b,c,e)=>{for(var f=0;f<a;f++){var k=R[c](),n=k&&ja(e);k?(k.name=n,e[n]=k):V||=1282;E[b+4*f>>2]=n}},na=(a,b)=>{a.He||(a.He=a.getContext,a.getContext=function(e,f){f=a.He(e,f);return"webgl"==e==f instanceof WebGLRenderingContext?f:null});var c=1<b.majorVersion?a.getContext("webgl2",
|
||||
b):a.getContext("webgl",b);return c?ad(c,b):0},ad=(a,b)=>{var c=ja(pa),e={handle:c,attributes:b,version:b.majorVersion,fe:a};a.canvas&&(a.canvas.Pe=e);pa[c]=e;("undefined"==typeof b.Ye||b.Ye)&&bd(e);return c},oa=a=>{z=pa[a];r.pf=R=z?.fe;return!(a&&!R)},bd=a=>{a||=z;if(!a.ff){a.ff=!0;var b=a.fe;b.tf=b.getExtension("WEBGL_multi_draw");b.rf=b.getExtension("EXT_polygon_offset_clamp");b.qf=b.getExtension("EXT_clip_control");b.vf=b.getExtension("WEBGL_polygon_mode");Hc(b);Ic(b);Jc(b);b.Je=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");
|
||||
b.Le=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");2<=a.version&&(b.ge=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.ge)b.ge=b.getExtension("EXT_disjoint_timer_query");Kc(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},z,V,cd=(a,b)=>{R.bindFramebuffer(a,Oc[b])},dd=a=>{R.bindVertexArray(Rc[a])},ed=a=>R.clear(a),fd=(a,b,c,e)=>R.clearColor(a,b,c,e),gd=a=>R.clearStencil(a),hd=(a,b)=>{for(var c=0;c<a;c++){var e=E[b+
|
||||
4*c>>2];R.deleteVertexArray(Rc[e]);Rc[e]=null}},jd=[],kd=(a,b)=>{$c(a,b,"createVertexArray",Rc)};function ld(){var a=Kc(R);return a=a.concat(a.map(b=>"GL_"+b))}
|
||||
var md=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(V||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=R.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>z.version){V||=1282;return}e=ld().length;break;case 33307:case 33308:if(2>z.version){V||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=R.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":V||=1280;return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=
|
||||
0;break;default:V||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(c){case 0:E[b+4*a>>2]=f[a];break;case 2:J[b+4*a>>2]=f[a];break;case 4:Ca[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(k){V||=1280;ya(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${k})`);return}}break;default:V||=1280;ya(`GL_INVALID_ENUM in glGet${c}v: Native code calling glGet${c}v(${a}) and it returns ${f} of type ${typeof f}!`);
|
||||
return}switch(c){case 1:c=e;H[b>>2]=c;H[b+4>>2]=(c-H[b>>2])/4294967296;break;case 0:E[b>>2]=e;break;case 2:J[b>>2]=e;break;case 4:Ca[b]=e?1:0}}else V||=1281},nd=(a,b)=>md(a,b,0),od=(a,b,c)=>{if(c){a=Sc[a];b=2>z.version?R.ge.getQueryObjectEXT(a,b):R.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;H[c>>2]=e;H[c+4>>2]=(e-H[c>>2])/4294967296}else V||=1281},qd=a=>{var b=qa(a)+1,c=pd(b);c&&ra(a,c,b);return c},rd=a=>{var b=Wc[a];if(!b){switch(a){case 7939:b=qd(ld().join(" "));break;case 7936:case 7937:case 37445:case 37446:(b=
|
||||
R.getParameter(a))||(V||=1280);b=b?qd(b):0;break;case 7938:b=R.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=z.version&&(c=`OpenGL ES 3.0 (${b})`);b=qd(c);break;case 35724:b=R.getParameter(35724);c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b=`OpenGL ES GLSL ES ${c[1]} (${b})`);b=qd(b);break;default:V||=1280}Wc[a]=b}return b},sd=(a,b)=>{if(2>z.version)return V||=1282,0;var c=Xc[a];if(c)return 0>b||b>=c.length?(V||=1281,0):c[b];switch(a){case 7939:return c=
|
||||
ld().map(qd),c=Xc[a]=c,0>b||b>=c.length?(V||=1281,0):c[b];default:return V||=1280,0}},td=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),ud=a=>{a-=5120;return 0==a?Ca:1==a?B:2==a?Da:4==a?E:6==a?J:5==a||28922==a||28520==a||30779==a||30782==a?H:Fa},vd=(a,b,c,e,f)=>{a=ud(a);b=e*((Zc||c)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*a.BYTES_PER_ELEMENT+Yc-1&-Yc);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},Y=a=>{var b=R.We;if(b){var c=
|
||||
b.re[a];"number"==typeof c&&(b.re[a]=c=R.getUniformLocation(b,b.Ne[a]+(0<c?`[${c}]`:"")));return c}V||=1282},wd=[],xd=[],yd={},Ad=()=>{if(!zd){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in yd)void 0===yd[b]?delete a[b]:a[b]=yd[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);zd=c}return zd},zd,Bd=[null,[],[]];
|
||||
kb=r.InternalError=class extends Error{constructor(a){super(a);this.name="InternalError"}};for(var Cd=Array(256),Dd=0;256>Dd;++Dd)Cd[Dd]=String.fromCharCode(Dd);nb=Cd;L=r.BindingError=class extends Error{constructor(a){super(a);this.name="BindingError"}};
|
||||
Object.assign(Eb.prototype,{isAliasOf:function(a){if(!(this instanceof Eb&&a instanceof Eb))return!1;var b=this.Sd.Yd.Wd,c=this.Sd.Vd;a.Sd=a.Sd;var e=a.Sd.Yd.Wd;for(a=a.Sd.Vd;b.ae;)c=b.se(c),b=b.ae;for(;e.ae;)a=e.se(a),e=e.ae;return b===e&&c===a},clone:function(){this.Sd.Vd||pb(this);if(this.Sd.qe)return this.Sd.count.value+=1,this;var a=Bb,b=Object,c=b.create,e=Object.getPrototypeOf(this),f=this.Sd;a=a(c.call(b,e,{Sd:{value:{count:f.count,pe:f.pe,qe:f.qe,Vd:f.Vd,Yd:f.Yd,Zd:f.Zd,ce:f.ce}}}));a.Sd.count.value+=
|
||||
1;a.Sd.pe=!1;return a},["delete"](){this.Sd.Vd||pb(this);if(this.Sd.pe&&!this.Sd.qe)throw new L("Object already scheduled for deletion");rb(this);var a=this.Sd;--a.count.value;0===a.count.value&&(a.Zd?a.ce.he(a.Zd):a.Yd.Wd.he(a.Vd));this.Sd.qe||(this.Sd.Zd=void 0,this.Sd.Vd=void 0)},isDeleted:function(){return!this.Sd.Vd},deleteLater:function(){this.Sd.Vd||pb(this);if(this.Sd.pe&&!this.Sd.qe)throw new L("Object already scheduled for deletion");Db.push(this);this.Sd.pe=!0;return this}});
|
||||
Object.assign(Qb.prototype,{af(a){this.Me&&(a=this.Me(a));return a},Ie(a){this.he?.(a)},de:8,readValueFromPointer:gb,fromWireType:function(a){function b(){return this.xe?Cb(this.Wd.me,{Yd:this.gf,Vd:c,ce:this,Zd:a}):Cb(this.Wd.me,{Yd:this,Vd:a})}var c=this.af(a);if(!c)return this.Ie(a),null;var e=Ab(this.Wd,c);if(void 0!==e){if(0===e.Sd.count.value)return e.Sd.Vd=c,e.Sd.Zd=a,e.clone();e=e.clone();this.Ie(a);return e}e=this.Wd.$e(c);e=yb[e];if(!e)return b.call(this);e=this.we?e.Ve:e.pointerType;var f=
|
||||
sb(c,this.Wd,e.Wd);return null===f?b.call(this):this.xe?Cb(e.Wd.me,{Yd:e,Vd:f,ce:this,Zd:a}):Cb(e.Wd.me,{Yd:e,Vd:f})}});ac=r.UnboundTypeError=((a,b)=>{var c=Fb(b,function(e){this.name=b;this.message=e;e=Error(e).stack;void 0!==e&&(this.stack=this.toString()+"\n"+e.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`};return c})(Error,"UnboundTypeError");
|
||||
kc.push(0,1,void 0,1,null,1,!0,1,!1,1);r.count_emval_handles=()=>kc.length/2-5-jc.length;for(var Ed=0;32>Ed;++Ed)jd.push(Array(Ed));var Fd=new Float32Array(288);for(Ed=0;288>=Ed;++Ed)wd[Ed]=Fd.subarray(0,Ed);var Gd=new Int32Array(288);for(Ed=0;288>=Ed;++Ed)xd[Ed]=Gd.subarray(0,Ed);
|
||||
var Vd={F:(a,b,c)=>{var e=new Ya(a);H[e.Vd+16>>2]=0;H[e.Vd+4>>2]=b;H[e.Vd+8>>2]=c;Za=a;bb++;throw Za;},U:function(){return 0},ud:()=>{},td:function(){return 0},sd:()=>{},rd:function(){},qd:()=>{},md:()=>{Pa("")},B:a=>{var b=eb[a];delete eb[a];var c=b.Fe,e=b.he,f=b.Ke,k=f.map(n=>n.df).concat(f.map(n=>n.lf));mb([a],k,n=>{var l={};f.forEach((q,v)=>{var w=n[v],A=q.bf,D=q.cf,I=n[v+f.length],P=q.kf,O=q.mf;l[q.Ze]={read:aa=>w.fromWireType(A(D,aa)),write:(aa,la)=>{var X=[];P(O,aa,I.toWireType(X,la));fb(X)}}});
|
||||
return[{name:b.name,fromWireType:q=>{var v={},w;for(w in l)v[w]=l[w].read(q);e(q);return v},toWireType:(q,v)=>{for(var w in l)if(!(w in v))throw new TypeError(`Missing field: "${w}"`);var A=c();for(w in l)l[w].write(A,v[w]);null!==q&&q.push(e,A);return A},de:8,readValueFromPointer:gb,ee:e}]})},X:()=>{},ld:(a,b,c,e)=>{b=K(b);lb(a,{name:b,fromWireType:function(f){return!!f},toWireType:function(f,k){return k?c:e},de:8,readValueFromPointer:function(f){return this.fromWireType(B[f])},ee:null})},j:(a,b,
|
||||
c,e,f,k,n,l,q,v,w,A,D)=>{w=K(w);k=Q(f,k);l&&=Q(n,l);v&&=Q(q,v);D=Q(A,D);var I=Ib(w);Hb(I,function(){ec(`Cannot construct ${w} due to unbound types`,[e])});mb([a,b,c],e?[e]:[],P=>{P=P[0];if(e){var O=P.Wd;var aa=O.me}else aa=Eb.prototype;P=Fb(w,function(...Ea){if(Object.getPrototypeOf(this)!==la)throw new L("Use 'new' to construct "+w);if(void 0===X.je)throw new L(w+" has no accessible constructor");var ba=X.je[Ea.length];if(void 0===ba)throw new L(`Tried to invoke ctor of ${w} with invalid number of parameters (${Ea.length}) - expected (${Object.keys(X.je).toString()}) parameters instead!`);
|
||||
return ba.apply(this,Ea)});var la=Object.create(aa,{constructor:{value:P}});P.prototype=la;var X=new Jb(w,P,la,D,O,k,l,v);if(X.ae){var ha;(ha=X.ae).te??(ha.te=[]);X.ae.te.push(X)}O=new Qb(w,X,!0,!1,!1);ha=new Qb(w+"*",X,!1,!1,!1);aa=new Qb(w+" const*",X,!1,!0,!1);yb[a]={pointerType:ha,Ve:aa};Rb(I,P);return[O,ha,aa]})},e:(a,b,c,e,f,k,n)=>{var l=hc(c,e);b=K(b);b=ic(b);k=Q(f,k);mb([],[a],q=>{function v(){ec(`Cannot call ${w} due to unbound types`,l)}q=q[0];var w=`${q.name}.${b}`;b.startsWith("@@")&&
|
||||
(b=Symbol[b.substring(2)]);var A=q.Wd.constructor;void 0===A[b]?(v.ie=c-1,A[b]=v):(Gb(A,b,w),A[b].$d[c-1]=v);mb([],l,D=>{D=[D[0],null].concat(D.slice(1));D=gc(w,D,null,k,n);void 0===A[b].$d?(D.ie=c-1,A[b]=D):A[b].$d[c-1]=D;if(q.Wd.te)for(const I of q.Wd.te)I.constructor.hasOwnProperty(b)||(I.constructor[b]=D);return[]});return[]})},x:(a,b,c,e,f,k)=>{var n=hc(b,c);f=Q(e,f);mb([],[a],l=>{l=l[0];var q=`constructor ${l.name}`;void 0===l.Wd.je&&(l.Wd.je=[]);if(void 0!==l.Wd.je[b-1])throw new L(`Cannot register multiple constructors with identical number of parameters (${b-
|
||||
1}) for class '${l.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);l.Wd.je[b-1]=()=>{ec(`Cannot construct ${l.name} due to unbound types`,n)};mb([],n,v=>{v.splice(1,0,null);l.Wd.je[b-1]=gc(q,v,null,f,k);return[]});return[]})},a:(a,b,c,e,f,k,n,l)=>{var q=hc(c,e);b=K(b);b=ic(b);k=Q(f,k);mb([],[a],v=>{function w(){ec(`Cannot call ${A} due to unbound types`,q)}v=v[0];var A=`${v.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);l&&v.Wd.hf.push(b);
|
||||
var D=v.Wd.me,I=D[b];void 0===I||void 0===I.$d&&I.className!==v.name&&I.ie===c-2?(w.ie=c-2,w.className=v.name,D[b]=w):(Gb(D,b,A),D[b].$d[c-2]=w);mb([],q,P=>{P=gc(A,P,v,k,n);void 0===D[b].$d?(P.ie=c-2,D[b]=P):D[b].$d[c-2]=P;return[]});return[]})},q:(a,b,c)=>{a=K(a);mb([],[b],e=>{e=e[0];r[a]=e.fromWireType(c);return[]})},kd:a=>lb(a,nc),i:(a,b,c,e)=>{function f(){}b=K(b);f.values={};lb(a,{name:b,constructor:f,fromWireType:function(k){return this.constructor.values[k]},toWireType:(k,n)=>n.value,de:8,
|
||||
readValueFromPointer:oc(b,c,e),ee:null});Hb(b,f)},b:(a,b,c)=>{var e=pc(a,"enum");b=K(b);a=e.constructor;e=Object.create(e.constructor.prototype,{value:{value:c},constructor:{value:Fb(`${e.name}_${b}`,function(){})}});a.values[c]=e;a[b]=e},R:(a,b,c)=>{b=K(b);lb(a,{name:b,fromWireType:e=>e,toWireType:(e,f)=>f,de:8,readValueFromPointer:qc(b,c),ee:null})},w:(a,b,c,e,f,k)=>{var n=hc(b,c);a=K(a);a=ic(a);f=Q(e,f);Hb(a,function(){ec(`Cannot call ${a} due to unbound types`,n)},b-1);mb([],n,l=>{l=[l[0],null].concat(l.slice(1));
|
||||
Rb(a,gc(a,l,null,f,k),b-1);return[]})},C:(a,b,c,e,f)=>{b=K(b);-1===f&&(f=4294967295);f=l=>l;if(0===e){var k=32-8*c;f=l=>l<<k>>>k}var n=b.includes("unsigned")?function(l,q){return q>>>0}:function(l,q){return q};lb(a,{name:b,fromWireType:f,toWireType:n,de:8,readValueFromPointer:rc(b,c,0!==e),ee:null})},p:(a,b,c)=>{function e(k){return new f(Ca.buffer,H[k+4>>2],H[k>>2])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=K(c);lb(a,{name:c,fromWireType:e,
|
||||
de:8,readValueFromPointer:e},{ef:!0})},o:(a,b,c,e,f,k,n,l,q,v,w,A)=>{c=K(c);k=Q(f,k);l=Q(n,l);v=Q(q,v);A=Q(w,A);mb([a],[b],D=>{D=D[0];return[new Qb(c,D.Wd,!1,!1,!0,D,e,k,l,v,A)]})},Q:(a,b)=>{b=K(b);var c="std::string"===b;lb(a,{name:b,fromWireType:function(e){var f=H[e>>2],k=e+4;if(c)for(var n=k,l=0;l<=f;++l){var q=k+l;if(l==f||0==B[q]){n=n?db(B,n,q-n):"";if(void 0===v)var v=n;else v+=String.fromCharCode(0),v+=n;n=q+1}}else{v=Array(f);for(l=0;l<f;++l)v[l]=String.fromCharCode(B[k+l]);v=v.join("")}cc(e);
|
||||
return v},toWireType:function(e,f){f instanceof ArrayBuffer&&(f=new Uint8Array(f));var k="string"==typeof f;if(!(k||f instanceof Uint8Array||f instanceof Uint8ClampedArray||f instanceof Int8Array))throw new L("Cannot pass non-string to std::string");var n=c&&k?qa(f):f.length;var l=pd(4+n+1),q=l+4;H[l>>2]=n;if(c&&k)ra(f,q,n+1);else if(k)for(k=0;k<n;++k){var v=f.charCodeAt(k);if(255<v)throw cc(q),new L("String has UTF-16 code units that do not fit in 8 bits");B[q+k]=v}else for(k=0;k<n;++k)B[q+k]=f[k];
|
||||
null!==e&&e.push(cc,l);return l},de:8,readValueFromPointer:gb,ee(e){cc(e)}})},M:(a,b,c)=>{c=K(c);if(2===b){var e=tc;var f=uc;var k=vc;var n=l=>Fa[l>>1]}else 4===b&&(e=wc,f=xc,k=yc,n=l=>H[l>>2]);lb(a,{name:c,fromWireType:l=>{for(var q=H[l>>2],v,w=l+4,A=0;A<=q;++A){var D=l+4+A*b;if(A==q||0==n(D))w=e(w,D-w),void 0===v?v=w:(v+=String.fromCharCode(0),v+=w),w=D+b}cc(l);return v},toWireType:(l,q)=>{if("string"!=typeof q)throw new L(`Cannot pass non-string to C++ string type ${c}`);var v=k(q),w=pd(4+v+b);
|
||||
H[w>>2]=v/b;f(q,w+4,v+b);null!==l&&l.push(cc,w);return w},de:8,readValueFromPointer:gb,ee(l){cc(l)}})},A:(a,b,c,e,f,k)=>{eb[a]={name:K(b),Fe:Q(c,e),he:Q(f,k),Ke:[]}},d:(a,b,c,e,f,k,n,l,q,v)=>{eb[a].Ke.push({Ze:K(b),df:c,bf:Q(e,f),cf:k,lf:n,kf:Q(l,q),mf:v})},jd:(a,b)=>{b=K(b);lb(a,{sf:!0,name:b,de:0,fromWireType:()=>{},toWireType:()=>{}})},id:()=>1,hd:()=>{throw Infinity;},E:(a,b,c)=>{a=mc(a);b=pc(b,"emval::as");return zc(b,c,a)},L:(a,b,c,e)=>{a=Ac[a];b=mc(b);return a(null,b,c,e)},r:(a,b,c,e,f)=>{a=
|
||||
Ac[a];b=mc(b);c=Cc(c);return a(b,b[c],e,f)},c:lc,K:a=>{if(0===a)return Ob(Dc());a=Cc(a);return Ob(Dc()[a])},n:(a,b,c)=>{var e=Fc(a,b),f=e.shift();a--;var k=Array(a);b=`methodCaller<(${e.map(n=>n.name).join(", ")}) => ${f.name}>`;return Ec(Fb(b,(n,l,q,v)=>{for(var w=0,A=0;A<a;++A)k[A]=e[A].readValueFromPointer(v+w),w+=e[A].de;n=1===c?Gc(l,k):l.apply(n,k);return zc(f,q,n)}))},z:(a,b)=>{a=mc(a);b=mc(b);return Ob(a[b])},H:a=>{9<a&&(kc[a+1]+=1)},G:()=>Ob([]),f:a=>Ob(Cc(a)),D:()=>Ob({}),gd:a=>{a=mc(a);
|
||||
return!a},k:a=>{var b=mc(a);fb(b);lc(a)},h:(a,b,c)=>{a=mc(a);b=mc(b);c=mc(c);a[b]=c},g:(a,b)=>{a=pc(a,"_emval_take_value");a=a.readValueFromPointer(b);return Ob(a)},W:function(){return-52},V:function(){},fd:(a,b,c,e)=>{var f=(new Date).getFullYear(),k=(new Date(f,0,1)).getTimezoneOffset();f=(new Date(f,6,1)).getTimezoneOffset();H[a>>2]=60*Math.max(k,f);E[b>>2]=Number(k!=f);b=n=>{var l=Math.abs(n);return`UTC${0<=n?"-":"+"}${String(Math.floor(l/60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};
|
||||
a=b(k);b=b(f);f<k?(ra(a,c,17),ra(b,e,17)):(ra(a,e,17),ra(b,c,17))},ed:()=>performance.now(),dd:a=>R.activeTexture(a),cd:(a,b)=>{R.attachShader(Nc[a],Qc[b])},bd:(a,b)=>{R.beginQuery(a,Sc[b])},ad:(a,b)=>{R.ge.beginQueryEXT(a,Sc[b])},$c:(a,b,c)=>{R.bindAttribLocation(Nc[a],b,c?db(B,c):"")},_c:(a,b)=>{35051==a?R.Ce=b:35052==a&&(R.le=b);R.bindBuffer(a,Mc[b])},Zc:cd,Yc:(a,b)=>{R.bindRenderbuffer(a,Pc[b])},Xc:(a,b)=>{R.bindSampler(a,Tc[b])},Wc:(a,b)=>{R.bindTexture(a,ka[b])},Vc:dd,Uc:dd,Tc:(a,b,c,e)=>R.blendColor(a,
|
||||
b,c,e),Sc:a=>R.blendEquation(a),Rc:(a,b)=>R.blendFunc(a,b),Qc:(a,b,c,e,f,k,n,l,q,v)=>R.blitFramebuffer(a,b,c,e,f,k,n,l,q,v),Pc:(a,b,c,e)=>{2<=z.version?c&&b?R.bufferData(a,B,e,c,b):R.bufferData(a,b,e):R.bufferData(a,c?B.subarray(c,c+b):b,e)},Oc:(a,b,c,e)=>{2<=z.version?c&&R.bufferSubData(a,b,B,e,c):R.bufferSubData(a,b,B.subarray(e,e+c))},Nc:a=>R.checkFramebufferStatus(a),Mc:ed,Lc:fd,Kc:gd,Jc:(a,b,c,e)=>R.clientWaitSync(Uc[a],b,(c>>>0)+4294967296*e),Ic:(a,b,c,e)=>{R.colorMask(!!a,!!b,!!c,!!e)},Hc:a=>
|
||||
{R.compileShader(Qc[a])},Gc:(a,b,c,e,f,k,n,l)=>{2<=z.version?R.le||!n?R.compressedTexImage2D(a,b,c,e,f,k,n,l):R.compressedTexImage2D(a,b,c,e,f,k,B,l,n):R.compressedTexImage2D(a,b,c,e,f,k,B.subarray(l,l+n))},Fc:(a,b,c,e,f,k,n,l,q)=>{2<=z.version?R.le||!l?R.compressedTexSubImage2D(a,b,c,e,f,k,n,l,q):R.compressedTexSubImage2D(a,b,c,e,f,k,n,B,q,l):R.compressedTexSubImage2D(a,b,c,e,f,k,n,B.subarray(q,q+l))},Ec:(a,b,c,e,f)=>R.copyBufferSubData(a,b,c,e,f),Dc:(a,b,c,e,f,k,n,l)=>R.copyTexSubImage2D(a,b,c,
|
||||
e,f,k,n,l),Cc:()=>{var a=ja(Nc),b=R.createProgram();b.name=a;b.Ae=b.ye=b.ze=0;b.Ge=1;Nc[a]=b;return a},Bc:a=>{var b=ja(Qc);Qc[b]=R.createShader(a);return b},Ac:a=>R.cullFace(a),zc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Mc[e];f&&(R.deleteBuffer(f),f.name=0,Mc[e]=null,e==R.Ce&&(R.Ce=0),e==R.le&&(R.le=0))}},yc:(a,b)=>{for(var c=0;c<a;++c){var e=E[b+4*c>>2],f=Oc[e];f&&(R.deleteFramebuffer(f),f.name=0,Oc[e]=null)}},xc:a=>{if(a){var b=Nc[a];b?(R.deleteProgram(b),b.name=0,Nc[a]=null):V||=1281}},
|
||||
wc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Sc[e];f&&(R.deleteQuery(f),Sc[e]=null)}},vc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Sc[e];f&&(R.ge.deleteQueryEXT(f),Sc[e]=null)}},uc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Pc[e];f&&(R.deleteRenderbuffer(f),f.name=0,Pc[e]=null)}},tc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=Tc[e];f&&(R.deleteSampler(f),f.name=0,Tc[e]=null)}},sc:a=>{if(a){var b=Qc[a];b?(R.deleteShader(b),Qc[a]=null):V||=1281}},rc:a=>{if(a){var b=Uc[a];b?
|
||||
(R.deleteSync(b),b.name=0,Uc[a]=null):V||=1281}},qc:(a,b)=>{for(var c=0;c<a;c++){var e=E[b+4*c>>2],f=ka[e];f&&(R.deleteTexture(f),f.name=0,ka[e]=null)}},pc:hd,oc:hd,nc:a=>{R.depthMask(!!a)},mc:a=>R.disable(a),lc:a=>{R.disableVertexAttribArray(a)},kc:(a,b,c)=>{R.drawArrays(a,b,c)},jc:(a,b,c,e)=>{R.drawArraysInstanced(a,b,c,e)},ic:(a,b,c,e,f)=>{R.Je.drawArraysInstancedBaseInstanceWEBGL(a,b,c,e,f)},hc:(a,b)=>{for(var c=jd[a],e=0;e<a;e++)c[e]=E[b+4*e>>2];R.drawBuffers(c)},gc:(a,b,c,e)=>{R.drawElements(a,
|
||||
b,c,e)},fc:(a,b,c,e,f)=>{R.drawElementsInstanced(a,b,c,e,f)},ec:(a,b,c,e,f,k,n)=>{R.Je.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,e,f,k,n)},dc:(a,b,c,e,f,k)=>{R.drawElements(a,e,f,k)},cc:a=>R.enable(a),bc:a=>{R.enableVertexAttribArray(a)},ac:a=>R.endQuery(a),$b:a=>{R.ge.endQueryEXT(a)},_b:(a,b)=>(a=R.fenceSync(a,b))?(b=ja(Uc),a.name=b,Uc[b]=a,b):0,Zb:()=>R.finish(),Yb:()=>R.flush(),Xb:(a,b,c,e)=>{R.framebufferRenderbuffer(a,b,c,Pc[e])},Wb:(a,b,c,e,f)=>{R.framebufferTexture2D(a,b,c,ka[e],
|
||||
f)},Vb:a=>R.frontFace(a),Ub:(a,b)=>{$c(a,b,"createBuffer",Mc)},Tb:(a,b)=>{$c(a,b,"createFramebuffer",Oc)},Sb:(a,b)=>{$c(a,b,"createQuery",Sc)},Rb:(a,b)=>{for(var c=0;c<a;c++){var e=R.ge.createQueryEXT();if(!e){for(V||=1282;c<a;)E[b+4*c++>>2]=0;break}var f=ja(Sc);e.name=f;Sc[f]=e;E[b+4*c>>2]=f}},Qb:(a,b)=>{$c(a,b,"createRenderbuffer",Pc)},Pb:(a,b)=>{$c(a,b,"createSampler",Tc)},Ob:(a,b)=>{$c(a,b,"createTexture",ka)},Nb:kd,Mb:kd,Lb:a=>R.generateMipmap(a),Kb:(a,b,c)=>{c?E[c>>2]=R.getBufferParameter(a,
|
||||
b):V||=1281},Jb:()=>{var a=R.getError()||V;V=0;return a},Ib:(a,b)=>md(a,b,2),Hb:(a,b,c,e)=>{a=R.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;E[e>>2]=a},Gb:nd,Fb:(a,b,c,e)=>{a=R.getProgramInfoLog(Nc[a]);null===a&&(a="(unknown error)");b=0<b&&e?ra(a,e,b):0;c&&(E[c>>2]=b)},Eb:(a,b,c)=>{if(c)if(a>=Lc)V||=1281;else if(a=Nc[a],35716==b)a=R.getProgramInfoLog(a),null===a&&(a="(unknown error)"),E[c>>2]=a.length+1;else if(35719==b){if(!a.Ae){var e=
|
||||
R.getProgramParameter(a,35718);for(b=0;b<e;++b)a.Ae=Math.max(a.Ae,R.getActiveUniform(a,b).name.length+1)}E[c>>2]=a.Ae}else if(35722==b){if(!a.ye)for(e=R.getProgramParameter(a,35721),b=0;b<e;++b)a.ye=Math.max(a.ye,R.getActiveAttrib(a,b).name.length+1);E[c>>2]=a.ye}else if(35381==b){if(!a.ze)for(e=R.getProgramParameter(a,35382),b=0;b<e;++b)a.ze=Math.max(a.ze,R.getActiveUniformBlockName(a,b).length+1);E[c>>2]=a.ze}else E[c>>2]=R.getProgramParameter(a,b);else V||=1281},Db:od,Cb:od,Bb:(a,b,c)=>{if(c){a=
|
||||
R.getQueryParameter(Sc[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;E[c>>2]=e}else V||=1281},Ab:(a,b,c)=>{if(c){a=R.ge.getQueryObjectEXT(Sc[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;E[c>>2]=e}else V||=1281},zb:(a,b,c)=>{c?E[c>>2]=R.getQuery(a,b):V||=1281},yb:(a,b,c)=>{c?E[c>>2]=R.ge.getQueryEXT(a,b):V||=1281},xb:(a,b,c)=>{c?E[c>>2]=R.getRenderbufferParameter(a,b):V||=1281},wb:(a,b,c,e)=>{a=R.getShaderInfoLog(Qc[a]);null===a&&(a="(unknown error)");b=0<b&&e?ra(a,e,b):0;c&&(E[c>>2]=b)},vb:(a,b,c,e)=>
|
||||
{a=R.getShaderPrecisionFormat(a,b);E[c>>2]=a.rangeMin;E[c+4>>2]=a.rangeMax;E[e>>2]=a.precision},ub:(a,b,c)=>{c?35716==b?(a=R.getShaderInfoLog(Qc[a]),null===a&&(a="(unknown error)"),E[c>>2]=a?a.length+1:0):35720==b?(a=R.getShaderSource(Qc[a]),E[c>>2]=a?a.length+1:0):E[c>>2]=R.getShaderParameter(Qc[a],b):V||=1281},tb:rd,sb:sd,rb:(a,b)=>{b=b?db(B,b):"";if(a=Nc[a]){var c=a,e=c.re,f=c.Oe,k;if(!e){c.re=e={};c.Ne={};var n=R.getProgramParameter(c,35718);for(k=0;k<n;++k){var l=R.getActiveUniform(c,k);var q=
|
||||
l.name;l=l.size;var v=td(q);v=0<v?q.slice(0,v):q;var w=c.Ge;c.Ge+=l;f[v]=[l,w];for(q=0;q<l;++q)e[w]=q,c.Ne[w++]=v}}c=a.re;e=0;f=b;k=td(b);0<k&&(e=parseInt(b.slice(k+1))>>>0,f=b.slice(0,k));if((f=a.Oe[f])&&e<f[0]&&(e+=f[1],c[e]=c[e]||R.getUniformLocation(a,b)))return e}else V||=1281;return-1},qb:(a,b,c)=>{for(var e=jd[b],f=0;f<b;f++)e[f]=E[c+4*f>>2];R.invalidateFramebuffer(a,e)},pb:(a,b,c,e,f,k,n)=>{for(var l=jd[b],q=0;q<b;q++)l[q]=E[c+4*q>>2];R.invalidateSubFramebuffer(a,l,e,f,k,n)},ob:a=>R.isSync(Uc[a]),
|
||||
nb:a=>(a=ka[a])?R.isTexture(a):0,mb:a=>R.lineWidth(a),lb:a=>{a=Nc[a];R.linkProgram(a);a.re=0;a.Oe={}},kb:(a,b,c,e,f,k)=>{R.Le.multiDrawArraysInstancedBaseInstanceWEBGL(a,E,b>>2,E,c>>2,E,e>>2,H,f>>2,k)},jb:(a,b,c,e,f,k,n,l)=>{R.Le.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,E,b>>2,c,E,e>>2,E,f>>2,E,k>>2,H,n>>2,l)},ib:(a,b)=>{3317==a?Yc=b:3314==a&&(Zc=b);R.pixelStorei(a,b)},hb:(a,b)=>{R.ge.queryCounterEXT(Sc[a],b)},gb:a=>R.readBuffer(a),fb:(a,b,c,e,f,k,n)=>{if(2<=z.version)if(R.Ce)R.readPixels(a,
|
||||
b,c,e,f,k,n);else{var l=ud(k);n>>>=31-Math.clz32(l.BYTES_PER_ELEMENT);R.readPixels(a,b,c,e,f,k,l,n)}else(l=vd(k,f,c,e,n))?R.readPixels(a,b,c,e,f,k,l):V||=1280},eb:(a,b,c,e)=>R.renderbufferStorage(a,b,c,e),db:(a,b,c,e,f)=>R.renderbufferStorageMultisample(a,b,c,e,f),cb:(a,b,c)=>{R.samplerParameterf(Tc[a],b,c)},bb:(a,b,c)=>{R.samplerParameteri(Tc[a],b,c)},ab:(a,b,c)=>{R.samplerParameteri(Tc[a],b,E[c>>2])},$a:(a,b,c,e)=>R.scissor(a,b,c,e),_a:(a,b,c,e)=>{for(var f="",k=0;k<b;++k){var n=(n=H[c+4*k>>2])?
|
||||
db(B,n,e?H[e+4*k>>2]:void 0):"";f+=n}R.shaderSource(Qc[a],f)},Za:(a,b,c)=>R.stencilFunc(a,b,c),Ya:(a,b,c,e)=>R.stencilFuncSeparate(a,b,c,e),Xa:a=>R.stencilMask(a),Wa:(a,b)=>R.stencilMaskSeparate(a,b),Va:(a,b,c)=>R.stencilOp(a,b,c),Ua:(a,b,c,e)=>R.stencilOpSeparate(a,b,c,e),Ta:(a,b,c,e,f,k,n,l,q)=>{if(2<=z.version){if(R.le){R.texImage2D(a,b,c,e,f,k,n,l,q);return}if(q){var v=ud(l);q>>>=31-Math.clz32(v.BYTES_PER_ELEMENT);R.texImage2D(a,b,c,e,f,k,n,l,v,q);return}}v=q?vd(l,n,e,f,q):null;R.texImage2D(a,
|
||||
b,c,e,f,k,n,l,v)},Sa:(a,b,c)=>R.texParameterf(a,b,c),Ra:(a,b,c)=>{R.texParameterf(a,b,J[c>>2])},Qa:(a,b,c)=>R.texParameteri(a,b,c),Pa:(a,b,c)=>{R.texParameteri(a,b,E[c>>2])},Oa:(a,b,c,e,f)=>R.texStorage2D(a,b,c,e,f),Na:(a,b,c,e,f,k,n,l,q)=>{if(2<=z.version){if(R.le){R.texSubImage2D(a,b,c,e,f,k,n,l,q);return}if(q){var v=ud(l);R.texSubImage2D(a,b,c,e,f,k,n,l,v,q>>>31-Math.clz32(v.BYTES_PER_ELEMENT));return}}q=q?vd(l,n,f,k,q):null;R.texSubImage2D(a,b,c,e,f,k,n,l,q)},Ma:(a,b)=>{R.uniform1f(Y(a),b)},La:(a,
|
||||
b,c)=>{if(2<=z.version)b&&R.uniform1fv(Y(a),J,c>>2,b);else{if(288>=b)for(var e=wd[b],f=0;f<b;++f)e[f]=J[c+4*f>>2];else e=J.subarray(c>>2,c+4*b>>2);R.uniform1fv(Y(a),e)}},Ka:(a,b)=>{R.uniform1i(Y(a),b)},Ja:(a,b,c)=>{if(2<=z.version)b&&R.uniform1iv(Y(a),E,c>>2,b);else{if(288>=b)for(var e=xd[b],f=0;f<b;++f)e[f]=E[c+4*f>>2];else e=E.subarray(c>>2,c+4*b>>2);R.uniform1iv(Y(a),e)}},Ia:(a,b,c)=>{R.uniform2f(Y(a),b,c)},Ha:(a,b,c)=>{if(2<=z.version)b&&R.uniform2fv(Y(a),J,c>>2,2*b);else{if(144>=b){b*=2;for(var e=
|
||||
wd[b],f=0;f<b;f+=2)e[f]=J[c+4*f>>2],e[f+1]=J[c+(4*f+4)>>2]}else e=J.subarray(c>>2,c+8*b>>2);R.uniform2fv(Y(a),e)}},Ga:(a,b,c)=>{R.uniform2i(Y(a),b,c)},Fa:(a,b,c)=>{if(2<=z.version)b&&R.uniform2iv(Y(a),E,c>>2,2*b);else{if(144>=b){b*=2;for(var e=xd[b],f=0;f<b;f+=2)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2]}else e=E.subarray(c>>2,c+8*b>>2);R.uniform2iv(Y(a),e)}},Ea:(a,b,c,e)=>{R.uniform3f(Y(a),b,c,e)},Da:(a,b,c)=>{if(2<=z.version)b&&R.uniform3fv(Y(a),J,c>>2,3*b);else{if(96>=b){b*=3;for(var e=wd[b],f=0;f<
|
||||
b;f+=3)e[f]=J[c+4*f>>2],e[f+1]=J[c+(4*f+4)>>2],e[f+2]=J[c+(4*f+8)>>2]}else e=J.subarray(c>>2,c+12*b>>2);R.uniform3fv(Y(a),e)}},Ca:(a,b,c,e)=>{R.uniform3i(Y(a),b,c,e)},Ba:(a,b,c)=>{if(2<=z.version)b&&R.uniform3iv(Y(a),E,c>>2,3*b);else{if(96>=b){b*=3;for(var e=xd[b],f=0;f<b;f+=3)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2],e[f+2]=E[c+(4*f+8)>>2]}else e=E.subarray(c>>2,c+12*b>>2);R.uniform3iv(Y(a),e)}},Aa:(a,b,c,e,f)=>{R.uniform4f(Y(a),b,c,e,f)},za:(a,b,c)=>{if(2<=z.version)b&&R.uniform4fv(Y(a),J,c>>2,4*
|
||||
b);else{if(72>=b){var e=wd[4*b],f=J;c>>=2;b*=4;for(var k=0;k<b;k+=4){var n=c+k;e[k]=f[n];e[k+1]=f[n+1];e[k+2]=f[n+2];e[k+3]=f[n+3]}}else e=J.subarray(c>>2,c+16*b>>2);R.uniform4fv(Y(a),e)}},ya:(a,b,c,e,f)=>{R.uniform4i(Y(a),b,c,e,f)},xa:(a,b,c)=>{if(2<=z.version)b&&R.uniform4iv(Y(a),E,c>>2,4*b);else{if(72>=b){b*=4;for(var e=xd[b],f=0;f<b;f+=4)e[f]=E[c+4*f>>2],e[f+1]=E[c+(4*f+4)>>2],e[f+2]=E[c+(4*f+8)>>2],e[f+3]=E[c+(4*f+12)>>2]}else e=E.subarray(c>>2,c+16*b>>2);R.uniform4iv(Y(a),e)}},wa:(a,b,c,e)=>
|
||||
{if(2<=z.version)b&&R.uniformMatrix2fv(Y(a),!!c,J,e>>2,4*b);else{if(72>=b){b*=4;for(var f=wd[b],k=0;k<b;k+=4)f[k]=J[e+4*k>>2],f[k+1]=J[e+(4*k+4)>>2],f[k+2]=J[e+(4*k+8)>>2],f[k+3]=J[e+(4*k+12)>>2]}else f=J.subarray(e>>2,e+16*b>>2);R.uniformMatrix2fv(Y(a),!!c,f)}},va:(a,b,c,e)=>{if(2<=z.version)b&&R.uniformMatrix3fv(Y(a),!!c,J,e>>2,9*b);else{if(32>=b){b*=9;for(var f=wd[b],k=0;k<b;k+=9)f[k]=J[e+4*k>>2],f[k+1]=J[e+(4*k+4)>>2],f[k+2]=J[e+(4*k+8)>>2],f[k+3]=J[e+(4*k+12)>>2],f[k+4]=J[e+(4*k+16)>>2],f[k+
|
||||
5]=J[e+(4*k+20)>>2],f[k+6]=J[e+(4*k+24)>>2],f[k+7]=J[e+(4*k+28)>>2],f[k+8]=J[e+(4*k+32)>>2]}else f=J.subarray(e>>2,e+36*b>>2);R.uniformMatrix3fv(Y(a),!!c,f)}},ua:(a,b,c,e)=>{if(2<=z.version)b&&R.uniformMatrix4fv(Y(a),!!c,J,e>>2,16*b);else{if(18>=b){var f=wd[16*b],k=J;e>>=2;b*=16;for(var n=0;n<b;n+=16){var l=e+n;f[n]=k[l];f[n+1]=k[l+1];f[n+2]=k[l+2];f[n+3]=k[l+3];f[n+4]=k[l+4];f[n+5]=k[l+5];f[n+6]=k[l+6];f[n+7]=k[l+7];f[n+8]=k[l+8];f[n+9]=k[l+9];f[n+10]=k[l+10];f[n+11]=k[l+11];f[n+12]=k[l+12];f[n+
|
||||
13]=k[l+13];f[n+14]=k[l+14];f[n+15]=k[l+15]}}else f=J.subarray(e>>2,e+64*b>>2);R.uniformMatrix4fv(Y(a),!!c,f)}},ta:a=>{a=Nc[a];R.useProgram(a);R.We=a},sa:(a,b)=>R.vertexAttrib1f(a,b),ra:(a,b)=>{R.vertexAttrib2f(a,J[b>>2],J[b+4>>2])},qa:(a,b)=>{R.vertexAttrib3f(a,J[b>>2],J[b+4>>2],J[b+8>>2])},pa:(a,b)=>{R.vertexAttrib4f(a,J[b>>2],J[b+4>>2],J[b+8>>2],J[b+12>>2])},oa:(a,b)=>{R.vertexAttribDivisor(a,b)},na:(a,b,c,e,f)=>{R.vertexAttribIPointer(a,b,c,e,f)},ma:(a,b,c,e,f,k)=>{R.vertexAttribPointer(a,b,c,
|
||||
!!e,f,k)},la:(a,b,c,e)=>R.viewport(a,b,c,e),ka:(a,b,c,e)=>{R.waitSync(Uc[a],b,(c>>>0)+4294967296*e)},ja:a=>{var b=B.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+1/c);e=Math.min(e,a+100663296);a:{e=(Math.min(2147483648,65536*Math.ceil(Math.max(a,e)/65536))-za.buffer.byteLength+65535)/65536|0;try{za.grow(e);Ha();var f=1;break a}catch(k){}f=void 0}if(f)return!0}return!1},ia:()=>z?z.handle:0,pd:(a,b)=>{var c=0;Ad().forEach((e,f)=>{var k=b+c;f=H[a+4*f>>2]=k;for(k=0;k<e.length;++k)Ca[f++]=
|
||||
e.charCodeAt(k);Ca[f]=0;c+=e.length+1});return 0},od:(a,b)=>{var c=Ad();H[a>>2]=c.length;var e=0;c.forEach(f=>e+=f.length+1);H[b>>2]=e;return 0},ha:a=>{Xa||(Ba=!0);throw new Va(a);},T:()=>52,Z:function(){return 52},nd:()=>52,Y:function(){return 70},S:(a,b,c,e)=>{for(var f=0,k=0;k<c;k++){var n=H[b>>2],l=H[b+4>>2];b+=8;for(var q=0;q<l;q++){var v=B[n+q],w=Bd[a];0===v||10===v?((1===a?xa:ya)(db(w)),w.length=0):w.push(v)}f+=l}H[e>>2]=f;return 0},ga:cd,fa:ed,ea:fd,da:gd,J:nd,P:rd,ca:sd,m:Hd,y:Id,l:Jd,I:Kd,
|
||||
ba:Ld,O:Md,N:Nd,t:Od,v:Pd,u:Qd,s:Rd,aa:Sd,$:Td,_:Ud},Z=function(){function a(c){Z=c.exports;za=Z.vd;Ha();N=Z.yd;Ja.unshift(Z.wd);La--;0==La&&(null!==Na&&(clearInterval(Na),Na=null),Oa&&(c=Oa,Oa=null,c()));return Z}var b={a:Vd};La++;if(r.instantiateWasm)try{return r.instantiateWasm(b,a)}catch(c){ya(`Module.instantiateWasm callback failed with error: ${c}`),da(c)}Ra??=r.locateFile?Qa("canvaskit.wasm")?"canvaskit.wasm":ta+"canvaskit.wasm":(new URL("canvaskit.wasm",import.meta.url)).href;Ua(b,
|
||||
function(c){a(c.instance)}).catch(da);return{}}(),bc=a=>(bc=Z.xd)(a),pd=r._malloc=a=>(pd=r._malloc=Z.zd)(a),cc=r._free=a=>(cc=r._free=Z.Ad)(a),Wd=(a,b)=>(Wd=Z.Bd)(a,b),Xd=a=>(Xd=Z.Cd)(a),Yd=()=>(Yd=Z.Dd)();r.dynCall_viji=(a,b,c,e,f)=>(r.dynCall_viji=Z.Ed)(a,b,c,e,f);r.dynCall_vijiii=(a,b,c,e,f,k,n)=>(r.dynCall_vijiii=Z.Fd)(a,b,c,e,f,k,n);r.dynCall_viiiiij=(a,b,c,e,f,k,n,l)=>(r.dynCall_viiiiij=Z.Gd)(a,b,c,e,f,k,n,l);r.dynCall_vij=(a,b,c,e)=>(r.dynCall_vij=Z.Hd)(a,b,c,e);
|
||||
r.dynCall_jii=(a,b,c)=>(r.dynCall_jii=Z.Id)(a,b,c);r.dynCall_jiiiiii=(a,b,c,e,f,k,n)=>(r.dynCall_jiiiiii=Z.Jd)(a,b,c,e,f,k,n);r.dynCall_jiiiiji=(a,b,c,e,f,k,n,l)=>(r.dynCall_jiiiiji=Z.Kd)(a,b,c,e,f,k,n,l);r.dynCall_ji=(a,b)=>(r.dynCall_ji=Z.Ld)(a,b);r.dynCall_iijj=(a,b,c,e,f,k)=>(r.dynCall_iijj=Z.Md)(a,b,c,e,f,k);r.dynCall_jiji=(a,b,c,e,f)=>(r.dynCall_jiji=Z.Nd)(a,b,c,e,f);r.dynCall_viijii=(a,b,c,e,f,k,n)=>(r.dynCall_viijii=Z.Od)(a,b,c,e,f,k,n);
|
||||
r.dynCall_iiiiij=(a,b,c,e,f,k,n)=>(r.dynCall_iiiiij=Z.Pd)(a,b,c,e,f,k,n);r.dynCall_iiiiijj=(a,b,c,e,f,k,n,l,q)=>(r.dynCall_iiiiijj=Z.Qd)(a,b,c,e,f,k,n,l,q);r.dynCall_iiiiiijj=(a,b,c,e,f,k,n,l,q,v)=>(r.dynCall_iiiiiijj=Z.Rd)(a,b,c,e,f,k,n,l,q,v);function Rd(a,b,c,e,f){var k=Yd();try{N.get(a)(b,c,e,f)}catch(n){Xd(k);if(n!==n+0)throw n;Wd(1,0)}}function Id(a,b,c){var e=Yd();try{return N.get(a)(b,c)}catch(f){Xd(e);if(f!==f+0)throw f;Wd(1,0)}}
|
||||
function Pd(a,b,c){var e=Yd();try{N.get(a)(b,c)}catch(f){Xd(e);if(f!==f+0)throw f;Wd(1,0)}}function Hd(a,b){var c=Yd();try{return N.get(a)(b)}catch(e){Xd(c);if(e!==e+0)throw e;Wd(1,0)}}function Od(a,b){var c=Yd();try{N.get(a)(b)}catch(e){Xd(c);if(e!==e+0)throw e;Wd(1,0)}}function Jd(a,b,c,e){var f=Yd();try{return N.get(a)(b,c,e)}catch(k){Xd(f);if(k!==k+0)throw k;Wd(1,0)}}function Ud(a,b,c,e,f,k,n,l,q,v){var w=Yd();try{N.get(a)(b,c,e,f,k,n,l,q,v)}catch(A){Xd(w);if(A!==A+0)throw A;Wd(1,0)}}
|
||||
function Qd(a,b,c,e){var f=Yd();try{N.get(a)(b,c,e)}catch(k){Xd(f);if(k!==k+0)throw k;Wd(1,0)}}function Td(a,b,c,e,f,k,n){var l=Yd();try{N.get(a)(b,c,e,f,k,n)}catch(q){Xd(l);if(q!==q+0)throw q;Wd(1,0)}}function Md(a,b,c,e,f,k,n,l){var q=Yd();try{return N.get(a)(b,c,e,f,k,n,l)}catch(v){Xd(q);if(v!==v+0)throw v;Wd(1,0)}}function Sd(a,b,c,e,f,k){var n=Yd();try{N.get(a)(b,c,e,f,k)}catch(l){Xd(n);if(l!==l+0)throw l;Wd(1,0)}}
|
||||
function Kd(a,b,c,e,f){var k=Yd();try{return N.get(a)(b,c,e,f)}catch(n){Xd(k);if(n!==n+0)throw n;Wd(1,0)}}function Nd(a,b,c,e,f,k,n,l,q,v){var w=Yd();try{return N.get(a)(b,c,e,f,k,n,l,q,v)}catch(A){Xd(w);if(A!==A+0)throw A;Wd(1,0)}}function Ld(a,b,c,e,f,k,n){var l=Yd();try{return N.get(a)(b,c,e,f,k,n)}catch(q){Xd(l);if(q!==q+0)throw q;Wd(1,0)}}var Zd,$d;Oa=function ae(){Zd||be();Zd||(Oa=ae)};
|
||||
function be(){if(!(0<La)){if(!$d&&($d=1,Wa(Ia),0<La))return;Zd||(Zd=1,r.calledRun=1,Ba||(Wa(Ja),ca(r),r.onRuntimeInitialized?.(),Wa(Ka)))}}be();moduleRtn=ea;
|
||||
|
||||
|
||||
return moduleRtn;
|
||||
}
|
||||
);
|
||||
})();
|
||||
export default CanvasKitInit;
|
||||
|
|
@ -1,146 +0,0 @@
|
|||
|
||||
var skwasm = (() => {
|
||||
var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
|
||||
|
||||
return (
|
||||
function(moduleArg = {}) {
|
||||
var moduleRtn;
|
||||
|
||||
function d(){g.buffer!=k.buffer&&n();return k}function q(){g.buffer!=k.buffer&&n();return aa}function r(){g.buffer!=k.buffer&&n();return ba}function t(){g.buffer!=k.buffer&&n();return ca}function u(){g.buffer!=k.buffer&&n();return da}var w=moduleArg,ea,fa,ha=new Promise((a,b)=>{ea=a;fa=b}),ia="object"==typeof window,ja="function"==typeof importScripts,ka=w.$ww,la=Object.assign({},w),x="";function ma(a){return w.locateFile?w.locateFile(a,x):x+a}var na,oa;
|
||||
if(ia||ja)ja?x=self.location.href:"undefined"!=typeof document&&document.currentScript&&(x=document.currentScript.src),_scriptName&&(x=_scriptName),x.startsWith("blob:")?x="":x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1),ja&&(oa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),na=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
|
||||
var pa=console.log.bind(console),y=console.error.bind(console);Object.assign(w,la);la=null;var g,qa,ra=!1,sa,k,aa,ta,ua,ba,ca,da;function n(){var a=g.buffer;k=new Int8Array(a);ta=new Int16Array(a);aa=new Uint8Array(a);ua=new Uint16Array(a);ba=new Int32Array(a);ca=new Uint32Array(a);da=new Float32Array(a);new Float64Array(a)}w.wasmMemory?g=w.wasmMemory:g=new WebAssembly.Memory({initial:256,maximum:32768,shared:!0});n();var va=[],wa=[],xa=[];
|
||||
function ya(){ka?(za=1,Aa(w.sb,w.sz),removeEventListener("message",Ba),Ca=Ca.forEach(Da),addEventListener("message",Da)):Ea(wa)}var z=0,Fa=null,A=null;function Ga(a){a="Aborted("+a+")";y(a);ra=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");fa(a);throw a;}var Ha=a=>a.startsWith("data:application/octet-stream;base64,"),Ia;
|
||||
function Ja(a){return na(a).then(b=>new Uint8Array(b),()=>{if(oa)var b=oa(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ka(a,b,c){return Ja(a).then(e=>WebAssembly.instantiate(e,b)).then(c,e=>{y(`failed to asynchronously prepare wasm: ${e}`);Ga(e)})}
|
||||
function La(a,b){var c=Ia;return"function"!=typeof WebAssembly.instantiateStreaming||Ha(c)||"function"!=typeof fetch?Ka(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){y(`wasm streaming compile failed: ${f}`);y("falling back to ArrayBuffer instantiation");return Ka(c,a,b)}))}function Ma(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}
|
||||
var Ca=[],Na=a=>{if(!(a instanceof Ma||"unwind"==a))throw a;},Oa=0,Pa=a=>{sa=a;za||0<Oa||(ra=!0);throw new Ma(a);},Qa=a=>{if(!ra)try{if(a(),!(za||0<Oa))try{sa=a=sa,Pa(a)}catch(b){Na(b)}}catch(b){Na(b)}},B,Da=a=>{let b=a.data,c=b._wsc;c&&Qa(()=>B.get(c)(...b.x))},Ba=a=>{Ca.push(a)},Ea=a=>{a.forEach(b=>b(w))},za=w.noExitRuntime||!0;class Ra{constructor(a){this.u=a-24}}
|
||||
var Sa=0,Ta=0,Ua="undefined"!=typeof TextDecoder?new TextDecoder:void 0,Va=(a,b=0,c=NaN)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16<c-b&&a.buffer&&Ua)return Ua.decode(a.slice(b,c));for(e="";b<c;){var f=a[b++];if(f&128){var h=a[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|h);else{var l=a[b++]&63;f=224==(f&240)?(f&15)<<12|h<<6|l:(f&7)<<18|h<<12|l<<6|a[b++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e},
|
||||
Wa=(a,b)=>a?Va(q(),a,b):"",C={},Xa=1,Ya={},D=(a,b,c)=>{var e=q();if(0<c){var f=b;c=b+c-1;for(var h=0;h<a.length;++h){var l=a.charCodeAt(h);if(55296<=l&&57343>=l){var m=a.charCodeAt(++h);l=65536+((l&1023)<<10)|m&1023}if(127>=l){if(b>=c)break;e[b++]=l}else{if(2047>=l){if(b+1>=c)break;e[b++]=192|l>>6}else{if(65535>=l){if(b+2>=c)break;e[b++]=224|l>>12}else{if(b+3>=c)break;e[b++]=240|l>>18;e[b++]=128|l>>12&63}e[b++]=128|l>>6&63}e[b++]=128|l&63}}e[b]=0;a=b-f}else a=0;return a},E,Za=a=>{var b=a.getExtension("ANGLE_instanced_arrays");
|
||||
b&&(a.vertexAttribDivisor=(c,e)=>b.vertexAttribDivisorANGLE(c,e),a.drawArraysInstanced=(c,e,f,h)=>b.drawArraysInstancedANGLE(c,e,f,h),a.drawElementsInstanced=(c,e,f,h,l)=>b.drawElementsInstancedANGLE(c,e,f,h,l))},$a=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c),a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},ab=a=>{var b=a.getExtension("WEBGL_draw_buffers");
|
||||
b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},bb=a=>{a.H=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},cb=a=>{a.K=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},db=a=>{var b="ANGLE_instanced_arrays EXT_blend_minmax EXT_disjoint_timer_query EXT_frag_depth EXT_shader_texture_lod EXT_sRGB OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_depth_texture WEBGL_draw_buffers EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
|
||||
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},eb=1,fb=[],F=[],gb=[],hb=[],G=[],H=[],ib=[],I=[],J=[],K=[],L=[],jb={},kb={},lb=4,mb=0,M=a=>{for(var b=eb++,c=a.length;c<b;c++)a[c]=null;return b},O=(a,b,c,e)=>{for(var f=0;f<a;f++){var h=E[c](),l=h&&M(e);h?(h.name=l,e[l]=h):N||=1282;r()[b+4*f>>2]=l}},ob=a=>{var b={J:2,alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,I:!0};a.u||(a.u=a.getContext,
|
||||
a.getContext=function(e,f){f=a.u(e,f);return"webgl"==e==f instanceof WebGLRenderingContext?f:null});var c=1<b.J?a.getContext("webgl2",b):a.getContext("webgl",b);return c?nb(c,b):0},nb=(a,b)=>{var c=M(I),e={handle:c,attributes:b,version:b.J,o:a};a.canvas&&(a.canvas.N=e);I[c]=e;("undefined"==typeof b.I||b.I)&&pb(e);return c},pb=a=>{a||=P;if(!a.T){a.T=!0;var b=a.o;b.U=b.getExtension("WEBGL_multi_draw");b.R=b.getExtension("EXT_polygon_offset_clamp");b.P=b.getExtension("EXT_clip_control");b.Z=b.getExtension("WEBGL_polygon_mode");
|
||||
Za(b);$a(b);ab(b);bb(b);cb(b);2<=a.version&&(b.m=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.m)b.m=b.getExtension("EXT_disjoint_timer_query");db(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},N,P,qb=a=>{E.bindVertexArray(ib[a])},rb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=G[e];f&&(E.deleteTexture(f),f.name=0,G[e]=null)}},sb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2];E.deleteVertexArray(ib[e]);ib[e]=null}},tb=[],ub=(a,
|
||||
b)=>{O(a,b,"createVertexArray",ib)},vb=(a,b)=>{t()[a>>2]=b;var c=t()[a>>2];t()[a+4>>2]=(b-c)/4294967296};function wb(){var a=db(E);return a=a.concat(a.map(b=>"GL_"+b))}
|
||||
var xb=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(N||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=E.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>P.version){N||=1282;return}e=wb().length;break;case 33307:case 33308:if(2>P.version){N||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=E.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":N||=1280;return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=
|
||||
0;break;default:N||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(c){case 0:r()[b+4*a>>2]=f[a];break;case 2:u()[b+4*a>>2]=f[a];break;case 4:d()[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(h){N||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${h})`);return}}break;default:N||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Native code calling glGet${c}v(${a}) and it returns ${f} of type ${typeof f}!`);
|
||||
return}switch(c){case 1:vb(b,e);break;case 0:r()[b>>2]=e;break;case 2:u()[b>>2]=e;break;case 4:d()[b]=e?1:0}}else N||=1281},yb=(a,b)=>xb(a,b,0),zb=(a,b,c)=>{if(c){a=J[a];b=2>P.version?E.m.getQueryObjectEXT(a,b):E.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;vb(c,e)}else N||=1281},Bb=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}b+=1;(c=Ab(b))&&D(a,c,b);return c},Cb=a=>{var b=jb[a];if(!b){switch(a){case 7939:b=Bb(wb().join(" "));
|
||||
break;case 7936:case 7937:case 37445:case 37446:(b=E.getParameter(a))||(N||=1280);b=b?Bb(b):0;break;case 7938:b=E.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=P.version&&(c=`OpenGL ES 3.0 (${b})`);b=Bb(c);break;case 35724:b=E.getParameter(35724);c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b=`OpenGL ES GLSL ES ${c[1]} (${b})`);b=Bb(b);break;default:N||=1280}jb[a]=b}return b},Db=(a,b)=>{if(2>P.version)return N||=1282,0;var c=kb[a];if(c)return 0>
|
||||
b||b>=c.length?(N||=1281,0):c[b];switch(a){case 7939:return c=wb().map(Bb),c=kb[a]=c,0>b||b>=c.length?(N||=1281,0):c[b];default:return N||=1280,0}},Eb=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),Fb=a=>{a-=5120;0==a?a=d():1==a?a=q():2==a?(g.buffer!=k.buffer&&n(),a=ta):4==a?a=r():6==a?a=u():5==a||28922==a||28520==a||30779==a||30782==a?a=t():(g.buffer!=k.buffer&&n(),a=ua);return a},Gb=(a,b,c,e,f)=>{a=Fb(a);b=e*((mb||c)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*a.BYTES_PER_ELEMENT+
|
||||
lb-1&-lb);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},Q=a=>{var b=E.O;if(b){var c=b.v[a];"number"==typeof c&&(b.v[a]=c=E.getUniformLocation(b,b.L[a]+(0<c?`[${c}]`:"")));return c}N||=1282},R=[],Hb=[],Ib={},Kb=()=>{if(!Jb){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in Ib)void 0===
|
||||
Ib[b]?delete a[b]:a[b]=Ib[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Jb=c}return Jb},Jb,Lb=[null,[],[]];function Mb(){}function Nb(){}function Ob(){}function Pb(){}function Qb(){}function Rb(){}function Sb(){}function Tb(){}function Ub(){}function Vb(){}function Wb(){}function Xb(){}function Yb(){}function Zb(){}function $b(){}function ac(){}function bc(){}function cc(){}function dc(){}function ec(){}function fc(){}function gc(){}function hc(){}function S(){}function ic(){}function jc(){}
|
||||
var T,kc=[],mc=a=>lc(a);w.stackAlloc=mc;ka&&(C[0]=this,addEventListener("message",Ba));for(var V=0;32>V;++V)tb.push(Array(V));var nc=new Float32Array(288);for(V=0;288>=V;++V)R[V]=nc.subarray(0,V);var oc=new Int32Array(288);for(V=0;288>=V;++V)Hb[V]=oc.subarray(0,V);
|
||||
(function(){if(w.skwasmSingleThreaded){ac=function(){return!0};let e;Nb=function(f,h){e=h};Ob=function(){return performance.now()};S=function(f){queueMicrotask(()=>e(f))}}else{ac=function(){return!1};let e=0;Nb=function(f,h){function l({data:m}){const p=m.l;p&&("syncTimeOrigin"==p?e=performance.timeOrigin-m.timeOrigin:h(m))}f?(C[f].addEventListener("message",l),C[f].postMessage({l:"syncTimeOrigin",timeOrigin:performance.timeOrigin})):addEventListener("message",l)};Ob=function(){return performance.now()+
|
||||
e};S=function(f,h,l){l?C[l].postMessage(f,{transfer:h}):postMessage(f,{transfer:h})}}const a=new Map,b=new Map,c=new Map;Pb=function(e){Nb(e,function(f){var h=f.l;if(h)switch(h){case "transferCanvas":pc(f.g,f.canvas,f.h);break;case "onInitialized":qc(f.g,f.h);break;case "resizeSurface":rc(f.g,f.width,f.height,f.h);break;case "onResizeComplete":sc(f.g,f.h);break;case "triggerContextLoss":tc(f.g,f.h);break;case "onContextLossTriggered":uc(f.g,f.h);break;case "reportContextLost":vc(f.g,f.h);break;case "renderPictures":wc(f.g,
|
||||
f.W,f.V,f.h,Ob());break;case "onRenderComplete":xc(f.g,f.h,{imageBitmaps:f.S,rasterStartMilliseconds:f.Y,rasterEndMilliseconds:f.X});break;case "setAssociatedObject":c.set(f.F,f.object);break;case "disposeAssociatedObject":f=f.F;h=c.get(f);h.close&&h.close();c.delete(f);break;case "disposeSurface":yc(f.g);break;case "rasterizeImage":zc(f.g,f.image,f.format,f.h);break;case "onRasterizeComplete":Ac(f.g,f.data,f.h);break;default:console.warn(`unrecognized skwasm message: ${h}`)}})};ic=function(e,f,h){S({l:"setAssociatedObject",
|
||||
F:f,object:h},[h],e)};Zb=function(e){return c.get(e)};Yb=function(e,f){S({l:"disposeAssociatedObject",F:f},[],e)};Sb=function(e,f){S({l:"disposeSurface",g:f},[],e)};Wb=function(e,f,h,l){S({l:"transferCanvas",g:f,canvas:h,h:l},[h],e)};ec=function(e,f,h){S({l:"onInitialized",g:e,$:f,h},[])};Vb=function(e,f,h,l,m){S({l:"resizeSurface",g:f,width:h,height:l,h:m},[],e)};fc=function(e,f){S({l:"onResizeComplete",g:e,h:f},[])};gc=function(e,f,h){e=b.get(e);e.width=f;e.height=h};Ub=function(e,f,h,l,m){S({l:"renderPictures",
|
||||
g:f,W:h,V:l,h:m},[],e)};hc=async function(e,f,h,l){f||=[];S({l:"onRenderComplete",g:e,h:l,S:f,Y:h,X:Ob()},[...f])};Mb=function(e,f){f||=[];e=b.get(e);f.push(e.transferToImageBitmap());return f};Tb=function(e,f,h,l,m){S({l:"rasterizeImage",g:f,image:h,format:l,h:m},[],e)};bc=function(e,f,h){S({l:"onRasterizeComplete",g:e,data:f,h})};Xb=function(e,f,h){S({l:"triggerContextLoss",g:f,h},[],e)};cc=function(e,f){S({l:"onContextLossTriggered",g:e,h:f},[])};dc=function(e,f){S({l:"reportContextLost",g:e,h:f},
|
||||
[])};jc=function(){P.o.getExtension("WEBGL_lose_context").loseContext()};$b=function(e,f){const h=ob(e);b.set(h,e);var l=function(m){m.preventDefault();Bc(f);e.removeEventListener("webglcontextlost",l)};e.addEventListener("webglcontextlost",l);a.set(h,l);return h};Rb=function(e){const f=b.get(e),h=a.get(e);f&&h&&f.removeEventListener("webglcontextlost",h);P===I[e]&&(P=null);"object"==typeof JSEvents&&JSEvents.ba(I[e].o.canvas);I[e]&&I[e].o.canvas&&(I[e].o.canvas.N=void 0);I[e]=null;b.delete(e);a.delete(e)};
|
||||
Qb=function(e,f,h){const l=P.o,m=l.createTexture();l.bindTexture(l.TEXTURE_2D,m);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);l.texImage2D(l.TEXTURE_2D,0,l.RGBA,f,h,0,l.RGBA,l.UNSIGNED_BYTE,e);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null);e=M(G);G[e]=m;return e}})();
|
||||
var Mc={__cxa_throw:(a,b,c)=>{var e=new Ra(a);t()[e.u+16>>2]=0;t()[e.u+4>>2]=b;t()[e.u+8>>2]=c;Sa=a;Ta++;throw Sa;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_openat:function(){},_abort_js:()=>{Ga("")},_emscripten_create_wasm_worker:(a,b)=>{let c=C[Xa]=new Worker(ma("skwasm.ww.js"));c.postMessage({$ww:Xa,wasm:qa,js:w.mainScriptUrlOrBlob||_scriptName,wasmMemory:g,sb:a,sz:b});c.onmessage=Da;return Xa++},_emscripten_get_now_is_monotonic:()=>
|
||||
1,_emscripten_runtime_keepalive_clear:()=>{za=!1;Oa=0},_emscripten_throw_longjmp:()=>{throw Infinity;},_mmap_js:function(){return-52},_munmap_js:function(){},_setitimer_js:(a,b)=>{Ya[a]&&(clearTimeout(Ya[a].id),delete Ya[a]);if(!b)return 0;var c=setTimeout(()=>{delete Ya[a];Qa(()=>Cc(a,performance.now()))},b);Ya[a]={id:c,ca:b};return 0},_tzset_js:(a,b,c,e)=>{var f=(new Date).getFullYear(),h=(new Date(f,0,1)).getTimezoneOffset();f=(new Date(f,6,1)).getTimezoneOffset();var l=Math.max(h,f);t()[a>>2]=
|
||||
60*l;r()[b>>2]=Number(h!=f);b=m=>{var p=Math.abs(m);return`UTC${0<=m?"-":"+"}${String(Math.floor(p/60)).padStart(2,"0")}${String(p%60).padStart(2,"0")}`};a=b(h);b=b(f);f<h?(D(a,c,17),D(b,e,17)):(D(a,e,17),D(b,c,17))},emscripten_console_warn:a=>{console.warn(Wa(a))},emscripten_get_now:()=>performance.now(),emscripten_glActiveTexture:a=>E.activeTexture(a),emscripten_glAttachShader:(a,b)=>{E.attachShader(F[a],H[b])},emscripten_glBeginQuery:(a,b)=>{E.beginQuery(a,J[b])},emscripten_glBeginQueryEXT:(a,
|
||||
b)=>{E.m.beginQueryEXT(a,J[b])},emscripten_glBindAttribLocation:(a,b,c)=>{E.bindAttribLocation(F[a],b,Wa(c))},emscripten_glBindBuffer:(a,b)=>{35051==a?E.D=b:35052==a&&(E.s=b);E.bindBuffer(a,fb[b])},emscripten_glBindFramebuffer:(a,b)=>{E.bindFramebuffer(a,gb[b])},emscripten_glBindRenderbuffer:(a,b)=>{E.bindRenderbuffer(a,hb[b])},emscripten_glBindSampler:(a,b)=>{E.bindSampler(a,K[b])},emscripten_glBindTexture:(a,b)=>{E.bindTexture(a,G[b])},emscripten_glBindVertexArray:qb,emscripten_glBindVertexArrayOES:qb,
|
||||
emscripten_glBlendColor:(a,b,c,e)=>E.blendColor(a,b,c,e),emscripten_glBlendEquation:a=>E.blendEquation(a),emscripten_glBlendFunc:(a,b)=>E.blendFunc(a,b),emscripten_glBlitFramebuffer:(a,b,c,e,f,h,l,m,p,v)=>E.blitFramebuffer(a,b,c,e,f,h,l,m,p,v),emscripten_glBufferData:(a,b,c,e)=>{2<=P.version?c&&b?E.bufferData(a,q(),e,c,b):E.bufferData(a,b,e):E.bufferData(a,c?q().subarray(c,c+b):b,e)},emscripten_glBufferSubData:(a,b,c,e)=>{2<=P.version?c&&E.bufferSubData(a,b,q(),e,c):E.bufferSubData(a,b,q().subarray(e,
|
||||
e+c))},emscripten_glCheckFramebufferStatus:a=>E.checkFramebufferStatus(a),emscripten_glClear:a=>E.clear(a),emscripten_glClearColor:(a,b,c,e)=>E.clearColor(a,b,c,e),emscripten_glClearStencil:a=>E.clearStencil(a),emscripten_glClientWaitSync:(a,b,c,e)=>E.clientWaitSync(L[a],b,(c>>>0)+4294967296*e),emscripten_glColorMask:(a,b,c,e)=>{E.colorMask(!!a,!!b,!!c,!!e)},emscripten_glCompileShader:a=>{E.compileShader(H[a])},emscripten_glCompressedTexImage2D:(a,b,c,e,f,h,l,m)=>{2<=P.version?E.s||!l?E.compressedTexImage2D(a,
|
||||
b,c,e,f,h,l,m):E.compressedTexImage2D(a,b,c,e,f,h,q(),m,l):E.compressedTexImage2D(a,b,c,e,f,h,q().subarray(m,m+l))},emscripten_glCompressedTexSubImage2D:(a,b,c,e,f,h,l,m,p)=>{2<=P.version?E.s||!m?E.compressedTexSubImage2D(a,b,c,e,f,h,l,m,p):E.compressedTexSubImage2D(a,b,c,e,f,h,l,q(),p,m):E.compressedTexSubImage2D(a,b,c,e,f,h,l,q().subarray(p,p+m))},emscripten_glCopyBufferSubData:(a,b,c,e,f)=>E.copyBufferSubData(a,b,c,e,f),emscripten_glCopyTexSubImage2D:(a,b,c,e,f,h,l,m)=>E.copyTexSubImage2D(a,b,
|
||||
c,e,f,h,l,m),emscripten_glCreateProgram:()=>{var a=M(F),b=E.createProgram();b.name=a;b.C=b.A=b.B=0;b.G=1;F[a]=b;return a},emscripten_glCreateShader:a=>{var b=M(H);H[b]=E.createShader(a);return b},emscripten_glCullFace:a=>E.cullFace(a),emscripten_glDeleteBuffers:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=fb[e];f&&(E.deleteBuffer(f),f.name=0,fb[e]=null,e==E.D&&(E.D=0),e==E.s&&(E.s=0))}},emscripten_glDeleteFramebuffers:(a,b)=>{for(var c=0;c<a;++c){var e=r()[b+4*c>>2],f=gb[e];f&&(E.deleteFramebuffer(f),
|
||||
f.name=0,gb[e]=null)}},emscripten_glDeleteProgram:a=>{if(a){var b=F[a];b?(E.deleteProgram(b),b.name=0,F[a]=null):N||=1281}},emscripten_glDeleteQueries:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=J[e];f&&(E.deleteQuery(f),J[e]=null)}},emscripten_glDeleteQueriesEXT:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=J[e];f&&(E.m.deleteQueryEXT(f),J[e]=null)}},emscripten_glDeleteRenderbuffers:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=hb[e];f&&(E.deleteRenderbuffer(f),f.name=0,hb[e]=null)}},
|
||||
emscripten_glDeleteSamplers:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=K[e];f&&(E.deleteSampler(f),f.name=0,K[e]=null)}},emscripten_glDeleteShader:a=>{if(a){var b=H[a];b?(E.deleteShader(b),H[a]=null):N||=1281}},emscripten_glDeleteSync:a=>{if(a){var b=L[a];b?(E.deleteSync(b),b.name=0,L[a]=null):N||=1281}},emscripten_glDeleteTextures:rb,emscripten_glDeleteVertexArrays:sb,emscripten_glDeleteVertexArraysOES:sb,emscripten_glDepthMask:a=>{E.depthMask(!!a)},emscripten_glDisable:a=>E.disable(a),emscripten_glDisableVertexAttribArray:a=>
|
||||
{E.disableVertexAttribArray(a)},emscripten_glDrawArrays:(a,b,c)=>{E.drawArrays(a,b,c)},emscripten_glDrawArraysInstanced:(a,b,c,e)=>{E.drawArraysInstanced(a,b,c,e)},emscripten_glDrawArraysInstancedBaseInstanceWEBGL:(a,b,c,e,f)=>{E.H.drawArraysInstancedBaseInstanceWEBGL(a,b,c,e,f)},emscripten_glDrawBuffers:(a,b)=>{for(var c=tb[a],e=0;e<a;e++)c[e]=r()[b+4*e>>2];E.drawBuffers(c)},emscripten_glDrawElements:(a,b,c,e)=>{E.drawElements(a,b,c,e)},emscripten_glDrawElementsInstanced:(a,b,c,e,f)=>{E.drawElementsInstanced(a,
|
||||
b,c,e,f)},emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL:(a,b,c,e,f,h,l)=>{E.H.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,e,f,h,l)},emscripten_glDrawRangeElements:(a,b,c,e,f,h)=>{E.drawElements(a,e,f,h)},emscripten_glEnable:a=>E.enable(a),emscripten_glEnableVertexAttribArray:a=>{E.enableVertexAttribArray(a)},emscripten_glEndQuery:a=>E.endQuery(a),emscripten_glEndQueryEXT:a=>{E.m.endQueryEXT(a)},emscripten_glFenceSync:(a,b)=>(a=E.fenceSync(a,b))?(b=M(L),a.name=b,L[b]=a,b):
|
||||
0,emscripten_glFinish:()=>E.finish(),emscripten_glFlush:()=>E.flush(),emscripten_glFramebufferRenderbuffer:(a,b,c,e)=>{E.framebufferRenderbuffer(a,b,c,hb[e])},emscripten_glFramebufferTexture2D:(a,b,c,e,f)=>{E.framebufferTexture2D(a,b,c,G[e],f)},emscripten_glFrontFace:a=>E.frontFace(a),emscripten_glGenBuffers:(a,b)=>{O(a,b,"createBuffer",fb)},emscripten_glGenFramebuffers:(a,b)=>{O(a,b,"createFramebuffer",gb)},emscripten_glGenQueries:(a,b)=>{O(a,b,"createQuery",J)},emscripten_glGenQueriesEXT:(a,b)=>
|
||||
{for(var c=0;c<a;c++){var e=E.m.createQueryEXT();if(!e){for(N||=1282;c<a;)r()[b+4*c++>>2]=0;break}var f=M(J);e.name=f;J[f]=e;r()[b+4*c>>2]=f}},emscripten_glGenRenderbuffers:(a,b)=>{O(a,b,"createRenderbuffer",hb)},emscripten_glGenSamplers:(a,b)=>{O(a,b,"createSampler",K)},emscripten_glGenTextures:(a,b)=>{O(a,b,"createTexture",G)},emscripten_glGenVertexArrays:ub,emscripten_glGenVertexArraysOES:ub,emscripten_glGenerateMipmap:a=>E.generateMipmap(a),emscripten_glGetBufferParameteriv:(a,b,c)=>{c?r()[c>>
|
||||
2]=E.getBufferParameter(a,b):N||=1281},emscripten_glGetError:()=>{var a=E.getError()||N;N=0;return a},emscripten_glGetFloatv:(a,b)=>xb(a,b,2),emscripten_glGetFramebufferAttachmentParameteriv:(a,b,c,e)=>{a=E.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;r()[e>>2]=a},emscripten_glGetIntegerv:yb,emscripten_glGetProgramInfoLog:(a,b,c,e)=>{a=E.getProgramInfoLog(F[a]);null===a&&(a="(unknown error)");b=0<b&&e?D(a,e,b):0;c&&(r()[c>>2]=b)},
|
||||
emscripten_glGetProgramiv:(a,b,c)=>{if(c)if(a>=eb)N||=1281;else if(a=F[a],35716==b)a=E.getProgramInfoLog(a),null===a&&(a="(unknown error)"),r()[c>>2]=a.length+1;else if(35719==b){if(!a.C){var e=E.getProgramParameter(a,35718);for(b=0;b<e;++b)a.C=Math.max(a.C,E.getActiveUniform(a,b).name.length+1)}r()[c>>2]=a.C}else if(35722==b){if(!a.A)for(e=E.getProgramParameter(a,35721),b=0;b<e;++b)a.A=Math.max(a.A,E.getActiveAttrib(a,b).name.length+1);r()[c>>2]=a.A}else if(35381==b){if(!a.B)for(e=E.getProgramParameter(a,
|
||||
35382),b=0;b<e;++b)a.B=Math.max(a.B,E.getActiveUniformBlockName(a,b).length+1);r()[c>>2]=a.B}else r()[c>>2]=E.getProgramParameter(a,b);else N||=1281},emscripten_glGetQueryObjecti64vEXT:zb,emscripten_glGetQueryObjectui64vEXT:zb,emscripten_glGetQueryObjectuiv:(a,b,c)=>{if(c){a=E.getQueryParameter(J[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;r()[c>>2]=e}else N||=1281},emscripten_glGetQueryObjectuivEXT:(a,b,c)=>{if(c){a=E.m.getQueryObjectEXT(J[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;r()[c>>2]=e}else N||=
|
||||
1281},emscripten_glGetQueryiv:(a,b,c)=>{c?r()[c>>2]=E.getQuery(a,b):N||=1281},emscripten_glGetQueryivEXT:(a,b,c)=>{c?r()[c>>2]=E.m.getQueryEXT(a,b):N||=1281},emscripten_glGetRenderbufferParameteriv:(a,b,c)=>{c?r()[c>>2]=E.getRenderbufferParameter(a,b):N||=1281},emscripten_glGetShaderInfoLog:(a,b,c,e)=>{a=E.getShaderInfoLog(H[a]);null===a&&(a="(unknown error)");b=0<b&&e?D(a,e,b):0;c&&(r()[c>>2]=b)},emscripten_glGetShaderPrecisionFormat:(a,b,c,e)=>{a=E.getShaderPrecisionFormat(a,b);r()[c>>2]=a.rangeMin;
|
||||
r()[c+4>>2]=a.rangeMax;r()[e>>2]=a.precision},emscripten_glGetShaderiv:(a,b,c)=>{c?35716==b?(a=E.getShaderInfoLog(H[a]),null===a&&(a="(unknown error)"),a=a?a.length+1:0,r()[c>>2]=a):35720==b?(a=(a=E.getShaderSource(H[a]))?a.length+1:0,r()[c>>2]=a):r()[c>>2]=E.getShaderParameter(H[a],b):N||=1281},emscripten_glGetString:Cb,emscripten_glGetStringi:Db,emscripten_glGetUniformLocation:(a,b)=>{b=Wa(b);if(a=F[a]){var c=a,e=c.v,f=c.M,h;if(!e){c.v=e={};c.L={};var l=E.getProgramParameter(c,35718);for(h=0;h<
|
||||
l;++h){var m=E.getActiveUniform(c,h);var p=m.name;m=m.size;var v=Eb(p);v=0<v?p.slice(0,v):p;var U=c.G;c.G+=m;f[v]=[m,U];for(p=0;p<m;++p)e[U]=p,c.L[U++]=v}}c=a.v;e=0;f=b;h=Eb(b);0<h&&(e=parseInt(b.slice(h+1))>>>0,f=b.slice(0,h));if((f=a.M[f])&&e<f[0]&&(e+=f[1],c[e]=c[e]||E.getUniformLocation(a,b)))return e}else N||=1281;return-1},emscripten_glInvalidateFramebuffer:(a,b,c)=>{for(var e=tb[b],f=0;f<b;f++)e[f]=r()[c+4*f>>2];E.invalidateFramebuffer(a,e)},emscripten_glInvalidateSubFramebuffer:(a,b,c,e,f,
|
||||
h,l)=>{for(var m=tb[b],p=0;p<b;p++)m[p]=r()[c+4*p>>2];E.invalidateSubFramebuffer(a,m,e,f,h,l)},emscripten_glIsSync:a=>E.isSync(L[a]),emscripten_glIsTexture:a=>(a=G[a])?E.isTexture(a):0,emscripten_glLineWidth:a=>E.lineWidth(a),emscripten_glLinkProgram:a=>{a=F[a];E.linkProgram(a);a.v=0;a.M={}},emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL:(a,b,c,e,f,h)=>{E.K.multiDrawArraysInstancedBaseInstanceWEBGL(a,r(),b>>2,r(),c>>2,r(),e>>2,t(),f>>2,h)},emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL:(a,
|
||||
b,c,e,f,h,l,m)=>{E.K.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,r(),b>>2,c,r(),e>>2,r(),f>>2,r(),h>>2,t(),l>>2,m)},emscripten_glPixelStorei:(a,b)=>{3317==a?lb=b:3314==a&&(mb=b);E.pixelStorei(a,b)},emscripten_glQueryCounterEXT:(a,b)=>{E.m.queryCounterEXT(J[a],b)},emscripten_glReadBuffer:a=>E.readBuffer(a),emscripten_glReadPixels:(a,b,c,e,f,h,l)=>{if(2<=P.version)if(E.D)E.readPixels(a,b,c,e,f,h,l);else{var m=Fb(h);l>>>=31-Math.clz32(m.BYTES_PER_ELEMENT);E.readPixels(a,b,c,e,f,h,m,l)}else(m=
|
||||
Gb(h,f,c,e,l))?E.readPixels(a,b,c,e,f,h,m):N||=1280},emscripten_glRenderbufferStorage:(a,b,c,e)=>E.renderbufferStorage(a,b,c,e),emscripten_glRenderbufferStorageMultisample:(a,b,c,e,f)=>E.renderbufferStorageMultisample(a,b,c,e,f),emscripten_glSamplerParameterf:(a,b,c)=>{E.samplerParameterf(K[a],b,c)},emscripten_glSamplerParameteri:(a,b,c)=>{E.samplerParameteri(K[a],b,c)},emscripten_glSamplerParameteriv:(a,b,c)=>{c=r()[c>>2];E.samplerParameteri(K[a],b,c)},emscripten_glScissor:(a,b,c,e)=>E.scissor(a,
|
||||
b,c,e),emscripten_glShaderSource:(a,b,c,e)=>{for(var f="",h=0;h<b;++h){var l=e?t()[e+4*h>>2]:void 0;f+=Wa(t()[c+4*h>>2],l)}E.shaderSource(H[a],f)},emscripten_glStencilFunc:(a,b,c)=>E.stencilFunc(a,b,c),emscripten_glStencilFuncSeparate:(a,b,c,e)=>E.stencilFuncSeparate(a,b,c,e),emscripten_glStencilMask:a=>E.stencilMask(a),emscripten_glStencilMaskSeparate:(a,b)=>E.stencilMaskSeparate(a,b),emscripten_glStencilOp:(a,b,c)=>E.stencilOp(a,b,c),emscripten_glStencilOpSeparate:(a,b,c,e)=>E.stencilOpSeparate(a,
|
||||
b,c,e),emscripten_glTexImage2D:(a,b,c,e,f,h,l,m,p)=>{if(2<=P.version){if(E.s){E.texImage2D(a,b,c,e,f,h,l,m,p);return}if(p){var v=Fb(m);p>>>=31-Math.clz32(v.BYTES_PER_ELEMENT);E.texImage2D(a,b,c,e,f,h,l,m,v,p);return}}v=p?Gb(m,l,e,f,p):null;E.texImage2D(a,b,c,e,f,h,l,m,v)},emscripten_glTexParameterf:(a,b,c)=>E.texParameterf(a,b,c),emscripten_glTexParameterfv:(a,b,c)=>{c=u()[c>>2];E.texParameterf(a,b,c)},emscripten_glTexParameteri:(a,b,c)=>E.texParameteri(a,b,c),emscripten_glTexParameteriv:(a,b,c)=>
|
||||
{c=r()[c>>2];E.texParameteri(a,b,c)},emscripten_glTexStorage2D:(a,b,c,e,f)=>E.texStorage2D(a,b,c,e,f),emscripten_glTexSubImage2D:(a,b,c,e,f,h,l,m,p)=>{if(2<=P.version){if(E.s){E.texSubImage2D(a,b,c,e,f,h,l,m,p);return}if(p){var v=Fb(m);E.texSubImage2D(a,b,c,e,f,h,l,m,v,p>>>31-Math.clz32(v.BYTES_PER_ELEMENT));return}}p=p?Gb(m,l,f,h,p):null;E.texSubImage2D(a,b,c,e,f,h,l,m,p)},emscripten_glUniform1f:(a,b)=>{E.uniform1f(Q(a),b)},emscripten_glUniform1fv:(a,b,c)=>{if(2<=P.version)b&&E.uniform1fv(Q(a),u(),
|
||||
c>>2,b);else{if(288>=b)for(var e=R[b],f=0;f<b;++f)e[f]=u()[c+4*f>>2];else e=u().subarray(c>>2,c+4*b>>2);E.uniform1fv(Q(a),e)}},emscripten_glUniform1i:(a,b)=>{E.uniform1i(Q(a),b)},emscripten_glUniform1iv:(a,b,c)=>{if(2<=P.version)b&&E.uniform1iv(Q(a),r(),c>>2,b);else{if(288>=b)for(var e=Hb[b],f=0;f<b;++f)e[f]=r()[c+4*f>>2];else e=r().subarray(c>>2,c+4*b>>2);E.uniform1iv(Q(a),e)}},emscripten_glUniform2f:(a,b,c)=>{E.uniform2f(Q(a),b,c)},emscripten_glUniform2fv:(a,b,c)=>{if(2<=P.version)b&&E.uniform2fv(Q(a),
|
||||
u(),c>>2,2*b);else{if(144>=b){b*=2;for(var e=R[b],f=0;f<b;f+=2)e[f]=u()[c+4*f>>2],e[f+1]=u()[c+(4*f+4)>>2]}else e=u().subarray(c>>2,c+8*b>>2);E.uniform2fv(Q(a),e)}},emscripten_glUniform2i:(a,b,c)=>{E.uniform2i(Q(a),b,c)},emscripten_glUniform2iv:(a,b,c)=>{if(2<=P.version)b&&E.uniform2iv(Q(a),r(),c>>2,2*b);else{if(144>=b){b*=2;for(var e=Hb[b],f=0;f<b;f+=2)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>2]}else e=r().subarray(c>>2,c+8*b>>2);E.uniform2iv(Q(a),e)}},emscripten_glUniform3f:(a,b,c,e)=>{E.uniform3f(Q(a),
|
||||
b,c,e)},emscripten_glUniform3fv:(a,b,c)=>{if(2<=P.version)b&&E.uniform3fv(Q(a),u(),c>>2,3*b);else{if(96>=b){b*=3;for(var e=R[b],f=0;f<b;f+=3)e[f]=u()[c+4*f>>2],e[f+1]=u()[c+(4*f+4)>>2],e[f+2]=u()[c+(4*f+8)>>2]}else e=u().subarray(c>>2,c+12*b>>2);E.uniform3fv(Q(a),e)}},emscripten_glUniform3i:(a,b,c,e)=>{E.uniform3i(Q(a),b,c,e)},emscripten_glUniform3iv:(a,b,c)=>{if(2<=P.version)b&&E.uniform3iv(Q(a),r(),c>>2,3*b);else{if(96>=b){b*=3;for(var e=Hb[b],f=0;f<b;f+=3)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>
|
||||
2],e[f+2]=r()[c+(4*f+8)>>2]}else e=r().subarray(c>>2,c+12*b>>2);E.uniform3iv(Q(a),e)}},emscripten_glUniform4f:(a,b,c,e,f)=>{E.uniform4f(Q(a),b,c,e,f)},emscripten_glUniform4fv:(a,b,c)=>{if(2<=P.version)b&&E.uniform4fv(Q(a),u(),c>>2,4*b);else{if(72>=b){var e=R[4*b],f=u();c>>=2;b*=4;for(var h=0;h<b;h+=4){var l=c+h;e[h]=f[l];e[h+1]=f[l+1];e[h+2]=f[l+2];e[h+3]=f[l+3]}}else e=u().subarray(c>>2,c+16*b>>2);E.uniform4fv(Q(a),e)}},emscripten_glUniform4i:(a,b,c,e,f)=>{E.uniform4i(Q(a),b,c,e,f)},emscripten_glUniform4iv:(a,
|
||||
b,c)=>{if(2<=P.version)b&&E.uniform4iv(Q(a),r(),c>>2,4*b);else{if(72>=b){b*=4;for(var e=Hb[b],f=0;f<b;f+=4)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>2],e[f+2]=r()[c+(4*f+8)>>2],e[f+3]=r()[c+(4*f+12)>>2]}else e=r().subarray(c>>2,c+16*b>>2);E.uniform4iv(Q(a),e)}},emscripten_glUniformMatrix2fv:(a,b,c,e)=>{if(2<=P.version)b&&E.uniformMatrix2fv(Q(a),!!c,u(),e>>2,4*b);else{if(72>=b){b*=4;for(var f=R[b],h=0;h<b;h+=4)f[h]=u()[e+4*h>>2],f[h+1]=u()[e+(4*h+4)>>2],f[h+2]=u()[e+(4*h+8)>>2],f[h+3]=u()[e+(4*h+12)>>
|
||||
2]}else f=u().subarray(e>>2,e+16*b>>2);E.uniformMatrix2fv(Q(a),!!c,f)}},emscripten_glUniformMatrix3fv:(a,b,c,e)=>{if(2<=P.version)b&&E.uniformMatrix3fv(Q(a),!!c,u(),e>>2,9*b);else{if(32>=b){b*=9;for(var f=R[b],h=0;h<b;h+=9)f[h]=u()[e+4*h>>2],f[h+1]=u()[e+(4*h+4)>>2],f[h+2]=u()[e+(4*h+8)>>2],f[h+3]=u()[e+(4*h+12)>>2],f[h+4]=u()[e+(4*h+16)>>2],f[h+5]=u()[e+(4*h+20)>>2],f[h+6]=u()[e+(4*h+24)>>2],f[h+7]=u()[e+(4*h+28)>>2],f[h+8]=u()[e+(4*h+32)>>2]}else f=u().subarray(e>>2,e+36*b>>2);E.uniformMatrix3fv(Q(a),
|
||||
!!c,f)}},emscripten_glUniformMatrix4fv:(a,b,c,e)=>{if(2<=P.version)b&&E.uniformMatrix4fv(Q(a),!!c,u(),e>>2,16*b);else{if(18>=b){var f=R[16*b],h=u();e>>=2;b*=16;for(var l=0;l<b;l+=16){var m=e+l;f[l]=h[m];f[l+1]=h[m+1];f[l+2]=h[m+2];f[l+3]=h[m+3];f[l+4]=h[m+4];f[l+5]=h[m+5];f[l+6]=h[m+6];f[l+7]=h[m+7];f[l+8]=h[m+8];f[l+9]=h[m+9];f[l+10]=h[m+10];f[l+11]=h[m+11];f[l+12]=h[m+12];f[l+13]=h[m+13];f[l+14]=h[m+14];f[l+15]=h[m+15]}}else f=u().subarray(e>>2,e+64*b>>2);E.uniformMatrix4fv(Q(a),!!c,f)}},emscripten_glUseProgram:a=>
|
||||
{a=F[a];E.useProgram(a);E.O=a},emscripten_glVertexAttrib1f:(a,b)=>E.vertexAttrib1f(a,b),emscripten_glVertexAttrib2fv:(a,b)=>{E.vertexAttrib2f(a,u()[b>>2],u()[b+4>>2])},emscripten_glVertexAttrib3fv:(a,b)=>{E.vertexAttrib3f(a,u()[b>>2],u()[b+4>>2],u()[b+8>>2])},emscripten_glVertexAttrib4fv:(a,b)=>{E.vertexAttrib4f(a,u()[b>>2],u()[b+4>>2],u()[b+8>>2],u()[b+12>>2])},emscripten_glVertexAttribDivisor:(a,b)=>{E.vertexAttribDivisor(a,b)},emscripten_glVertexAttribIPointer:(a,b,c,e,f)=>{E.vertexAttribIPointer(a,
|
||||
b,c,e,f)},emscripten_glVertexAttribPointer:(a,b,c,e,f,h)=>{E.vertexAttribPointer(a,b,c,!!e,f,h)},emscripten_glViewport:(a,b,c,e)=>E.viewport(a,b,c,e),emscripten_glWaitSync:(a,b,c,e)=>{E.waitSync(L[a],b,(c>>>0)+4294967296*e)},emscripten_resize_heap:a=>{var b=q().length;a>>>=0;if(a<=b||2147483648<a)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+.2/c);e=Math.min(e,a+100663296);a:{e=(Math.min(2147483648,65536*Math.ceil(Math.max(a,e)/65536))-g.buffer.byteLength+65535)/65536|0;try{g.grow(e);n();var f=1;break a}catch(h){}f=
|
||||
void 0}if(f)return!0}return!1},emscripten_wasm_worker_post_function_v:(a,b)=>{C[a].postMessage({_wsc:b,x:[]})},emscripten_webgl_enable_extension:function(a,b){a=I[a];b=Wa(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Za(E);"OES_vertex_array_object"==b&&$a(E);"WEBGL_draw_buffers"==b&&ab(E);"WEBGL_draw_instanced_base_vertex_base_instance"==b&&bb(E);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&cb(E);"WEBGL_multi_draw"==b&&(E.U=E.getExtension("WEBGL_multi_draw"));
|
||||
"EXT_polygon_offset_clamp"==b&&(E.R=E.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==b&&(E.P=E.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==b&&(E.Z=E.getExtension("WEBGL_polygon_mode"));return!!a.o.getExtension(b)},emscripten_webgl_get_current_context:()=>P?P.handle:0,emscripten_webgl_make_context_current:a=>{P=I[a];w.aa=E=P?.o;return!a||E?0:-5},environ_get:(a,b)=>{var c=0;Kb().forEach((e,f)=>{var h=b+c;f=t()[a+4*f>>2]=h;for(h=0;h<e.length;++h)d()[f++]=e.charCodeAt(h);d()[f]=
|
||||
0;c+=e.length+1});return 0},environ_sizes_get:(a,b)=>{var c=Kb();t()[a>>2]=c.length;var e=0;c.forEach(f=>e+=f.length+1);t()[b>>2]=e;return 0},fd_close:()=>52,fd_pread:function(){return 52},fd_read:()=>52,fd_seek:function(){return 70},fd_write:(a,b,c,e)=>{for(var f=0,h=0;h<c;h++){var l=t()[b>>2],m=t()[b+4>>2];b+=8;for(var p=0;p<m;p++){var v=q()[l+p],U=Lb[a];0===v||10===v?((1===a?pa:y)(Va(U)),U.length=0):U.push(v)}f+=m}t()[e>>2]=f;return 0},glDeleteTextures:rb,glGetIntegerv:yb,glGetString:Cb,glGetStringi:Db,
|
||||
invoke_ii:Dc,invoke_iii:Ec,invoke_iiii:Fc,invoke_iiiii:Gc,invoke_iiiiiii:Hc,invoke_vi:Ic,invoke_vii:Jc,invoke_viii:Kc,invoke_viiiiiii:Lc,memory:g,proc_exit:Pa,skwasm_captureImageBitmap:Mb,skwasm_connectThread:Pb,skwasm_createGlTextureFromTextureSource:Qb,skwasm_destroyContext:Rb,skwasm_dispatchDisposeSurface:Sb,skwasm_dispatchRasterizeImage:Tb,skwasm_dispatchRenderPictures:Ub,skwasm_dispatchResizeSurface:Vb,skwasm_dispatchTransferCanvas:Wb,skwasm_dispatchTriggerContextLoss:Xb,skwasm_disposeAssociatedObjectOnThread:Yb,
|
||||
skwasm_getAssociatedObject:Zb,skwasm_getGlContextForCanvas:$b,skwasm_isSingleThreaded:ac,skwasm_postRasterizeResult:bc,skwasm_reportContextLossTriggered:cc,skwasm_reportContextLost:dc,skwasm_reportInitialized:ec,skwasm_reportResizeComplete:fc,skwasm_resizeCanvas:gc,skwasm_resolveAndPostImages:hc,skwasm_setAssociatedObjectOnThread:ic,skwasm_triggerContextLossOnCanvas:jc},W=function(){function a(c,e){W=c.exports;w.wasmExports=W;B=W.__indirect_function_table;wa.unshift(W.__wasm_call_ctors);qa=e;z--;
|
||||
0==z&&(null!==Fa&&(clearInterval(Fa),Fa=null),A&&(c=A,A=null,c()));return W}var b={env:Mc,wasi_snapshot_preview1:Mc};z++;if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){y(`Module.instantiateWasm callback failed with error: ${c}`),fa(c)}Ia??=Ha("skwasm.wasm")?"skwasm.wasm":ma("skwasm.wasm");La(b,function(c){a(c.instance,c.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,c,e)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,c,e);w._canvas_save=a=>(w._canvas_save=W.canvas_save)(a);
|
||||
w._canvas_restore=a=>(w._canvas_restore=W.canvas_restore)(a);w._canvas_restoreToCount=(a,b)=>(w._canvas_restoreToCount=W.canvas_restoreToCount)(a,b);w._canvas_getSaveCount=a=>(w._canvas_getSaveCount=W.canvas_getSaveCount)(a);w._canvas_translate=(a,b,c)=>(w._canvas_translate=W.canvas_translate)(a,b,c);w._canvas_scale=(a,b,c)=>(w._canvas_scale=W.canvas_scale)(a,b,c);w._canvas_rotate=(a,b)=>(w._canvas_rotate=W.canvas_rotate)(a,b);w._canvas_skew=(a,b,c)=>(w._canvas_skew=W.canvas_skew)(a,b,c);
|
||||
w._canvas_transform=(a,b)=>(w._canvas_transform=W.canvas_transform)(a,b);w._canvas_clear=(a,b)=>(w._canvas_clear=W.canvas_clear)(a,b);w._canvas_clipRect=(a,b,c,e)=>(w._canvas_clipRect=W.canvas_clipRect)(a,b,c,e);w._canvas_clipRRect=(a,b,c)=>(w._canvas_clipRRect=W.canvas_clipRRect)(a,b,c);w._canvas_clipPath=(a,b,c)=>(w._canvas_clipPath=W.canvas_clipPath)(a,b,c);w._canvas_drawColor=(a,b,c)=>(w._canvas_drawColor=W.canvas_drawColor)(a,b,c);
|
||||
w._canvas_drawLine=(a,b,c,e,f,h)=>(w._canvas_drawLine=W.canvas_drawLine)(a,b,c,e,f,h);w._canvas_drawPaint=(a,b)=>(w._canvas_drawPaint=W.canvas_drawPaint)(a,b);w._canvas_drawRect=(a,b,c)=>(w._canvas_drawRect=W.canvas_drawRect)(a,b,c);w._canvas_drawRRect=(a,b,c)=>(w._canvas_drawRRect=W.canvas_drawRRect)(a,b,c);w._canvas_drawDRRect=(a,b,c,e)=>(w._canvas_drawDRRect=W.canvas_drawDRRect)(a,b,c,e);w._canvas_drawOval=(a,b,c)=>(w._canvas_drawOval=W.canvas_drawOval)(a,b,c);
|
||||
w._canvas_drawCircle=(a,b,c,e,f)=>(w._canvas_drawCircle=W.canvas_drawCircle)(a,b,c,e,f);w._canvas_drawArc=(a,b,c,e,f,h)=>(w._canvas_drawArc=W.canvas_drawArc)(a,b,c,e,f,h);w._canvas_drawPath=(a,b,c)=>(w._canvas_drawPath=W.canvas_drawPath)(a,b,c);w._canvas_drawShadow=(a,b,c,e,f,h)=>(w._canvas_drawShadow=W.canvas_drawShadow)(a,b,c,e,f,h);w._canvas_drawParagraph=(a,b,c,e)=>(w._canvas_drawParagraph=W.canvas_drawParagraph)(a,b,c,e);
|
||||
w._canvas_drawPicture=(a,b)=>(w._canvas_drawPicture=W.canvas_drawPicture)(a,b);w._canvas_drawImage=(a,b,c,e,f,h)=>(w._canvas_drawImage=W.canvas_drawImage)(a,b,c,e,f,h);w._canvas_drawImageRect=(a,b,c,e,f,h)=>(w._canvas_drawImageRect=W.canvas_drawImageRect)(a,b,c,e,f,h);w._canvas_drawImageNine=(a,b,c,e,f,h)=>(w._canvas_drawImageNine=W.canvas_drawImageNine)(a,b,c,e,f,h);w._canvas_drawVertices=(a,b,c,e)=>(w._canvas_drawVertices=W.canvas_drawVertices)(a,b,c,e);
|
||||
w._canvas_drawPoints=(a,b,c,e,f)=>(w._canvas_drawPoints=W.canvas_drawPoints)(a,b,c,e,f);w._canvas_drawAtlas=(a,b,c,e,f,h,l,m,p)=>(w._canvas_drawAtlas=W.canvas_drawAtlas)(a,b,c,e,f,h,l,m,p);w._canvas_getTransform=(a,b)=>(w._canvas_getTransform=W.canvas_getTransform)(a,b);w._canvas_getLocalClipBounds=(a,b)=>(w._canvas_getLocalClipBounds=W.canvas_getLocalClipBounds)(a,b);w._canvas_getDeviceClipBounds=(a,b)=>(w._canvas_getDeviceClipBounds=W.canvas_getDeviceClipBounds)(a,b);
|
||||
w._canvas_quickReject=(a,b)=>(w._canvas_quickReject=W.canvas_quickReject)(a,b);w._contourMeasureIter_create=(a,b,c)=>(w._contourMeasureIter_create=W.contourMeasureIter_create)(a,b,c);w._contourMeasureIter_next=a=>(w._contourMeasureIter_next=W.contourMeasureIter_next)(a);w._contourMeasureIter_dispose=a=>(w._contourMeasureIter_dispose=W.contourMeasureIter_dispose)(a);w._contourMeasure_dispose=a=>(w._contourMeasure_dispose=W.contourMeasure_dispose)(a);
|
||||
w._contourMeasure_length=a=>(w._contourMeasure_length=W.contourMeasure_length)(a);w._contourMeasure_isClosed=a=>(w._contourMeasure_isClosed=W.contourMeasure_isClosed)(a);w._contourMeasure_getPosTan=(a,b,c,e)=>(w._contourMeasure_getPosTan=W.contourMeasure_getPosTan)(a,b,c,e);w._contourMeasure_getSegment=(a,b,c,e)=>(w._contourMeasure_getSegment=W.contourMeasure_getSegment)(a,b,c,e);w._skData_create=a=>(w._skData_create=W.skData_create)(a);w._skData_getPointer=a=>(w._skData_getPointer=W.skData_getPointer)(a);
|
||||
w._skData_getConstPointer=a=>(w._skData_getConstPointer=W.skData_getConstPointer)(a);w._skData_getSize=a=>(w._skData_getSize=W.skData_getSize)(a);w._skData_dispose=a=>(w._skData_dispose=W.skData_dispose)(a);w._imageFilter_createBlur=(a,b,c)=>(w._imageFilter_createBlur=W.imageFilter_createBlur)(a,b,c);w._imageFilter_createDilate=(a,b)=>(w._imageFilter_createDilate=W.imageFilter_createDilate)(a,b);w._imageFilter_createErode=(a,b)=>(w._imageFilter_createErode=W.imageFilter_createErode)(a,b);
|
||||
w._imageFilter_createMatrix=(a,b)=>(w._imageFilter_createMatrix=W.imageFilter_createMatrix)(a,b);w._imageFilter_createFromColorFilter=a=>(w._imageFilter_createFromColorFilter=W.imageFilter_createFromColorFilter)(a);w._imageFilter_compose=(a,b)=>(w._imageFilter_compose=W.imageFilter_compose)(a,b);w._imageFilter_dispose=a=>(w._imageFilter_dispose=W.imageFilter_dispose)(a);w._imageFilter_getFilterBounds=(a,b)=>(w._imageFilter_getFilterBounds=W.imageFilter_getFilterBounds)(a,b);
|
||||
w._colorFilter_createMode=(a,b)=>(w._colorFilter_createMode=W.colorFilter_createMode)(a,b);w._colorFilter_createMatrix=a=>(w._colorFilter_createMatrix=W.colorFilter_createMatrix)(a);w._colorFilter_createSRGBToLinearGamma=()=>(w._colorFilter_createSRGBToLinearGamma=W.colorFilter_createSRGBToLinearGamma)();w._colorFilter_createLinearToSRGBGamma=()=>(w._colorFilter_createLinearToSRGBGamma=W.colorFilter_createLinearToSRGBGamma)();w._colorFilter_dispose=a=>(w._colorFilter_dispose=W.colorFilter_dispose)(a);
|
||||
w._maskFilter_createBlur=(a,b)=>(w._maskFilter_createBlur=W.maskFilter_createBlur)(a,b);w._maskFilter_dispose=a=>(w._maskFilter_dispose=W.maskFilter_dispose)(a);w._fontCollection_create=()=>(w._fontCollection_create=W.fontCollection_create)();w._fontCollection_dispose=a=>(w._fontCollection_dispose=W.fontCollection_dispose)(a);w._typeface_create=a=>(w._typeface_create=W.typeface_create)(a);w._typeface_dispose=a=>(w._typeface_dispose=W.typeface_dispose)(a);
|
||||
w._typefaces_filterCoveredCodePoints=(a,b,c,e)=>(w._typefaces_filterCoveredCodePoints=W.typefaces_filterCoveredCodePoints)(a,b,c,e);w._fontCollection_registerTypeface=(a,b,c)=>(w._fontCollection_registerTypeface=W.fontCollection_registerTypeface)(a,b,c);w._fontCollection_clearCaches=a=>(w._fontCollection_clearCaches=W.fontCollection_clearCaches)(a);w._image_createFromPicture=(a,b,c)=>(w._image_createFromPicture=W.image_createFromPicture)(a,b,c);
|
||||
w._image_createFromPixels=(a,b,c,e,f)=>(w._image_createFromPixels=W.image_createFromPixels)(a,b,c,e,f);w._image_createFromTextureSource=(a,b,c,e)=>(w._image_createFromTextureSource=W.image_createFromTextureSource)(a,b,c,e);w._image_ref=a=>(w._image_ref=W.image_ref)(a);w._image_dispose=a=>(w._image_dispose=W.image_dispose)(a);w._image_getWidth=a=>(w._image_getWidth=W.image_getWidth)(a);w._image_getHeight=a=>(w._image_getHeight=W.image_getHeight)(a);
|
||||
w._skwasm_getLiveObjectCounts=a=>(w._skwasm_getLiveObjectCounts=W.skwasm_getLiveObjectCounts)(a);w._paint_create=(a,b,c,e,f,h,l,m,p)=>(w._paint_create=W.paint_create)(a,b,c,e,f,h,l,m,p);w._paint_dispose=a=>(w._paint_dispose=W.paint_dispose)(a);w._paint_setShader=(a,b)=>(w._paint_setShader=W.paint_setShader)(a,b);w._paint_setImageFilter=(a,b)=>(w._paint_setImageFilter=W.paint_setImageFilter)(a,b);w._paint_setColorFilter=(a,b)=>(w._paint_setColorFilter=W.paint_setColorFilter)(a,b);
|
||||
w._paint_setMaskFilter=(a,b)=>(w._paint_setMaskFilter=W.paint_setMaskFilter)(a,b);w._path_create=()=>(w._path_create=W.path_create)();w._path_dispose=a=>(w._path_dispose=W.path_dispose)(a);w._path_copy=a=>(w._path_copy=W.path_copy)(a);w._path_setFillType=(a,b)=>(w._path_setFillType=W.path_setFillType)(a,b);w._path_getFillType=a=>(w._path_getFillType=W.path_getFillType)(a);w._path_moveTo=(a,b,c)=>(w._path_moveTo=W.path_moveTo)(a,b,c);
|
||||
w._path_relativeMoveTo=(a,b,c)=>(w._path_relativeMoveTo=W.path_relativeMoveTo)(a,b,c);w._path_lineTo=(a,b,c)=>(w._path_lineTo=W.path_lineTo)(a,b,c);w._path_relativeLineTo=(a,b,c)=>(w._path_relativeLineTo=W.path_relativeLineTo)(a,b,c);w._path_quadraticBezierTo=(a,b,c,e,f)=>(w._path_quadraticBezierTo=W.path_quadraticBezierTo)(a,b,c,e,f);w._path_relativeQuadraticBezierTo=(a,b,c,e,f)=>(w._path_relativeQuadraticBezierTo=W.path_relativeQuadraticBezierTo)(a,b,c,e,f);
|
||||
w._path_cubicTo=(a,b,c,e,f,h,l)=>(w._path_cubicTo=W.path_cubicTo)(a,b,c,e,f,h,l);w._path_relativeCubicTo=(a,b,c,e,f,h,l)=>(w._path_relativeCubicTo=W.path_relativeCubicTo)(a,b,c,e,f,h,l);w._path_conicTo=(a,b,c,e,f,h)=>(w._path_conicTo=W.path_conicTo)(a,b,c,e,f,h);w._path_relativeConicTo=(a,b,c,e,f,h)=>(w._path_relativeConicTo=W.path_relativeConicTo)(a,b,c,e,f,h);w._path_arcToOval=(a,b,c,e,f)=>(w._path_arcToOval=W.path_arcToOval)(a,b,c,e,f);
|
||||
w._path_arcToRotated=(a,b,c,e,f,h,l,m)=>(w._path_arcToRotated=W.path_arcToRotated)(a,b,c,e,f,h,l,m);w._path_relativeArcToRotated=(a,b,c,e,f,h,l,m)=>(w._path_relativeArcToRotated=W.path_relativeArcToRotated)(a,b,c,e,f,h,l,m);w._path_addRect=(a,b)=>(w._path_addRect=W.path_addRect)(a,b);w._path_addOval=(a,b)=>(w._path_addOval=W.path_addOval)(a,b);w._path_addArc=(a,b,c,e)=>(w._path_addArc=W.path_addArc)(a,b,c,e);w._path_addPolygon=(a,b,c,e)=>(w._path_addPolygon=W.path_addPolygon)(a,b,c,e);
|
||||
w._path_addRRect=(a,b)=>(w._path_addRRect=W.path_addRRect)(a,b);w._path_addPath=(a,b,c,e)=>(w._path_addPath=W.path_addPath)(a,b,c,e);w._path_close=a=>(w._path_close=W.path_close)(a);w._path_reset=a=>(w._path_reset=W.path_reset)(a);w._path_contains=(a,b,c)=>(w._path_contains=W.path_contains)(a,b,c);w._path_transform=(a,b)=>(w._path_transform=W.path_transform)(a,b);w._path_getBounds=(a,b)=>(w._path_getBounds=W.path_getBounds)(a,b);w._path_combine=(a,b,c)=>(w._path_combine=W.path_combine)(a,b,c);
|
||||
w._path_getSvgString=a=>(w._path_getSvgString=W.path_getSvgString)(a);w._pictureRecorder_create=()=>(w._pictureRecorder_create=W.pictureRecorder_create)();w._pictureRecorder_dispose=a=>(w._pictureRecorder_dispose=W.pictureRecorder_dispose)(a);w._pictureRecorder_beginRecording=(a,b)=>(w._pictureRecorder_beginRecording=W.pictureRecorder_beginRecording)(a,b);w._pictureRecorder_endRecording=a=>(w._pictureRecorder_endRecording=W.pictureRecorder_endRecording)(a);
|
||||
w._picture_getCullRect=(a,b)=>(w._picture_getCullRect=W.picture_getCullRect)(a,b);w._picture_ref=a=>(w._picture_ref=W.picture_ref)(a);w._picture_dispose=a=>(w._picture_dispose=W.picture_dispose)(a);w._picture_approximateBytesUsed=a=>(w._picture_approximateBytesUsed=W.picture_approximateBytesUsed)(a);w._shader_createLinearGradient=(a,b,c,e,f,h)=>(w._shader_createLinearGradient=W.shader_createLinearGradient)(a,b,c,e,f,h);
|
||||
w._shader_createRadialGradient=(a,b,c,e,f,h,l,m)=>(w._shader_createRadialGradient=W.shader_createRadialGradient)(a,b,c,e,f,h,l,m);w._shader_createConicalGradient=(a,b,c,e,f,h,l,m)=>(w._shader_createConicalGradient=W.shader_createConicalGradient)(a,b,c,e,f,h,l,m);w._shader_createSweepGradient=(a,b,c,e,f,h,l,m,p)=>(w._shader_createSweepGradient=W.shader_createSweepGradient)(a,b,c,e,f,h,l,m,p);w._shader_dispose=a=>(w._shader_dispose=W.shader_dispose)(a);
|
||||
w._runtimeEffect_create=a=>(w._runtimeEffect_create=W.runtimeEffect_create)(a);w._runtimeEffect_dispose=a=>(w._runtimeEffect_dispose=W.runtimeEffect_dispose)(a);w._runtimeEffect_getUniformSize=a=>(w._runtimeEffect_getUniformSize=W.runtimeEffect_getUniformSize)(a);w._shader_createRuntimeEffectShader=(a,b,c,e)=>(w._shader_createRuntimeEffectShader=W.shader_createRuntimeEffectShader)(a,b,c,e);w._shader_createFromImage=(a,b,c,e,f)=>(w._shader_createFromImage=W.shader_createFromImage)(a,b,c,e,f);
|
||||
w._uniformData_create=a=>(w._uniformData_create=W.uniformData_create)(a);w._uniformData_dispose=a=>(w._uniformData_dispose=W.uniformData_dispose)(a);w._uniformData_getPointer=a=>(w._uniformData_getPointer=W.uniformData_getPointer)(a);w._skString_allocate=a=>(w._skString_allocate=W.skString_allocate)(a);w._skString_getData=a=>(w._skString_getData=W.skString_getData)(a);w._skString_getLength=a=>(w._skString_getLength=W.skString_getLength)(a);w._skString_free=a=>(w._skString_free=W.skString_free)(a);
|
||||
w._skString16_allocate=a=>(w._skString16_allocate=W.skString16_allocate)(a);w._skString16_getData=a=>(w._skString16_getData=W.skString16_getData)(a);w._skString16_free=a=>(w._skString16_free=W.skString16_free)(a);w._surface_create=()=>(w._surface_create=W.surface_create)();w._surface_setCanvas=(a,b)=>(w._surface_setCanvas=W.surface_setCanvas)(a,b);
|
||||
var pc=w._surface_receiveCanvasOnWorker=(a,b,c)=>(pc=w._surface_receiveCanvasOnWorker=W.surface_receiveCanvasOnWorker)(a,b,c),qc=w._surface_onInitialized=(a,b)=>(qc=w._surface_onInitialized=W.surface_onInitialized)(a,b);w._surface_setSize=(a,b,c)=>(w._surface_setSize=W.surface_setSize)(a,b,c);
|
||||
var rc=w._surface_resizeOnWorker=(a,b,c,e)=>(rc=w._surface_resizeOnWorker=W.surface_resizeOnWorker)(a,b,c,e),sc=w._surface_onResizeComplete=(a,b)=>(sc=w._surface_onResizeComplete=W.surface_onResizeComplete)(a,b);w._surface_getThreadId=a=>(w._surface_getThreadId=W.surface_getThreadId)(a);w._surface_getGlContext=a=>(w._surface_getGlContext=W.surface_getGlContext)(a);w._surface_triggerContextLoss=a=>(w._surface_triggerContextLoss=W.surface_triggerContextLoss)(a);
|
||||
var tc=w._surface_triggerContextLossOnWorker=(a,b)=>(tc=w._surface_triggerContextLossOnWorker=W.surface_triggerContextLossOnWorker)(a,b),uc=w._surface_onContextLossTriggered=(a,b)=>(uc=w._surface_onContextLossTriggered=W.surface_onContextLossTriggered)(a,b),vc=w._surface_reportContextLost=(a,b)=>(vc=w._surface_reportContextLost=W.surface_reportContextLost)(a,b);w._surface_setCallbackHandler=(a,b)=>(w._surface_setCallbackHandler=W.surface_setCallbackHandler)(a,b);
|
||||
w._surface_destroy=a=>(w._surface_destroy=W.surface_destroy)(a);var yc=w._surface_dispose=a=>(yc=w._surface_dispose=W.surface_dispose)(a);w._surface_setResourceCacheLimitBytes=(a,b)=>(w._surface_setResourceCacheLimitBytes=W.surface_setResourceCacheLimitBytes)(a,b);w._surface_renderPictures=(a,b,c)=>(w._surface_renderPictures=W.surface_renderPictures)(a,b,c);var wc=w._surface_renderPicturesOnWorker=(a,b,c,e,f)=>(wc=w._surface_renderPicturesOnWorker=W.surface_renderPicturesOnWorker)(a,b,c,e,f);
|
||||
w._surface_rasterizeImage=(a,b,c)=>(w._surface_rasterizeImage=W.surface_rasterizeImage)(a,b,c);
|
||||
var zc=w._surface_rasterizeImageOnWorker=(a,b,c,e)=>(zc=w._surface_rasterizeImageOnWorker=W.surface_rasterizeImageOnWorker)(a,b,c,e),xc=w._surface_onRenderComplete=(a,b,c)=>(xc=w._surface_onRenderComplete=W.surface_onRenderComplete)(a,b,c),Ac=w._surface_onRasterizeComplete=(a,b,c)=>(Ac=w._surface_onRasterizeComplete=W.surface_onRasterizeComplete)(a,b,c),Bc=w._surface_onContextLost=a=>(Bc=w._surface_onContextLost=W.surface_onContextLost)(a);
|
||||
w._skwasm_isMultiThreaded=()=>(w._skwasm_isMultiThreaded=W.skwasm_isMultiThreaded)();w._lineMetrics_create=(a,b,c,e,f,h,l,m,p)=>(w._lineMetrics_create=W.lineMetrics_create)(a,b,c,e,f,h,l,m,p);w._lineMetrics_dispose=a=>(w._lineMetrics_dispose=W.lineMetrics_dispose)(a);w._lineMetrics_getHardBreak=a=>(w._lineMetrics_getHardBreak=W.lineMetrics_getHardBreak)(a);w._lineMetrics_getAscent=a=>(w._lineMetrics_getAscent=W.lineMetrics_getAscent)(a);w._lineMetrics_getDescent=a=>(w._lineMetrics_getDescent=W.lineMetrics_getDescent)(a);
|
||||
w._lineMetrics_getUnscaledAscent=a=>(w._lineMetrics_getUnscaledAscent=W.lineMetrics_getUnscaledAscent)(a);w._lineMetrics_getHeight=a=>(w._lineMetrics_getHeight=W.lineMetrics_getHeight)(a);w._lineMetrics_getWidth=a=>(w._lineMetrics_getWidth=W.lineMetrics_getWidth)(a);w._lineMetrics_getLeft=a=>(w._lineMetrics_getLeft=W.lineMetrics_getLeft)(a);w._lineMetrics_getBaseline=a=>(w._lineMetrics_getBaseline=W.lineMetrics_getBaseline)(a);w._lineMetrics_getLineNumber=a=>(w._lineMetrics_getLineNumber=W.lineMetrics_getLineNumber)(a);
|
||||
w._lineMetrics_getStartIndex=a=>(w._lineMetrics_getStartIndex=W.lineMetrics_getStartIndex)(a);w._lineMetrics_getEndIndex=a=>(w._lineMetrics_getEndIndex=W.lineMetrics_getEndIndex)(a);w._paragraph_dispose=a=>(w._paragraph_dispose=W.paragraph_dispose)(a);w._paragraph_getWidth=a=>(w._paragraph_getWidth=W.paragraph_getWidth)(a);w._paragraph_getHeight=a=>(w._paragraph_getHeight=W.paragraph_getHeight)(a);w._paragraph_getLongestLine=a=>(w._paragraph_getLongestLine=W.paragraph_getLongestLine)(a);
|
||||
w._paragraph_getMinIntrinsicWidth=a=>(w._paragraph_getMinIntrinsicWidth=W.paragraph_getMinIntrinsicWidth)(a);w._paragraph_getMaxIntrinsicWidth=a=>(w._paragraph_getMaxIntrinsicWidth=W.paragraph_getMaxIntrinsicWidth)(a);w._paragraph_getAlphabeticBaseline=a=>(w._paragraph_getAlphabeticBaseline=W.paragraph_getAlphabeticBaseline)(a);w._paragraph_getIdeographicBaseline=a=>(w._paragraph_getIdeographicBaseline=W.paragraph_getIdeographicBaseline)(a);
|
||||
w._paragraph_getDidExceedMaxLines=a=>(w._paragraph_getDidExceedMaxLines=W.paragraph_getDidExceedMaxLines)(a);w._paragraph_layout=(a,b)=>(w._paragraph_layout=W.paragraph_layout)(a,b);w._paragraph_getPositionForOffset=(a,b,c,e)=>(w._paragraph_getPositionForOffset=W.paragraph_getPositionForOffset)(a,b,c,e);w._paragraph_getClosestGlyphInfoAtCoordinate=(a,b,c,e,f,h)=>(w._paragraph_getClosestGlyphInfoAtCoordinate=W.paragraph_getClosestGlyphInfoAtCoordinate)(a,b,c,e,f,h);
|
||||
w._paragraph_getGlyphInfoAt=(a,b,c,e,f)=>(w._paragraph_getGlyphInfoAt=W.paragraph_getGlyphInfoAt)(a,b,c,e,f);w._paragraph_getWordBoundary=(a,b,c)=>(w._paragraph_getWordBoundary=W.paragraph_getWordBoundary)(a,b,c);w._paragraph_getLineCount=a=>(w._paragraph_getLineCount=W.paragraph_getLineCount)(a);w._paragraph_getLineNumberAt=(a,b)=>(w._paragraph_getLineNumberAt=W.paragraph_getLineNumberAt)(a,b);
|
||||
w._paragraph_getLineMetricsAtIndex=(a,b)=>(w._paragraph_getLineMetricsAtIndex=W.paragraph_getLineMetricsAtIndex)(a,b);w._textBoxList_dispose=a=>(w._textBoxList_dispose=W.textBoxList_dispose)(a);w._textBoxList_getLength=a=>(w._textBoxList_getLength=W.textBoxList_getLength)(a);w._textBoxList_getBoxAtIndex=(a,b,c)=>(w._textBoxList_getBoxAtIndex=W.textBoxList_getBoxAtIndex)(a,b,c);w._paragraph_getBoxesForRange=(a,b,c,e,f)=>(w._paragraph_getBoxesForRange=W.paragraph_getBoxesForRange)(a,b,c,e,f);
|
||||
w._paragraph_getBoxesForPlaceholders=a=>(w._paragraph_getBoxesForPlaceholders=W.paragraph_getBoxesForPlaceholders)(a);w._paragraph_getUnresolvedCodePoints=(a,b,c)=>(w._paragraph_getUnresolvedCodePoints=W.paragraph_getUnresolvedCodePoints)(a,b,c);w._paragraphBuilder_dispose=a=>(w._paragraphBuilder_dispose=W.paragraphBuilder_dispose)(a);w._paragraphBuilder_addPlaceholder=(a,b,c,e,f,h)=>(w._paragraphBuilder_addPlaceholder=W.paragraphBuilder_addPlaceholder)(a,b,c,e,f,h);
|
||||
w._paragraphBuilder_addText=(a,b)=>(w._paragraphBuilder_addText=W.paragraphBuilder_addText)(a,b);w._paragraphBuilder_getUtf8Text=(a,b)=>(w._paragraphBuilder_getUtf8Text=W.paragraphBuilder_getUtf8Text)(a,b);w._paragraphBuilder_pushStyle=(a,b)=>(w._paragraphBuilder_pushStyle=W.paragraphBuilder_pushStyle)(a,b);w._paragraphBuilder_pop=a=>(w._paragraphBuilder_pop=W.paragraphBuilder_pop)(a);w._unicodePositionBuffer_create=a=>(w._unicodePositionBuffer_create=W.unicodePositionBuffer_create)(a);
|
||||
w._unicodePositionBuffer_getDataPointer=a=>(w._unicodePositionBuffer_getDataPointer=W.unicodePositionBuffer_getDataPointer)(a);w._unicodePositionBuffer_free=a=>(w._unicodePositionBuffer_free=W.unicodePositionBuffer_free)(a);w._lineBreakBuffer_create=a=>(w._lineBreakBuffer_create=W.lineBreakBuffer_create)(a);w._lineBreakBuffer_getDataPointer=a=>(w._lineBreakBuffer_getDataPointer=W.lineBreakBuffer_getDataPointer)(a);w._lineBreakBuffer_free=a=>(w._lineBreakBuffer_free=W.lineBreakBuffer_free)(a);
|
||||
w._paragraphStyle_create=()=>(w._paragraphStyle_create=W.paragraphStyle_create)();w._paragraphStyle_dispose=a=>(w._paragraphStyle_dispose=W.paragraphStyle_dispose)(a);w._paragraphStyle_setTextAlign=(a,b)=>(w._paragraphStyle_setTextAlign=W.paragraphStyle_setTextAlign)(a,b);w._paragraphStyle_setTextDirection=(a,b)=>(w._paragraphStyle_setTextDirection=W.paragraphStyle_setTextDirection)(a,b);w._paragraphStyle_setMaxLines=(a,b)=>(w._paragraphStyle_setMaxLines=W.paragraphStyle_setMaxLines)(a,b);
|
||||
w._paragraphStyle_setHeight=(a,b)=>(w._paragraphStyle_setHeight=W.paragraphStyle_setHeight)(a,b);w._paragraphStyle_setTextHeightBehavior=(a,b,c)=>(w._paragraphStyle_setTextHeightBehavior=W.paragraphStyle_setTextHeightBehavior)(a,b,c);w._paragraphStyle_setEllipsis=(a,b)=>(w._paragraphStyle_setEllipsis=W.paragraphStyle_setEllipsis)(a,b);w._paragraphStyle_setStrutStyle=(a,b)=>(w._paragraphStyle_setStrutStyle=W.paragraphStyle_setStrutStyle)(a,b);
|
||||
w._paragraphStyle_setTextStyle=(a,b)=>(w._paragraphStyle_setTextStyle=W.paragraphStyle_setTextStyle)(a,b);w._paragraphStyle_setApplyRoundingHack=(a,b)=>(w._paragraphStyle_setApplyRoundingHack=W.paragraphStyle_setApplyRoundingHack)(a,b);w._strutStyle_create=()=>(w._strutStyle_create=W.strutStyle_create)();w._strutStyle_dispose=a=>(w._strutStyle_dispose=W.strutStyle_dispose)(a);w._strutStyle_setFontFamilies=(a,b,c)=>(w._strutStyle_setFontFamilies=W.strutStyle_setFontFamilies)(a,b,c);
|
||||
w._strutStyle_setFontSize=(a,b)=>(w._strutStyle_setFontSize=W.strutStyle_setFontSize)(a,b);w._strutStyle_setHeight=(a,b)=>(w._strutStyle_setHeight=W.strutStyle_setHeight)(a,b);w._strutStyle_setHalfLeading=(a,b)=>(w._strutStyle_setHalfLeading=W.strutStyle_setHalfLeading)(a,b);w._strutStyle_setLeading=(a,b)=>(w._strutStyle_setLeading=W.strutStyle_setLeading)(a,b);w._strutStyle_setFontStyle=(a,b,c)=>(w._strutStyle_setFontStyle=W.strutStyle_setFontStyle)(a,b,c);
|
||||
w._strutStyle_setForceStrutHeight=(a,b)=>(w._strutStyle_setForceStrutHeight=W.strutStyle_setForceStrutHeight)(a,b);w._textStyle_create=()=>(w._textStyle_create=W.textStyle_create)();w._textStyle_copy=a=>(w._textStyle_copy=W.textStyle_copy)(a);w._textStyle_dispose=a=>(w._textStyle_dispose=W.textStyle_dispose)(a);w._textStyle_setColor=(a,b)=>(w._textStyle_setColor=W.textStyle_setColor)(a,b);w._textStyle_setDecoration=(a,b)=>(w._textStyle_setDecoration=W.textStyle_setDecoration)(a,b);
|
||||
w._textStyle_setDecorationColor=(a,b)=>(w._textStyle_setDecorationColor=W.textStyle_setDecorationColor)(a,b);w._textStyle_setDecorationStyle=(a,b)=>(w._textStyle_setDecorationStyle=W.textStyle_setDecorationStyle)(a,b);w._textStyle_setDecorationThickness=(a,b)=>(w._textStyle_setDecorationThickness=W.textStyle_setDecorationThickness)(a,b);w._textStyle_setFontStyle=(a,b,c)=>(w._textStyle_setFontStyle=W.textStyle_setFontStyle)(a,b,c);
|
||||
w._textStyle_setTextBaseline=(a,b)=>(w._textStyle_setTextBaseline=W.textStyle_setTextBaseline)(a,b);w._textStyle_clearFontFamilies=a=>(w._textStyle_clearFontFamilies=W.textStyle_clearFontFamilies)(a);w._textStyle_addFontFamilies=(a,b,c)=>(w._textStyle_addFontFamilies=W.textStyle_addFontFamilies)(a,b,c);w._textStyle_setFontSize=(a,b)=>(w._textStyle_setFontSize=W.textStyle_setFontSize)(a,b);w._textStyle_setLetterSpacing=(a,b)=>(w._textStyle_setLetterSpacing=W.textStyle_setLetterSpacing)(a,b);
|
||||
w._textStyle_setWordSpacing=(a,b)=>(w._textStyle_setWordSpacing=W.textStyle_setWordSpacing)(a,b);w._textStyle_setHeight=(a,b)=>(w._textStyle_setHeight=W.textStyle_setHeight)(a,b);w._textStyle_setHalfLeading=(a,b)=>(w._textStyle_setHalfLeading=W.textStyle_setHalfLeading)(a,b);w._textStyle_setLocale=(a,b)=>(w._textStyle_setLocale=W.textStyle_setLocale)(a,b);w._textStyle_setBackground=(a,b)=>(w._textStyle_setBackground=W.textStyle_setBackground)(a,b);
|
||||
w._textStyle_setForeground=(a,b)=>(w._textStyle_setForeground=W.textStyle_setForeground)(a,b);w._textStyle_addShadow=(a,b,c,e,f)=>(w._textStyle_addShadow=W.textStyle_addShadow)(a,b,c,e,f);w._textStyle_addFontFeature=(a,b,c)=>(w._textStyle_addFontFeature=W.textStyle_addFontFeature)(a,b,c);w._textStyle_setFontVariations=(a,b,c,e)=>(w._textStyle_setFontVariations=W.textStyle_setFontVariations)(a,b,c,e);w._vertices_create=(a,b,c,e,f,h,l)=>(w._vertices_create=W.vertices_create)(a,b,c,e,f,h,l);
|
||||
w._vertices_dispose=a=>(w._vertices_dispose=W.vertices_dispose)(a);w._animatedImage_create=(a,b,c)=>(w._animatedImage_create=W.animatedImage_create)(a,b,c);w._animatedImage_dispose=a=>(w._animatedImage_dispose=W.animatedImage_dispose)(a);w._animatedImage_getFrameCount=a=>(w._animatedImage_getFrameCount=W.animatedImage_getFrameCount)(a);w._animatedImage_getRepetitionCount=a=>(w._animatedImage_getRepetitionCount=W.animatedImage_getRepetitionCount)(a);
|
||||
w._animatedImage_getCurrentFrameDurationMilliseconds=a=>(w._animatedImage_getCurrentFrameDurationMilliseconds=W.animatedImage_getCurrentFrameDurationMilliseconds)(a);w._animatedImage_decodeNextFrame=a=>(w._animatedImage_decodeNextFrame=W.animatedImage_decodeNextFrame)(a);w._animatedImage_getCurrentFrame=a=>(w._animatedImage_getCurrentFrame=W.animatedImage_getCurrentFrame)(a);w._skwasm_isHeavy=()=>(w._skwasm_isHeavy=W.skwasm_isHeavy)();
|
||||
w._paragraphBuilder_create=(a,b)=>(w._paragraphBuilder_create=W.paragraphBuilder_create)(a,b);w._paragraphBuilder_build=a=>(w._paragraphBuilder_build=W.paragraphBuilder_build)(a);w._paragraphBuilder_setGraphemeBreaksUtf16=(a,b)=>(w._paragraphBuilder_setGraphemeBreaksUtf16=W.paragraphBuilder_setGraphemeBreaksUtf16)(a,b);w._paragraphBuilder_setWordBreaksUtf16=(a,b)=>(w._paragraphBuilder_setWordBreaksUtf16=W.paragraphBuilder_setWordBreaksUtf16)(a,b);
|
||||
w._paragraphBuilder_setLineBreaksUtf16=(a,b)=>(w._paragraphBuilder_setLineBreaksUtf16=W.paragraphBuilder_setLineBreaksUtf16)(a,b);w._skwasm_isWimp=()=>(w._skwasm_isWimp=W.skwasm_isWimp)();var Ab=a=>(Ab=W.malloc)(a),Cc=(a,b)=>(Cc=W._emscripten_timeout)(a,b),X=(a,b)=>(X=W.setThrew)(a,b),Y=a=>(Y=W._emscripten_stack_restore)(a),lc=a=>(lc=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)(),Aa=(a,b)=>(Aa=W._emscripten_wasm_worker_initialize)(a,b);
|
||||
function Ec(a,b,c){var e=Z();try{return B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Jc(a,b,c){var e=Z();try{B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Dc(a,b){var c=Z();try{return B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Kc(a,b,c,e){var f=Z();try{B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Fc(a,b,c,e){var f=Z();try{return B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}
|
||||
function Gc(a,b,c,e,f){var h=Z();try{return B.get(a)(b,c,e,f)}catch(l){Y(h);if(l!==l+0)throw l;X(1,0)}}function Lc(a,b,c,e,f,h,l,m){var p=Z();try{B.get(a)(b,c,e,f,h,l,m)}catch(v){Y(p);if(v!==v+0)throw v;X(1,0)}}function Ic(a,b){var c=Z();try{B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Hc(a,b,c,e,f,h,l){var m=Z();try{return B.get(a)(b,c,e,f,h,l)}catch(p){Y(m);if(p!==p+0)throw p;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=mc;
|
||||
w.addFunction=(a,b)=>{if(!T){T=new WeakMap;var c=B.length;if(T)for(var e=0;e<0+c;e++){var f=B.get(e);f&&T.set(f,e)}}if(c=T.get(a)||0)return c;if(kc.length)c=kc.pop();else{try{B.grow(1)}catch(m){if(!(m instanceof RangeError))throw m;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}c=B.length-1}try{B.set(c,a)}catch(m){if(!(m instanceof TypeError))throw m;if("function"==typeof WebAssembly.Function){e=WebAssembly.Function;f={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"};for(var h={parameters:[],
|
||||
results:"v"==b[0]?[]:[f[b[0]]]},l=1;l<b.length;++l)h.parameters.push(f[b[l]]);b=new e(h,a)}else{e=[1];f=b.slice(0,1);b=b.slice(1);h={i:127,p:127,j:126,f:125,d:124,e:111};e.push(96);l=b.length;128>l?e.push(l):e.push(l%128|128,l>>7);for(l=0;l<b.length;++l)e.push(h[b[l]]);"v"==f?e.push(0):e.push(1,h[f]);b=[0,97,115,109,1,0,0,0,1];f=e.length;128>f?b.push(f):b.push(f%128|128,f>>7);b.push(...e);b.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);b=new WebAssembly.Module(new Uint8Array(b));b=(new WebAssembly.Instance(b,
|
||||
{e:{f:a}})).exports.f}B.set(c,b)}T.set(a,c);return c};var Nc,Oc;A=function Pc(){Nc||Qc();Nc||(A=Pc)};function Qc(){if(!(0<z))if(ka)ea(w),ya();else{if(!Oc&&(Oc=1,Ea(va),0<z))return;Nc||(Nc=1,w.calledRun=1,ra||(ya(),ea(w),Ea(xa)))}}Qc();moduleRtn=ha;
|
||||
|
||||
|
||||
return moduleRtn;
|
||||
}
|
||||
);
|
||||
})();
|
||||
export default skwasm;
|
||||
|
|
@ -1,146 +0,0 @@
|
|||
|
||||
var skwasm_heavy = (() => {
|
||||
var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
|
||||
|
||||
return (
|
||||
function(moduleArg = {}) {
|
||||
var moduleRtn;
|
||||
|
||||
function d(){g.buffer!=k.buffer&&n();return k}function q(){g.buffer!=k.buffer&&n();return aa}function r(){g.buffer!=k.buffer&&n();return ba}function t(){g.buffer!=k.buffer&&n();return ca}function u(){g.buffer!=k.buffer&&n();return da}var w=moduleArg,ea,fa,ha=new Promise((a,b)=>{ea=a;fa=b}),ia="object"==typeof window,ja="function"==typeof importScripts,ka=w.$ww,la=Object.assign({},w),x="";function ma(a){return w.locateFile?w.locateFile(a,x):x+a}var na,oa;
|
||||
if(ia||ja)ja?x=self.location.href:"undefined"!=typeof document&&document.currentScript&&(x=document.currentScript.src),_scriptName&&(x=_scriptName),x.startsWith("blob:")?x="":x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1),ja&&(oa=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),na=a=>fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));
|
||||
var pa=console.log.bind(console),y=console.error.bind(console);Object.assign(w,la);la=null;var g,qa,ra=!1,sa,k,aa,ta,ua,ba,ca,da;function n(){var a=g.buffer;k=new Int8Array(a);ta=new Int16Array(a);aa=new Uint8Array(a);ua=new Uint16Array(a);ba=new Int32Array(a);ca=new Uint32Array(a);da=new Float32Array(a);new Float64Array(a)}w.wasmMemory?g=w.wasmMemory:g=new WebAssembly.Memory({initial:256,maximum:32768,shared:!0});n();var va=[],wa=[],xa=[];
|
||||
function ya(){ka?(za=1,Aa(w.sb,w.sz),removeEventListener("message",Ba),Ca=Ca.forEach(Da),addEventListener("message",Da)):Ea(wa)}var z=0,Fa=null,A=null;function Ga(a){a="Aborted("+a+")";y(a);ra=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");fa(a);throw a;}var Ha=a=>a.startsWith("data:application/octet-stream;base64,"),Ia;
|
||||
function Ja(a){return na(a).then(b=>new Uint8Array(b),()=>{if(oa)var b=oa(a);else throw"both async and sync fetching of the wasm failed";return b})}function Ka(a,b,c){return Ja(a).then(e=>WebAssembly.instantiate(e,b)).then(c,e=>{y(`failed to asynchronously prepare wasm: ${e}`);Ga(e)})}
|
||||
function La(a,b){var c=Ia;return"function"!=typeof WebAssembly.instantiateStreaming||Ha(c)||"function"!=typeof fetch?Ka(c,a,b):fetch(c,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,a).then(b,function(f){y(`wasm streaming compile failed: ${f}`);y("falling back to ArrayBuffer instantiation");return Ka(c,a,b)}))}function Ma(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a}
|
||||
var Ca=[],Na=a=>{if(!(a instanceof Ma||"unwind"==a))throw a;},Oa=0,Pa=a=>{sa=a;za||0<Oa||(ra=!0);throw new Ma(a);},Qa=a=>{if(!ra)try{if(a(),!(za||0<Oa))try{sa=a=sa,Pa(a)}catch(b){Na(b)}}catch(b){Na(b)}},B,Da=a=>{let b=a.data,c=b._wsc;c&&Qa(()=>B.get(c)(...b.x))},Ba=a=>{Ca.push(a)},Ea=a=>{a.forEach(b=>b(w))},za=w.noExitRuntime||!0;class Ra{constructor(a){this.u=a-24}}
|
||||
var Sa=0,Ta=0,Ua="undefined"!=typeof TextDecoder?new TextDecoder:void 0,Va=(a,b=0,c=NaN)=>{var e=b+c;for(c=b;a[c]&&!(c>=e);)++c;if(16<c-b&&a.buffer&&Ua)return Ua.decode(a.slice(b,c));for(e="";b<c;){var f=a[b++];if(f&128){var h=a[b++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|h);else{var l=a[b++]&63;f=224==(f&240)?(f&15)<<12|h<<6|l:(f&7)<<18|h<<12|l<<6|a[b++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e},
|
||||
Wa=(a,b)=>a?Va(q(),a,b):"",C={},Xa=1,Ya={},D=(a,b,c)=>{var e=q();if(0<c){var f=b;c=b+c-1;for(var h=0;h<a.length;++h){var l=a.charCodeAt(h);if(55296<=l&&57343>=l){var m=a.charCodeAt(++h);l=65536+((l&1023)<<10)|m&1023}if(127>=l){if(b>=c)break;e[b++]=l}else{if(2047>=l){if(b+1>=c)break;e[b++]=192|l>>6}else{if(65535>=l){if(b+2>=c)break;e[b++]=224|l>>12}else{if(b+3>=c)break;e[b++]=240|l>>18;e[b++]=128|l>>12&63}e[b++]=128|l>>6&63}e[b++]=128|l&63}}e[b]=0;a=b-f}else a=0;return a},E,Za=a=>{var b=a.getExtension("ANGLE_instanced_arrays");
|
||||
b&&(a.vertexAttribDivisor=(c,e)=>b.vertexAttribDivisorANGLE(c,e),a.drawArraysInstanced=(c,e,f,h)=>b.drawArraysInstancedANGLE(c,e,f,h),a.drawElementsInstanced=(c,e,f,h,l)=>b.drawElementsInstancedANGLE(c,e,f,h,l))},$a=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c),a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},ab=a=>{var b=a.getExtension("WEBGL_draw_buffers");
|
||||
b&&(a.drawBuffers=(c,e)=>b.drawBuffersWEBGL(c,e))},bb=a=>{a.H=a.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},cb=a=>{a.K=a.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},db=a=>{var b="ANGLE_instanced_arrays EXT_blend_minmax EXT_disjoint_timer_query EXT_frag_depth EXT_shader_texture_lod EXT_sRGB OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_depth_texture WEBGL_draw_buffers EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
|
||||
return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},eb=1,fb=[],F=[],gb=[],hb=[],G=[],H=[],ib=[],I=[],J=[],K=[],L=[],jb={},kb={},lb=4,mb=0,M=a=>{for(var b=eb++,c=a.length;c<b;c++)a[c]=null;return b},O=(a,b,c,e)=>{for(var f=0;f<a;f++){var h=E[c](),l=h&&M(e);h?(h.name=l,e[l]=h):N||=1282;r()[b+4*f>>2]=l}},ob=a=>{var b={J:2,alpha:!0,depth:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default",failIfMajorPerformanceCaveat:!1,I:!0};a.u||(a.u=a.getContext,
|
||||
a.getContext=function(e,f){f=a.u(e,f);return"webgl"==e==f instanceof WebGLRenderingContext?f:null});var c=1<b.J?a.getContext("webgl2",b):a.getContext("webgl",b);return c?nb(c,b):0},nb=(a,b)=>{var c=M(I),e={handle:c,attributes:b,version:b.J,o:a};a.canvas&&(a.canvas.N=e);I[c]=e;("undefined"==typeof b.I||b.I)&&pb(e);return c},pb=a=>{a||=P;if(!a.T){a.T=!0;var b=a.o;b.U=b.getExtension("WEBGL_multi_draw");b.R=b.getExtension("EXT_polygon_offset_clamp");b.P=b.getExtension("EXT_clip_control");b.Z=b.getExtension("WEBGL_polygon_mode");
|
||||
Za(b);$a(b);ab(b);bb(b);cb(b);2<=a.version&&(b.m=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.m)b.m=b.getExtension("EXT_disjoint_timer_query");db(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},N,P,qb=a=>{E.bindVertexArray(ib[a])},rb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=G[e];f&&(E.deleteTexture(f),f.name=0,G[e]=null)}},sb=(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2];E.deleteVertexArray(ib[e]);ib[e]=null}},tb=[],ub=(a,
|
||||
b)=>{O(a,b,"createVertexArray",ib)},vb=(a,b)=>{t()[a>>2]=b;var c=t()[a>>2];t()[a+4>>2]=(b-c)/4294967296};function wb(){var a=db(E);return a=a.concat(a.map(b=>"GL_"+b))}
|
||||
var xb=(a,b,c)=>{if(b){var e=void 0;switch(a){case 36346:e=1;break;case 36344:0!=c&&1!=c&&(N||=1280);return;case 34814:case 36345:e=0;break;case 34466:var f=E.getParameter(34467);e=f?f.length:0;break;case 33309:if(2>P.version){N||=1282;return}e=wb().length;break;case 33307:case 33308:if(2>P.version){N||=1280;return}e=33307==a?3:0}if(void 0===e)switch(f=E.getParameter(a),typeof f){case "number":e=f;break;case "boolean":e=f?1:0;break;case "string":N||=1280;return;case "object":if(null===f)switch(a){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:e=
|
||||
0;break;default:N||=1280;return}else{if(f instanceof Float32Array||f instanceof Uint32Array||f instanceof Int32Array||f instanceof Array){for(a=0;a<f.length;++a)switch(c){case 0:r()[b+4*a>>2]=f[a];break;case 2:u()[b+4*a>>2]=f[a];break;case 4:d()[b+a]=f[a]?1:0}return}try{e=f.name|0}catch(h){N||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Unknown object returned from WebGL getParameter(${a})! (error: ${h})`);return}}break;default:N||=1280;y(`GL_INVALID_ENUM in glGet${c}v: Native code calling glGet${c}v(${a}) and it returns ${f} of type ${typeof f}!`);
|
||||
return}switch(c){case 1:vb(b,e);break;case 0:r()[b>>2]=e;break;case 2:u()[b>>2]=e;break;case 4:d()[b]=e?1:0}}else N||=1281},yb=(a,b)=>xb(a,b,0),zb=(a,b,c)=>{if(c){a=J[a];b=2>P.version?E.m.getQueryObjectEXT(a,b):E.getQueryParameter(a,b);var e;"boolean"==typeof b?e=b?1:0:e=b;vb(c,e)}else N||=1281},Bb=a=>{for(var b=0,c=0;c<a.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296<=e&&57343>=e?(b+=4,++c):b+=3}b+=1;(c=Ab(b))&&D(a,c,b);return c},Cb=a=>{var b=jb[a];if(!b){switch(a){case 7939:b=Bb(wb().join(" "));
|
||||
break;case 7936:case 7937:case 37445:case 37446:(b=E.getParameter(a))||(N||=1280);b=b?Bb(b):0;break;case 7938:b=E.getParameter(7938);var c=`OpenGL ES 2.0 (${b})`;2<=P.version&&(c=`OpenGL ES 3.0 (${b})`);b=Bb(c);break;case 35724:b=E.getParameter(35724);c=b.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==c&&(3==c[1].length&&(c[1]+="0"),b=`OpenGL ES GLSL ES ${c[1]} (${b})`);b=Bb(b);break;default:N||=1280}jb[a]=b}return b},Db=(a,b)=>{if(2>P.version)return N||=1282,0;var c=kb[a];if(c)return 0>
|
||||
b||b>=c.length?(N||=1281,0):c[b];switch(a){case 7939:return c=wb().map(Bb),c=kb[a]=c,0>b||b>=c.length?(N||=1281,0):c[b];default:return N||=1280,0}},Eb=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),Fb=a=>{a-=5120;0==a?a=d():1==a?a=q():2==a?(g.buffer!=k.buffer&&n(),a=ta):4==a?a=r():6==a?a=u():5==a||28922==a||28520==a||30779==a||30782==a?a=t():(g.buffer!=k.buffer&&n(),a=ua);return a},Gb=(a,b,c,e,f)=>{a=Fb(a);b=e*((mb||c)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[b-6402]||1)*a.BYTES_PER_ELEMENT+
|
||||
lb-1&-lb);return a.subarray(f>>>31-Math.clz32(a.BYTES_PER_ELEMENT),f+b>>>31-Math.clz32(a.BYTES_PER_ELEMENT))},Q=a=>{var b=E.O;if(b){var c=b.v[a];"number"==typeof c&&(b.v[a]=c=E.getUniformLocation(b,b.L[a]+(0<c?`[${c}]`:"")));return c}N||=1282},R=[],Hb=[],Ib={},Kb=()=>{if(!Jb){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"},b;for(b in Ib)void 0===
|
||||
Ib[b]?delete a[b]:a[b]=Ib[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Jb=c}return Jb},Jb,Lb=[null,[],[]];function Mb(){}function Nb(){}function Ob(){}function Pb(){}function Qb(){}function Rb(){}function Sb(){}function Tb(){}function Ub(){}function Vb(){}function Wb(){}function Xb(){}function Yb(){}function Zb(){}function $b(){}function ac(){}function bc(){}function cc(){}function dc(){}function ec(){}function fc(){}function gc(){}function hc(){}function S(){}function ic(){}function jc(){}
|
||||
var T,kc=[],mc=a=>lc(a);w.stackAlloc=mc;ka&&(C[0]=this,addEventListener("message",Ba));for(var V=0;32>V;++V)tb.push(Array(V));var nc=new Float32Array(288);for(V=0;288>=V;++V)R[V]=nc.subarray(0,V);var oc=new Int32Array(288);for(V=0;288>=V;++V)Hb[V]=oc.subarray(0,V);
|
||||
(function(){if(w.skwasmSingleThreaded){ac=function(){return!0};let e;Nb=function(f,h){e=h};Ob=function(){return performance.now()};S=function(f){queueMicrotask(()=>e(f))}}else{ac=function(){return!1};let e=0;Nb=function(f,h){function l({data:m}){const p=m.l;p&&("syncTimeOrigin"==p?e=performance.timeOrigin-m.timeOrigin:h(m))}f?(C[f].addEventListener("message",l),C[f].postMessage({l:"syncTimeOrigin",timeOrigin:performance.timeOrigin})):addEventListener("message",l)};Ob=function(){return performance.now()+
|
||||
e};S=function(f,h,l){l?C[l].postMessage(f,{transfer:h}):postMessage(f,{transfer:h})}}const a=new Map,b=new Map,c=new Map;Pb=function(e){Nb(e,function(f){var h=f.l;if(h)switch(h){case "transferCanvas":pc(f.g,f.canvas,f.h);break;case "onInitialized":qc(f.g,f.h);break;case "resizeSurface":rc(f.g,f.width,f.height,f.h);break;case "onResizeComplete":sc(f.g,f.h);break;case "triggerContextLoss":tc(f.g,f.h);break;case "onContextLossTriggered":uc(f.g,f.h);break;case "reportContextLost":vc(f.g,f.h);break;case "renderPictures":wc(f.g,
|
||||
f.W,f.V,f.h,Ob());break;case "onRenderComplete":xc(f.g,f.h,{imageBitmaps:f.S,rasterStartMilliseconds:f.Y,rasterEndMilliseconds:f.X});break;case "setAssociatedObject":c.set(f.F,f.object);break;case "disposeAssociatedObject":f=f.F;h=c.get(f);h.close&&h.close();c.delete(f);break;case "disposeSurface":yc(f.g);break;case "rasterizeImage":zc(f.g,f.image,f.format,f.h);break;case "onRasterizeComplete":Ac(f.g,f.data,f.h);break;default:console.warn(`unrecognized skwasm message: ${h}`)}})};ic=function(e,f,h){S({l:"setAssociatedObject",
|
||||
F:f,object:h},[h],e)};Zb=function(e){return c.get(e)};Yb=function(e,f){S({l:"disposeAssociatedObject",F:f},[],e)};Sb=function(e,f){S({l:"disposeSurface",g:f},[],e)};Wb=function(e,f,h,l){S({l:"transferCanvas",g:f,canvas:h,h:l},[h],e)};ec=function(e,f,h){S({l:"onInitialized",g:e,$:f,h},[])};Vb=function(e,f,h,l,m){S({l:"resizeSurface",g:f,width:h,height:l,h:m},[],e)};fc=function(e,f){S({l:"onResizeComplete",g:e,h:f},[])};gc=function(e,f,h){e=b.get(e);e.width=f;e.height=h};Ub=function(e,f,h,l,m){S({l:"renderPictures",
|
||||
g:f,W:h,V:l,h:m},[],e)};hc=async function(e,f,h,l){f||=[];S({l:"onRenderComplete",g:e,h:l,S:f,Y:h,X:Ob()},[...f])};Mb=function(e,f){f||=[];e=b.get(e);f.push(e.transferToImageBitmap());return f};Tb=function(e,f,h,l,m){S({l:"rasterizeImage",g:f,image:h,format:l,h:m},[],e)};bc=function(e,f,h){S({l:"onRasterizeComplete",g:e,data:f,h})};Xb=function(e,f,h){S({l:"triggerContextLoss",g:f,h},[],e)};cc=function(e,f){S({l:"onContextLossTriggered",g:e,h:f},[])};dc=function(e,f){S({l:"reportContextLost",g:e,h:f},
|
||||
[])};jc=function(){P.o.getExtension("WEBGL_lose_context").loseContext()};$b=function(e,f){const h=ob(e);b.set(h,e);var l=function(m){m.preventDefault();Bc(f);e.removeEventListener("webglcontextlost",l)};e.addEventListener("webglcontextlost",l);a.set(h,l);return h};Rb=function(e){const f=b.get(e),h=a.get(e);f&&h&&f.removeEventListener("webglcontextlost",h);P===I[e]&&(P=null);"object"==typeof JSEvents&&JSEvents.ba(I[e].o.canvas);I[e]&&I[e].o.canvas&&(I[e].o.canvas.N=void 0);I[e]=null;b.delete(e);a.delete(e)};
|
||||
Qb=function(e,f,h){const l=P.o,m=l.createTexture();l.bindTexture(l.TEXTURE_2D,m);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0);l.texImage2D(l.TEXTURE_2D,0,l.RGBA,f,h,0,l.RGBA,l.UNSIGNED_BYTE,e);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1);l.bindTexture(l.TEXTURE_2D,null);e=M(G);G[e]=m;return e}})();
|
||||
var Mc={__cxa_throw:(a,b,c)=>{var e=new Ra(a);t()[e.u+16>>2]=0;t()[e.u+4>>2]=b;t()[e.u+8>>2]=c;Sa=a;Ta++;throw Sa;},__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{},__syscall_ioctl:function(){return 0},__syscall_lstat64:()=>{},__syscall_newfstatat:()=>{},__syscall_openat:function(){},__syscall_stat64:()=>{},_abort_js:()=>{Ga("")},_emscripten_create_wasm_worker:(a,b)=>{let c=C[Xa]=new Worker(ma("skwasm_heavy.ww.js"));c.postMessage({$ww:Xa,wasm:qa,js:w.mainScriptUrlOrBlob||_scriptName,
|
||||
wasmMemory:g,sb:a,sz:b});c.onmessage=Da;return Xa++},_emscripten_get_now_is_monotonic:()=>1,_emscripten_runtime_keepalive_clear:()=>{za=!1;Oa=0},_emscripten_throw_longjmp:()=>{throw Infinity;},_mmap_js:function(){return-52},_munmap_js:function(){},_setitimer_js:(a,b)=>{Ya[a]&&(clearTimeout(Ya[a].id),delete Ya[a]);if(!b)return 0;var c=setTimeout(()=>{delete Ya[a];Qa(()=>Cc(a,performance.now()))},b);Ya[a]={id:c,ca:b};return 0},_tzset_js:(a,b,c,e)=>{var f=(new Date).getFullYear(),h=(new Date(f,0,1)).getTimezoneOffset();
|
||||
f=(new Date(f,6,1)).getTimezoneOffset();var l=Math.max(h,f);t()[a>>2]=60*l;r()[b>>2]=Number(h!=f);b=m=>{var p=Math.abs(m);return`UTC${0<=m?"-":"+"}${String(Math.floor(p/60)).padStart(2,"0")}${String(p%60).padStart(2,"0")}`};a=b(h);b=b(f);f<h?(D(a,c,17),D(b,e,17)):(D(a,e,17),D(b,c,17))},emscripten_console_warn:a=>{console.warn(Wa(a))},emscripten_get_now:()=>performance.now(),emscripten_glActiveTexture:a=>E.activeTexture(a),emscripten_glAttachShader:(a,b)=>{E.attachShader(F[a],H[b])},emscripten_glBeginQuery:(a,
|
||||
b)=>{E.beginQuery(a,J[b])},emscripten_glBeginQueryEXT:(a,b)=>{E.m.beginQueryEXT(a,J[b])},emscripten_glBindAttribLocation:(a,b,c)=>{E.bindAttribLocation(F[a],b,Wa(c))},emscripten_glBindBuffer:(a,b)=>{35051==a?E.D=b:35052==a&&(E.s=b);E.bindBuffer(a,fb[b])},emscripten_glBindFramebuffer:(a,b)=>{E.bindFramebuffer(a,gb[b])},emscripten_glBindRenderbuffer:(a,b)=>{E.bindRenderbuffer(a,hb[b])},emscripten_glBindSampler:(a,b)=>{E.bindSampler(a,K[b])},emscripten_glBindTexture:(a,b)=>{E.bindTexture(a,G[b])},emscripten_glBindVertexArray:qb,
|
||||
emscripten_glBindVertexArrayOES:qb,emscripten_glBlendColor:(a,b,c,e)=>E.blendColor(a,b,c,e),emscripten_glBlendEquation:a=>E.blendEquation(a),emscripten_glBlendFunc:(a,b)=>E.blendFunc(a,b),emscripten_glBlitFramebuffer:(a,b,c,e,f,h,l,m,p,v)=>E.blitFramebuffer(a,b,c,e,f,h,l,m,p,v),emscripten_glBufferData:(a,b,c,e)=>{2<=P.version?c&&b?E.bufferData(a,q(),e,c,b):E.bufferData(a,b,e):E.bufferData(a,c?q().subarray(c,c+b):b,e)},emscripten_glBufferSubData:(a,b,c,e)=>{2<=P.version?c&&E.bufferSubData(a,b,q(),
|
||||
e,c):E.bufferSubData(a,b,q().subarray(e,e+c))},emscripten_glCheckFramebufferStatus:a=>E.checkFramebufferStatus(a),emscripten_glClear:a=>E.clear(a),emscripten_glClearColor:(a,b,c,e)=>E.clearColor(a,b,c,e),emscripten_glClearStencil:a=>E.clearStencil(a),emscripten_glClientWaitSync:(a,b,c,e)=>E.clientWaitSync(L[a],b,(c>>>0)+4294967296*e),emscripten_glColorMask:(a,b,c,e)=>{E.colorMask(!!a,!!b,!!c,!!e)},emscripten_glCompileShader:a=>{E.compileShader(H[a])},emscripten_glCompressedTexImage2D:(a,b,c,e,f,h,
|
||||
l,m)=>{2<=P.version?E.s||!l?E.compressedTexImage2D(a,b,c,e,f,h,l,m):E.compressedTexImage2D(a,b,c,e,f,h,q(),m,l):E.compressedTexImage2D(a,b,c,e,f,h,q().subarray(m,m+l))},emscripten_glCompressedTexSubImage2D:(a,b,c,e,f,h,l,m,p)=>{2<=P.version?E.s||!m?E.compressedTexSubImage2D(a,b,c,e,f,h,l,m,p):E.compressedTexSubImage2D(a,b,c,e,f,h,l,q(),p,m):E.compressedTexSubImage2D(a,b,c,e,f,h,l,q().subarray(p,p+m))},emscripten_glCopyBufferSubData:(a,b,c,e,f)=>E.copyBufferSubData(a,b,c,e,f),emscripten_glCopyTexSubImage2D:(a,
|
||||
b,c,e,f,h,l,m)=>E.copyTexSubImage2D(a,b,c,e,f,h,l,m),emscripten_glCreateProgram:()=>{var a=M(F),b=E.createProgram();b.name=a;b.C=b.A=b.B=0;b.G=1;F[a]=b;return a},emscripten_glCreateShader:a=>{var b=M(H);H[b]=E.createShader(a);return b},emscripten_glCullFace:a=>E.cullFace(a),emscripten_glDeleteBuffers:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=fb[e];f&&(E.deleteBuffer(f),f.name=0,fb[e]=null,e==E.D&&(E.D=0),e==E.s&&(E.s=0))}},emscripten_glDeleteFramebuffers:(a,b)=>{for(var c=0;c<a;++c){var e=
|
||||
r()[b+4*c>>2],f=gb[e];f&&(E.deleteFramebuffer(f),f.name=0,gb[e]=null)}},emscripten_glDeleteProgram:a=>{if(a){var b=F[a];b?(E.deleteProgram(b),b.name=0,F[a]=null):N||=1281}},emscripten_glDeleteQueries:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=J[e];f&&(E.deleteQuery(f),J[e]=null)}},emscripten_glDeleteQueriesEXT:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=J[e];f&&(E.m.deleteQueryEXT(f),J[e]=null)}},emscripten_glDeleteRenderbuffers:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=hb[e];
|
||||
f&&(E.deleteRenderbuffer(f),f.name=0,hb[e]=null)}},emscripten_glDeleteSamplers:(a,b)=>{for(var c=0;c<a;c++){var e=r()[b+4*c>>2],f=K[e];f&&(E.deleteSampler(f),f.name=0,K[e]=null)}},emscripten_glDeleteShader:a=>{if(a){var b=H[a];b?(E.deleteShader(b),H[a]=null):N||=1281}},emscripten_glDeleteSync:a=>{if(a){var b=L[a];b?(E.deleteSync(b),b.name=0,L[a]=null):N||=1281}},emscripten_glDeleteTextures:rb,emscripten_glDeleteVertexArrays:sb,emscripten_glDeleteVertexArraysOES:sb,emscripten_glDepthMask:a=>{E.depthMask(!!a)},
|
||||
emscripten_glDisable:a=>E.disable(a),emscripten_glDisableVertexAttribArray:a=>{E.disableVertexAttribArray(a)},emscripten_glDrawArrays:(a,b,c)=>{E.drawArrays(a,b,c)},emscripten_glDrawArraysInstanced:(a,b,c,e)=>{E.drawArraysInstanced(a,b,c,e)},emscripten_glDrawArraysInstancedBaseInstanceWEBGL:(a,b,c,e,f)=>{E.H.drawArraysInstancedBaseInstanceWEBGL(a,b,c,e,f)},emscripten_glDrawBuffers:(a,b)=>{for(var c=tb[a],e=0;e<a;e++)c[e]=r()[b+4*e>>2];E.drawBuffers(c)},emscripten_glDrawElements:(a,b,c,e)=>{E.drawElements(a,
|
||||
b,c,e)},emscripten_glDrawElementsInstanced:(a,b,c,e,f)=>{E.drawElementsInstanced(a,b,c,e,f)},emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL:(a,b,c,e,f,h,l)=>{E.H.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a,b,c,e,f,h,l)},emscripten_glDrawRangeElements:(a,b,c,e,f,h)=>{E.drawElements(a,e,f,h)},emscripten_glEnable:a=>E.enable(a),emscripten_glEnableVertexAttribArray:a=>{E.enableVertexAttribArray(a)},emscripten_glEndQuery:a=>E.endQuery(a),emscripten_glEndQueryEXT:a=>{E.m.endQueryEXT(a)},
|
||||
emscripten_glFenceSync:(a,b)=>(a=E.fenceSync(a,b))?(b=M(L),a.name=b,L[b]=a,b):0,emscripten_glFinish:()=>E.finish(),emscripten_glFlush:()=>E.flush(),emscripten_glFramebufferRenderbuffer:(a,b,c,e)=>{E.framebufferRenderbuffer(a,b,c,hb[e])},emscripten_glFramebufferTexture2D:(a,b,c,e,f)=>{E.framebufferTexture2D(a,b,c,G[e],f)},emscripten_glFrontFace:a=>E.frontFace(a),emscripten_glGenBuffers:(a,b)=>{O(a,b,"createBuffer",fb)},emscripten_glGenFramebuffers:(a,b)=>{O(a,b,"createFramebuffer",gb)},emscripten_glGenQueries:(a,
|
||||
b)=>{O(a,b,"createQuery",J)},emscripten_glGenQueriesEXT:(a,b)=>{for(var c=0;c<a;c++){var e=E.m.createQueryEXT();if(!e){for(N||=1282;c<a;)r()[b+4*c++>>2]=0;break}var f=M(J);e.name=f;J[f]=e;r()[b+4*c>>2]=f}},emscripten_glGenRenderbuffers:(a,b)=>{O(a,b,"createRenderbuffer",hb)},emscripten_glGenSamplers:(a,b)=>{O(a,b,"createSampler",K)},emscripten_glGenTextures:(a,b)=>{O(a,b,"createTexture",G)},emscripten_glGenVertexArrays:ub,emscripten_glGenVertexArraysOES:ub,emscripten_glGenerateMipmap:a=>E.generateMipmap(a),
|
||||
emscripten_glGetBufferParameteriv:(a,b,c)=>{c?r()[c>>2]=E.getBufferParameter(a,b):N||=1281},emscripten_glGetError:()=>{var a=E.getError()||N;N=0;return a},emscripten_glGetFloatv:(a,b)=>xb(a,b,2),emscripten_glGetFramebufferAttachmentParameteriv:(a,b,c,e)=>{a=E.getFramebufferAttachmentParameter(a,b,c);if(a instanceof WebGLRenderbuffer||a instanceof WebGLTexture)a=a.name|0;r()[e>>2]=a},emscripten_glGetIntegerv:yb,emscripten_glGetProgramInfoLog:(a,b,c,e)=>{a=E.getProgramInfoLog(F[a]);null===a&&(a="(unknown error)");
|
||||
b=0<b&&e?D(a,e,b):0;c&&(r()[c>>2]=b)},emscripten_glGetProgramiv:(a,b,c)=>{if(c)if(a>=eb)N||=1281;else if(a=F[a],35716==b)a=E.getProgramInfoLog(a),null===a&&(a="(unknown error)"),r()[c>>2]=a.length+1;else if(35719==b){if(!a.C){var e=E.getProgramParameter(a,35718);for(b=0;b<e;++b)a.C=Math.max(a.C,E.getActiveUniform(a,b).name.length+1)}r()[c>>2]=a.C}else if(35722==b){if(!a.A)for(e=E.getProgramParameter(a,35721),b=0;b<e;++b)a.A=Math.max(a.A,E.getActiveAttrib(a,b).name.length+1);r()[c>>2]=a.A}else if(35381==
|
||||
b){if(!a.B)for(e=E.getProgramParameter(a,35382),b=0;b<e;++b)a.B=Math.max(a.B,E.getActiveUniformBlockName(a,b).length+1);r()[c>>2]=a.B}else r()[c>>2]=E.getProgramParameter(a,b);else N||=1281},emscripten_glGetQueryObjecti64vEXT:zb,emscripten_glGetQueryObjectui64vEXT:zb,emscripten_glGetQueryObjectuiv:(a,b,c)=>{if(c){a=E.getQueryParameter(J[a],b);var e;"boolean"==typeof a?e=a?1:0:e=a;r()[c>>2]=e}else N||=1281},emscripten_glGetQueryObjectuivEXT:(a,b,c)=>{if(c){a=E.m.getQueryObjectEXT(J[a],b);var e;"boolean"==
|
||||
typeof a?e=a?1:0:e=a;r()[c>>2]=e}else N||=1281},emscripten_glGetQueryiv:(a,b,c)=>{c?r()[c>>2]=E.getQuery(a,b):N||=1281},emscripten_glGetQueryivEXT:(a,b,c)=>{c?r()[c>>2]=E.m.getQueryEXT(a,b):N||=1281},emscripten_glGetRenderbufferParameteriv:(a,b,c)=>{c?r()[c>>2]=E.getRenderbufferParameter(a,b):N||=1281},emscripten_glGetShaderInfoLog:(a,b,c,e)=>{a=E.getShaderInfoLog(H[a]);null===a&&(a="(unknown error)");b=0<b&&e?D(a,e,b):0;c&&(r()[c>>2]=b)},emscripten_glGetShaderPrecisionFormat:(a,b,c,e)=>{a=E.getShaderPrecisionFormat(a,
|
||||
b);r()[c>>2]=a.rangeMin;r()[c+4>>2]=a.rangeMax;r()[e>>2]=a.precision},emscripten_glGetShaderiv:(a,b,c)=>{c?35716==b?(a=E.getShaderInfoLog(H[a]),null===a&&(a="(unknown error)"),a=a?a.length+1:0,r()[c>>2]=a):35720==b?(a=(a=E.getShaderSource(H[a]))?a.length+1:0,r()[c>>2]=a):r()[c>>2]=E.getShaderParameter(H[a],b):N||=1281},emscripten_glGetString:Cb,emscripten_glGetStringi:Db,emscripten_glGetUniformLocation:(a,b)=>{b=Wa(b);if(a=F[a]){var c=a,e=c.v,f=c.M,h;if(!e){c.v=e={};c.L={};var l=E.getProgramParameter(c,
|
||||
35718);for(h=0;h<l;++h){var m=E.getActiveUniform(c,h);var p=m.name;m=m.size;var v=Eb(p);v=0<v?p.slice(0,v):p;var U=c.G;c.G+=m;f[v]=[m,U];for(p=0;p<m;++p)e[U]=p,c.L[U++]=v}}c=a.v;e=0;f=b;h=Eb(b);0<h&&(e=parseInt(b.slice(h+1))>>>0,f=b.slice(0,h));if((f=a.M[f])&&e<f[0]&&(e+=f[1],c[e]=c[e]||E.getUniformLocation(a,b)))return e}else N||=1281;return-1},emscripten_glInvalidateFramebuffer:(a,b,c)=>{for(var e=tb[b],f=0;f<b;f++)e[f]=r()[c+4*f>>2];E.invalidateFramebuffer(a,e)},emscripten_glInvalidateSubFramebuffer:(a,
|
||||
b,c,e,f,h,l)=>{for(var m=tb[b],p=0;p<b;p++)m[p]=r()[c+4*p>>2];E.invalidateSubFramebuffer(a,m,e,f,h,l)},emscripten_glIsSync:a=>E.isSync(L[a]),emscripten_glIsTexture:a=>(a=G[a])?E.isTexture(a):0,emscripten_glLineWidth:a=>E.lineWidth(a),emscripten_glLinkProgram:a=>{a=F[a];E.linkProgram(a);a.v=0;a.M={}},emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL:(a,b,c,e,f,h)=>{E.K.multiDrawArraysInstancedBaseInstanceWEBGL(a,r(),b>>2,r(),c>>2,r(),e>>2,t(),f>>2,h)},emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL:(a,
|
||||
b,c,e,f,h,l,m)=>{E.K.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a,r(),b>>2,c,r(),e>>2,r(),f>>2,r(),h>>2,t(),l>>2,m)},emscripten_glPixelStorei:(a,b)=>{3317==a?lb=b:3314==a&&(mb=b);E.pixelStorei(a,b)},emscripten_glQueryCounterEXT:(a,b)=>{E.m.queryCounterEXT(J[a],b)},emscripten_glReadBuffer:a=>E.readBuffer(a),emscripten_glReadPixels:(a,b,c,e,f,h,l)=>{if(2<=P.version)if(E.D)E.readPixels(a,b,c,e,f,h,l);else{var m=Fb(h);l>>>=31-Math.clz32(m.BYTES_PER_ELEMENT);E.readPixels(a,b,c,e,f,h,m,l)}else(m=
|
||||
Gb(h,f,c,e,l))?E.readPixels(a,b,c,e,f,h,m):N||=1280},emscripten_glRenderbufferStorage:(a,b,c,e)=>E.renderbufferStorage(a,b,c,e),emscripten_glRenderbufferStorageMultisample:(a,b,c,e,f)=>E.renderbufferStorageMultisample(a,b,c,e,f),emscripten_glSamplerParameterf:(a,b,c)=>{E.samplerParameterf(K[a],b,c)},emscripten_glSamplerParameteri:(a,b,c)=>{E.samplerParameteri(K[a],b,c)},emscripten_glSamplerParameteriv:(a,b,c)=>{c=r()[c>>2];E.samplerParameteri(K[a],b,c)},emscripten_glScissor:(a,b,c,e)=>E.scissor(a,
|
||||
b,c,e),emscripten_glShaderSource:(a,b,c,e)=>{for(var f="",h=0;h<b;++h){var l=e?t()[e+4*h>>2]:void 0;f+=Wa(t()[c+4*h>>2],l)}E.shaderSource(H[a],f)},emscripten_glStencilFunc:(a,b,c)=>E.stencilFunc(a,b,c),emscripten_glStencilFuncSeparate:(a,b,c,e)=>E.stencilFuncSeparate(a,b,c,e),emscripten_glStencilMask:a=>E.stencilMask(a),emscripten_glStencilMaskSeparate:(a,b)=>E.stencilMaskSeparate(a,b),emscripten_glStencilOp:(a,b,c)=>E.stencilOp(a,b,c),emscripten_glStencilOpSeparate:(a,b,c,e)=>E.stencilOpSeparate(a,
|
||||
b,c,e),emscripten_glTexImage2D:(a,b,c,e,f,h,l,m,p)=>{if(2<=P.version){if(E.s){E.texImage2D(a,b,c,e,f,h,l,m,p);return}if(p){var v=Fb(m);p>>>=31-Math.clz32(v.BYTES_PER_ELEMENT);E.texImage2D(a,b,c,e,f,h,l,m,v,p);return}}v=p?Gb(m,l,e,f,p):null;E.texImage2D(a,b,c,e,f,h,l,m,v)},emscripten_glTexParameterf:(a,b,c)=>E.texParameterf(a,b,c),emscripten_glTexParameterfv:(a,b,c)=>{c=u()[c>>2];E.texParameterf(a,b,c)},emscripten_glTexParameteri:(a,b,c)=>E.texParameteri(a,b,c),emscripten_glTexParameteriv:(a,b,c)=>
|
||||
{c=r()[c>>2];E.texParameteri(a,b,c)},emscripten_glTexStorage2D:(a,b,c,e,f)=>E.texStorage2D(a,b,c,e,f),emscripten_glTexSubImage2D:(a,b,c,e,f,h,l,m,p)=>{if(2<=P.version){if(E.s){E.texSubImage2D(a,b,c,e,f,h,l,m,p);return}if(p){var v=Fb(m);E.texSubImage2D(a,b,c,e,f,h,l,m,v,p>>>31-Math.clz32(v.BYTES_PER_ELEMENT));return}}p=p?Gb(m,l,f,h,p):null;E.texSubImage2D(a,b,c,e,f,h,l,m,p)},emscripten_glUniform1f:(a,b)=>{E.uniform1f(Q(a),b)},emscripten_glUniform1fv:(a,b,c)=>{if(2<=P.version)b&&E.uniform1fv(Q(a),u(),
|
||||
c>>2,b);else{if(288>=b)for(var e=R[b],f=0;f<b;++f)e[f]=u()[c+4*f>>2];else e=u().subarray(c>>2,c+4*b>>2);E.uniform1fv(Q(a),e)}},emscripten_glUniform1i:(a,b)=>{E.uniform1i(Q(a),b)},emscripten_glUniform1iv:(a,b,c)=>{if(2<=P.version)b&&E.uniform1iv(Q(a),r(),c>>2,b);else{if(288>=b)for(var e=Hb[b],f=0;f<b;++f)e[f]=r()[c+4*f>>2];else e=r().subarray(c>>2,c+4*b>>2);E.uniform1iv(Q(a),e)}},emscripten_glUniform2f:(a,b,c)=>{E.uniform2f(Q(a),b,c)},emscripten_glUniform2fv:(a,b,c)=>{if(2<=P.version)b&&E.uniform2fv(Q(a),
|
||||
u(),c>>2,2*b);else{if(144>=b){b*=2;for(var e=R[b],f=0;f<b;f+=2)e[f]=u()[c+4*f>>2],e[f+1]=u()[c+(4*f+4)>>2]}else e=u().subarray(c>>2,c+8*b>>2);E.uniform2fv(Q(a),e)}},emscripten_glUniform2i:(a,b,c)=>{E.uniform2i(Q(a),b,c)},emscripten_glUniform2iv:(a,b,c)=>{if(2<=P.version)b&&E.uniform2iv(Q(a),r(),c>>2,2*b);else{if(144>=b){b*=2;for(var e=Hb[b],f=0;f<b;f+=2)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>2]}else e=r().subarray(c>>2,c+8*b>>2);E.uniform2iv(Q(a),e)}},emscripten_glUniform3f:(a,b,c,e)=>{E.uniform3f(Q(a),
|
||||
b,c,e)},emscripten_glUniform3fv:(a,b,c)=>{if(2<=P.version)b&&E.uniform3fv(Q(a),u(),c>>2,3*b);else{if(96>=b){b*=3;for(var e=R[b],f=0;f<b;f+=3)e[f]=u()[c+4*f>>2],e[f+1]=u()[c+(4*f+4)>>2],e[f+2]=u()[c+(4*f+8)>>2]}else e=u().subarray(c>>2,c+12*b>>2);E.uniform3fv(Q(a),e)}},emscripten_glUniform3i:(a,b,c,e)=>{E.uniform3i(Q(a),b,c,e)},emscripten_glUniform3iv:(a,b,c)=>{if(2<=P.version)b&&E.uniform3iv(Q(a),r(),c>>2,3*b);else{if(96>=b){b*=3;for(var e=Hb[b],f=0;f<b;f+=3)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>
|
||||
2],e[f+2]=r()[c+(4*f+8)>>2]}else e=r().subarray(c>>2,c+12*b>>2);E.uniform3iv(Q(a),e)}},emscripten_glUniform4f:(a,b,c,e,f)=>{E.uniform4f(Q(a),b,c,e,f)},emscripten_glUniform4fv:(a,b,c)=>{if(2<=P.version)b&&E.uniform4fv(Q(a),u(),c>>2,4*b);else{if(72>=b){var e=R[4*b],f=u();c>>=2;b*=4;for(var h=0;h<b;h+=4){var l=c+h;e[h]=f[l];e[h+1]=f[l+1];e[h+2]=f[l+2];e[h+3]=f[l+3]}}else e=u().subarray(c>>2,c+16*b>>2);E.uniform4fv(Q(a),e)}},emscripten_glUniform4i:(a,b,c,e,f)=>{E.uniform4i(Q(a),b,c,e,f)},emscripten_glUniform4iv:(a,
|
||||
b,c)=>{if(2<=P.version)b&&E.uniform4iv(Q(a),r(),c>>2,4*b);else{if(72>=b){b*=4;for(var e=Hb[b],f=0;f<b;f+=4)e[f]=r()[c+4*f>>2],e[f+1]=r()[c+(4*f+4)>>2],e[f+2]=r()[c+(4*f+8)>>2],e[f+3]=r()[c+(4*f+12)>>2]}else e=r().subarray(c>>2,c+16*b>>2);E.uniform4iv(Q(a),e)}},emscripten_glUniformMatrix2fv:(a,b,c,e)=>{if(2<=P.version)b&&E.uniformMatrix2fv(Q(a),!!c,u(),e>>2,4*b);else{if(72>=b){b*=4;for(var f=R[b],h=0;h<b;h+=4)f[h]=u()[e+4*h>>2],f[h+1]=u()[e+(4*h+4)>>2],f[h+2]=u()[e+(4*h+8)>>2],f[h+3]=u()[e+(4*h+12)>>
|
||||
2]}else f=u().subarray(e>>2,e+16*b>>2);E.uniformMatrix2fv(Q(a),!!c,f)}},emscripten_glUniformMatrix3fv:(a,b,c,e)=>{if(2<=P.version)b&&E.uniformMatrix3fv(Q(a),!!c,u(),e>>2,9*b);else{if(32>=b){b*=9;for(var f=R[b],h=0;h<b;h+=9)f[h]=u()[e+4*h>>2],f[h+1]=u()[e+(4*h+4)>>2],f[h+2]=u()[e+(4*h+8)>>2],f[h+3]=u()[e+(4*h+12)>>2],f[h+4]=u()[e+(4*h+16)>>2],f[h+5]=u()[e+(4*h+20)>>2],f[h+6]=u()[e+(4*h+24)>>2],f[h+7]=u()[e+(4*h+28)>>2],f[h+8]=u()[e+(4*h+32)>>2]}else f=u().subarray(e>>2,e+36*b>>2);E.uniformMatrix3fv(Q(a),
|
||||
!!c,f)}},emscripten_glUniformMatrix4fv:(a,b,c,e)=>{if(2<=P.version)b&&E.uniformMatrix4fv(Q(a),!!c,u(),e>>2,16*b);else{if(18>=b){var f=R[16*b],h=u();e>>=2;b*=16;for(var l=0;l<b;l+=16){var m=e+l;f[l]=h[m];f[l+1]=h[m+1];f[l+2]=h[m+2];f[l+3]=h[m+3];f[l+4]=h[m+4];f[l+5]=h[m+5];f[l+6]=h[m+6];f[l+7]=h[m+7];f[l+8]=h[m+8];f[l+9]=h[m+9];f[l+10]=h[m+10];f[l+11]=h[m+11];f[l+12]=h[m+12];f[l+13]=h[m+13];f[l+14]=h[m+14];f[l+15]=h[m+15]}}else f=u().subarray(e>>2,e+64*b>>2);E.uniformMatrix4fv(Q(a),!!c,f)}},emscripten_glUseProgram:a=>
|
||||
{a=F[a];E.useProgram(a);E.O=a},emscripten_glVertexAttrib1f:(a,b)=>E.vertexAttrib1f(a,b),emscripten_glVertexAttrib2fv:(a,b)=>{E.vertexAttrib2f(a,u()[b>>2],u()[b+4>>2])},emscripten_glVertexAttrib3fv:(a,b)=>{E.vertexAttrib3f(a,u()[b>>2],u()[b+4>>2],u()[b+8>>2])},emscripten_glVertexAttrib4fv:(a,b)=>{E.vertexAttrib4f(a,u()[b>>2],u()[b+4>>2],u()[b+8>>2],u()[b+12>>2])},emscripten_glVertexAttribDivisor:(a,b)=>{E.vertexAttribDivisor(a,b)},emscripten_glVertexAttribIPointer:(a,b,c,e,f)=>{E.vertexAttribIPointer(a,
|
||||
b,c,e,f)},emscripten_glVertexAttribPointer:(a,b,c,e,f,h)=>{E.vertexAttribPointer(a,b,c,!!e,f,h)},emscripten_glViewport:(a,b,c,e)=>E.viewport(a,b,c,e),emscripten_glWaitSync:(a,b,c,e)=>{E.waitSync(L[a],b,(c>>>0)+4294967296*e)},emscripten_resize_heap:a=>{var b=q().length;a>>>=0;if(a<=b||2147483648<a)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+.2/c);e=Math.min(e,a+100663296);a:{e=(Math.min(2147483648,65536*Math.ceil(Math.max(a,e)/65536))-g.buffer.byteLength+65535)/65536|0;try{g.grow(e);n();var f=1;break a}catch(h){}f=
|
||||
void 0}if(f)return!0}return!1},emscripten_wasm_worker_post_function_v:(a,b)=>{C[a].postMessage({_wsc:b,x:[]})},emscripten_webgl_enable_extension:function(a,b){a=I[a];b=Wa(b);b.startsWith("GL_")&&(b=b.substr(3));"ANGLE_instanced_arrays"==b&&Za(E);"OES_vertex_array_object"==b&&$a(E);"WEBGL_draw_buffers"==b&&ab(E);"WEBGL_draw_instanced_base_vertex_base_instance"==b&&bb(E);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==b&&cb(E);"WEBGL_multi_draw"==b&&(E.U=E.getExtension("WEBGL_multi_draw"));
|
||||
"EXT_polygon_offset_clamp"==b&&(E.R=E.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==b&&(E.P=E.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==b&&(E.Z=E.getExtension("WEBGL_polygon_mode"));return!!a.o.getExtension(b)},emscripten_webgl_get_current_context:()=>P?P.handle:0,emscripten_webgl_make_context_current:a=>{P=I[a];w.aa=E=P?.o;return!a||E?0:-5},environ_get:(a,b)=>{var c=0;Kb().forEach((e,f)=>{var h=b+c;f=t()[a+4*f>>2]=h;for(h=0;h<e.length;++h)d()[f++]=e.charCodeAt(h);d()[f]=
|
||||
0;c+=e.length+1});return 0},environ_sizes_get:(a,b)=>{var c=Kb();t()[a>>2]=c.length;var e=0;c.forEach(f=>e+=f.length+1);t()[b>>2]=e;return 0},fd_close:()=>52,fd_pread:function(){return 52},fd_read:()=>52,fd_seek:function(){return 70},fd_write:(a,b,c,e)=>{for(var f=0,h=0;h<c;h++){var l=t()[b>>2],m=t()[b+4>>2];b+=8;for(var p=0;p<m;p++){var v=q()[l+p],U=Lb[a];0===v||10===v?((1===a?pa:y)(Va(U)),U.length=0):U.push(v)}f+=m}t()[e>>2]=f;return 0},glDeleteTextures:rb,glGetIntegerv:yb,glGetString:Cb,glGetStringi:Db,
|
||||
invoke_ii:Dc,invoke_iii:Ec,invoke_iiii:Fc,invoke_iiiii:Gc,invoke_iiiiiii:Hc,invoke_vi:Ic,invoke_vii:Jc,invoke_viii:Kc,invoke_viiiiiii:Lc,memory:g,proc_exit:Pa,skwasm_captureImageBitmap:Mb,skwasm_connectThread:Pb,skwasm_createGlTextureFromTextureSource:Qb,skwasm_destroyContext:Rb,skwasm_dispatchDisposeSurface:Sb,skwasm_dispatchRasterizeImage:Tb,skwasm_dispatchRenderPictures:Ub,skwasm_dispatchResizeSurface:Vb,skwasm_dispatchTransferCanvas:Wb,skwasm_dispatchTriggerContextLoss:Xb,skwasm_disposeAssociatedObjectOnThread:Yb,
|
||||
skwasm_getAssociatedObject:Zb,skwasm_getGlContextForCanvas:$b,skwasm_isSingleThreaded:ac,skwasm_postRasterizeResult:bc,skwasm_reportContextLossTriggered:cc,skwasm_reportContextLost:dc,skwasm_reportInitialized:ec,skwasm_reportResizeComplete:fc,skwasm_resizeCanvas:gc,skwasm_resolveAndPostImages:hc,skwasm_setAssociatedObjectOnThread:ic,skwasm_triggerContextLossOnCanvas:jc},W=function(){function a(c,e){W=c.exports;w.wasmExports=W;B=W.__indirect_function_table;wa.unshift(W.__wasm_call_ctors);qa=e;z--;
|
||||
0==z&&(null!==Fa&&(clearInterval(Fa),Fa=null),A&&(c=A,A=null,c()));return W}var b={env:Mc,wasi_snapshot_preview1:Mc};z++;if(w.instantiateWasm)try{return w.instantiateWasm(b,a)}catch(c){y(`Module.instantiateWasm callback failed with error: ${c}`),fa(c)}Ia??=Ha("skwasm_heavy.wasm")?"skwasm_heavy.wasm":ma("skwasm_heavy.wasm");La(b,function(c){a(c.instance,c.module)}).catch(fa);return{}}();w._canvas_saveLayer=(a,b,c,e)=>(w._canvas_saveLayer=W.canvas_saveLayer)(a,b,c,e);
|
||||
w._canvas_save=a=>(w._canvas_save=W.canvas_save)(a);w._canvas_restore=a=>(w._canvas_restore=W.canvas_restore)(a);w._canvas_restoreToCount=(a,b)=>(w._canvas_restoreToCount=W.canvas_restoreToCount)(a,b);w._canvas_getSaveCount=a=>(w._canvas_getSaveCount=W.canvas_getSaveCount)(a);w._canvas_translate=(a,b,c)=>(w._canvas_translate=W.canvas_translate)(a,b,c);w._canvas_scale=(a,b,c)=>(w._canvas_scale=W.canvas_scale)(a,b,c);w._canvas_rotate=(a,b)=>(w._canvas_rotate=W.canvas_rotate)(a,b);
|
||||
w._canvas_skew=(a,b,c)=>(w._canvas_skew=W.canvas_skew)(a,b,c);w._canvas_transform=(a,b)=>(w._canvas_transform=W.canvas_transform)(a,b);w._canvas_clear=(a,b)=>(w._canvas_clear=W.canvas_clear)(a,b);w._canvas_clipRect=(a,b,c,e)=>(w._canvas_clipRect=W.canvas_clipRect)(a,b,c,e);w._canvas_clipRRect=(a,b,c)=>(w._canvas_clipRRect=W.canvas_clipRRect)(a,b,c);w._canvas_clipPath=(a,b,c)=>(w._canvas_clipPath=W.canvas_clipPath)(a,b,c);w._canvas_drawColor=(a,b,c)=>(w._canvas_drawColor=W.canvas_drawColor)(a,b,c);
|
||||
w._canvas_drawLine=(a,b,c,e,f,h)=>(w._canvas_drawLine=W.canvas_drawLine)(a,b,c,e,f,h);w._canvas_drawPaint=(a,b)=>(w._canvas_drawPaint=W.canvas_drawPaint)(a,b);w._canvas_drawRect=(a,b,c)=>(w._canvas_drawRect=W.canvas_drawRect)(a,b,c);w._canvas_drawRRect=(a,b,c)=>(w._canvas_drawRRect=W.canvas_drawRRect)(a,b,c);w._canvas_drawDRRect=(a,b,c,e)=>(w._canvas_drawDRRect=W.canvas_drawDRRect)(a,b,c,e);w._canvas_drawOval=(a,b,c)=>(w._canvas_drawOval=W.canvas_drawOval)(a,b,c);
|
||||
w._canvas_drawCircle=(a,b,c,e,f)=>(w._canvas_drawCircle=W.canvas_drawCircle)(a,b,c,e,f);w._canvas_drawArc=(a,b,c,e,f,h)=>(w._canvas_drawArc=W.canvas_drawArc)(a,b,c,e,f,h);w._canvas_drawPath=(a,b,c)=>(w._canvas_drawPath=W.canvas_drawPath)(a,b,c);w._canvas_drawShadow=(a,b,c,e,f,h)=>(w._canvas_drawShadow=W.canvas_drawShadow)(a,b,c,e,f,h);w._canvas_drawParagraph=(a,b,c,e)=>(w._canvas_drawParagraph=W.canvas_drawParagraph)(a,b,c,e);
|
||||
w._canvas_drawPicture=(a,b)=>(w._canvas_drawPicture=W.canvas_drawPicture)(a,b);w._canvas_drawImage=(a,b,c,e,f,h)=>(w._canvas_drawImage=W.canvas_drawImage)(a,b,c,e,f,h);w._canvas_drawImageRect=(a,b,c,e,f,h)=>(w._canvas_drawImageRect=W.canvas_drawImageRect)(a,b,c,e,f,h);w._canvas_drawImageNine=(a,b,c,e,f,h)=>(w._canvas_drawImageNine=W.canvas_drawImageNine)(a,b,c,e,f,h);w._canvas_drawVertices=(a,b,c,e)=>(w._canvas_drawVertices=W.canvas_drawVertices)(a,b,c,e);
|
||||
w._canvas_drawPoints=(a,b,c,e,f)=>(w._canvas_drawPoints=W.canvas_drawPoints)(a,b,c,e,f);w._canvas_drawAtlas=(a,b,c,e,f,h,l,m,p)=>(w._canvas_drawAtlas=W.canvas_drawAtlas)(a,b,c,e,f,h,l,m,p);w._canvas_getTransform=(a,b)=>(w._canvas_getTransform=W.canvas_getTransform)(a,b);w._canvas_getLocalClipBounds=(a,b)=>(w._canvas_getLocalClipBounds=W.canvas_getLocalClipBounds)(a,b);w._canvas_getDeviceClipBounds=(a,b)=>(w._canvas_getDeviceClipBounds=W.canvas_getDeviceClipBounds)(a,b);
|
||||
w._canvas_quickReject=(a,b)=>(w._canvas_quickReject=W.canvas_quickReject)(a,b);w._contourMeasureIter_create=(a,b,c)=>(w._contourMeasureIter_create=W.contourMeasureIter_create)(a,b,c);w._contourMeasureIter_next=a=>(w._contourMeasureIter_next=W.contourMeasureIter_next)(a);w._contourMeasureIter_dispose=a=>(w._contourMeasureIter_dispose=W.contourMeasureIter_dispose)(a);w._contourMeasure_dispose=a=>(w._contourMeasure_dispose=W.contourMeasure_dispose)(a);
|
||||
w._contourMeasure_length=a=>(w._contourMeasure_length=W.contourMeasure_length)(a);w._contourMeasure_isClosed=a=>(w._contourMeasure_isClosed=W.contourMeasure_isClosed)(a);w._contourMeasure_getPosTan=(a,b,c,e)=>(w._contourMeasure_getPosTan=W.contourMeasure_getPosTan)(a,b,c,e);w._contourMeasure_getSegment=(a,b,c,e)=>(w._contourMeasure_getSegment=W.contourMeasure_getSegment)(a,b,c,e);w._skData_create=a=>(w._skData_create=W.skData_create)(a);w._skData_getPointer=a=>(w._skData_getPointer=W.skData_getPointer)(a);
|
||||
w._skData_getConstPointer=a=>(w._skData_getConstPointer=W.skData_getConstPointer)(a);w._skData_getSize=a=>(w._skData_getSize=W.skData_getSize)(a);w._skData_dispose=a=>(w._skData_dispose=W.skData_dispose)(a);w._imageFilter_createBlur=(a,b,c)=>(w._imageFilter_createBlur=W.imageFilter_createBlur)(a,b,c);w._imageFilter_createDilate=(a,b)=>(w._imageFilter_createDilate=W.imageFilter_createDilate)(a,b);w._imageFilter_createErode=(a,b)=>(w._imageFilter_createErode=W.imageFilter_createErode)(a,b);
|
||||
w._imageFilter_createMatrix=(a,b)=>(w._imageFilter_createMatrix=W.imageFilter_createMatrix)(a,b);w._imageFilter_createFromColorFilter=a=>(w._imageFilter_createFromColorFilter=W.imageFilter_createFromColorFilter)(a);w._imageFilter_compose=(a,b)=>(w._imageFilter_compose=W.imageFilter_compose)(a,b);w._imageFilter_dispose=a=>(w._imageFilter_dispose=W.imageFilter_dispose)(a);w._imageFilter_getFilterBounds=(a,b)=>(w._imageFilter_getFilterBounds=W.imageFilter_getFilterBounds)(a,b);
|
||||
w._colorFilter_createMode=(a,b)=>(w._colorFilter_createMode=W.colorFilter_createMode)(a,b);w._colorFilter_createMatrix=a=>(w._colorFilter_createMatrix=W.colorFilter_createMatrix)(a);w._colorFilter_createSRGBToLinearGamma=()=>(w._colorFilter_createSRGBToLinearGamma=W.colorFilter_createSRGBToLinearGamma)();w._colorFilter_createLinearToSRGBGamma=()=>(w._colorFilter_createLinearToSRGBGamma=W.colorFilter_createLinearToSRGBGamma)();w._colorFilter_dispose=a=>(w._colorFilter_dispose=W.colorFilter_dispose)(a);
|
||||
w._maskFilter_createBlur=(a,b)=>(w._maskFilter_createBlur=W.maskFilter_createBlur)(a,b);w._maskFilter_dispose=a=>(w._maskFilter_dispose=W.maskFilter_dispose)(a);w._fontCollection_create=()=>(w._fontCollection_create=W.fontCollection_create)();w._fontCollection_dispose=a=>(w._fontCollection_dispose=W.fontCollection_dispose)(a);w._typeface_create=a=>(w._typeface_create=W.typeface_create)(a);w._typeface_dispose=a=>(w._typeface_dispose=W.typeface_dispose)(a);
|
||||
w._typefaces_filterCoveredCodePoints=(a,b,c,e)=>(w._typefaces_filterCoveredCodePoints=W.typefaces_filterCoveredCodePoints)(a,b,c,e);w._fontCollection_registerTypeface=(a,b,c)=>(w._fontCollection_registerTypeface=W.fontCollection_registerTypeface)(a,b,c);w._fontCollection_clearCaches=a=>(w._fontCollection_clearCaches=W.fontCollection_clearCaches)(a);w._image_createFromPicture=(a,b,c)=>(w._image_createFromPicture=W.image_createFromPicture)(a,b,c);
|
||||
w._image_createFromPixels=(a,b,c,e,f)=>(w._image_createFromPixels=W.image_createFromPixels)(a,b,c,e,f);w._image_createFromTextureSource=(a,b,c,e)=>(w._image_createFromTextureSource=W.image_createFromTextureSource)(a,b,c,e);w._image_ref=a=>(w._image_ref=W.image_ref)(a);w._image_dispose=a=>(w._image_dispose=W.image_dispose)(a);w._image_getWidth=a=>(w._image_getWidth=W.image_getWidth)(a);w._image_getHeight=a=>(w._image_getHeight=W.image_getHeight)(a);
|
||||
w._skwasm_getLiveObjectCounts=a=>(w._skwasm_getLiveObjectCounts=W.skwasm_getLiveObjectCounts)(a);w._paint_create=(a,b,c,e,f,h,l,m,p)=>(w._paint_create=W.paint_create)(a,b,c,e,f,h,l,m,p);w._paint_dispose=a=>(w._paint_dispose=W.paint_dispose)(a);w._paint_setShader=(a,b)=>(w._paint_setShader=W.paint_setShader)(a,b);w._paint_setImageFilter=(a,b)=>(w._paint_setImageFilter=W.paint_setImageFilter)(a,b);w._paint_setColorFilter=(a,b)=>(w._paint_setColorFilter=W.paint_setColorFilter)(a,b);
|
||||
w._paint_setMaskFilter=(a,b)=>(w._paint_setMaskFilter=W.paint_setMaskFilter)(a,b);w._path_create=()=>(w._path_create=W.path_create)();w._path_dispose=a=>(w._path_dispose=W.path_dispose)(a);w._path_copy=a=>(w._path_copy=W.path_copy)(a);w._path_setFillType=(a,b)=>(w._path_setFillType=W.path_setFillType)(a,b);w._path_getFillType=a=>(w._path_getFillType=W.path_getFillType)(a);w._path_moveTo=(a,b,c)=>(w._path_moveTo=W.path_moveTo)(a,b,c);
|
||||
w._path_relativeMoveTo=(a,b,c)=>(w._path_relativeMoveTo=W.path_relativeMoveTo)(a,b,c);w._path_lineTo=(a,b,c)=>(w._path_lineTo=W.path_lineTo)(a,b,c);w._path_relativeLineTo=(a,b,c)=>(w._path_relativeLineTo=W.path_relativeLineTo)(a,b,c);w._path_quadraticBezierTo=(a,b,c,e,f)=>(w._path_quadraticBezierTo=W.path_quadraticBezierTo)(a,b,c,e,f);w._path_relativeQuadraticBezierTo=(a,b,c,e,f)=>(w._path_relativeQuadraticBezierTo=W.path_relativeQuadraticBezierTo)(a,b,c,e,f);
|
||||
w._path_cubicTo=(a,b,c,e,f,h,l)=>(w._path_cubicTo=W.path_cubicTo)(a,b,c,e,f,h,l);w._path_relativeCubicTo=(a,b,c,e,f,h,l)=>(w._path_relativeCubicTo=W.path_relativeCubicTo)(a,b,c,e,f,h,l);w._path_conicTo=(a,b,c,e,f,h)=>(w._path_conicTo=W.path_conicTo)(a,b,c,e,f,h);w._path_relativeConicTo=(a,b,c,e,f,h)=>(w._path_relativeConicTo=W.path_relativeConicTo)(a,b,c,e,f,h);w._path_arcToOval=(a,b,c,e,f)=>(w._path_arcToOval=W.path_arcToOval)(a,b,c,e,f);
|
||||
w._path_arcToRotated=(a,b,c,e,f,h,l,m)=>(w._path_arcToRotated=W.path_arcToRotated)(a,b,c,e,f,h,l,m);w._path_relativeArcToRotated=(a,b,c,e,f,h,l,m)=>(w._path_relativeArcToRotated=W.path_relativeArcToRotated)(a,b,c,e,f,h,l,m);w._path_addRect=(a,b)=>(w._path_addRect=W.path_addRect)(a,b);w._path_addOval=(a,b)=>(w._path_addOval=W.path_addOval)(a,b);w._path_addArc=(a,b,c,e)=>(w._path_addArc=W.path_addArc)(a,b,c,e);w._path_addPolygon=(a,b,c,e)=>(w._path_addPolygon=W.path_addPolygon)(a,b,c,e);
|
||||
w._path_addRRect=(a,b)=>(w._path_addRRect=W.path_addRRect)(a,b);w._path_addPath=(a,b,c,e)=>(w._path_addPath=W.path_addPath)(a,b,c,e);w._path_close=a=>(w._path_close=W.path_close)(a);w._path_reset=a=>(w._path_reset=W.path_reset)(a);w._path_contains=(a,b,c)=>(w._path_contains=W.path_contains)(a,b,c);w._path_transform=(a,b)=>(w._path_transform=W.path_transform)(a,b);w._path_getBounds=(a,b)=>(w._path_getBounds=W.path_getBounds)(a,b);w._path_combine=(a,b,c)=>(w._path_combine=W.path_combine)(a,b,c);
|
||||
w._path_getSvgString=a=>(w._path_getSvgString=W.path_getSvgString)(a);w._pictureRecorder_create=()=>(w._pictureRecorder_create=W.pictureRecorder_create)();w._pictureRecorder_dispose=a=>(w._pictureRecorder_dispose=W.pictureRecorder_dispose)(a);w._pictureRecorder_beginRecording=(a,b)=>(w._pictureRecorder_beginRecording=W.pictureRecorder_beginRecording)(a,b);w._pictureRecorder_endRecording=a=>(w._pictureRecorder_endRecording=W.pictureRecorder_endRecording)(a);
|
||||
w._picture_getCullRect=(a,b)=>(w._picture_getCullRect=W.picture_getCullRect)(a,b);w._picture_ref=a=>(w._picture_ref=W.picture_ref)(a);w._picture_dispose=a=>(w._picture_dispose=W.picture_dispose)(a);w._picture_approximateBytesUsed=a=>(w._picture_approximateBytesUsed=W.picture_approximateBytesUsed)(a);w._shader_createLinearGradient=(a,b,c,e,f,h)=>(w._shader_createLinearGradient=W.shader_createLinearGradient)(a,b,c,e,f,h);
|
||||
w._shader_createRadialGradient=(a,b,c,e,f,h,l,m)=>(w._shader_createRadialGradient=W.shader_createRadialGradient)(a,b,c,e,f,h,l,m);w._shader_createConicalGradient=(a,b,c,e,f,h,l,m)=>(w._shader_createConicalGradient=W.shader_createConicalGradient)(a,b,c,e,f,h,l,m);w._shader_createSweepGradient=(a,b,c,e,f,h,l,m,p)=>(w._shader_createSweepGradient=W.shader_createSweepGradient)(a,b,c,e,f,h,l,m,p);w._shader_dispose=a=>(w._shader_dispose=W.shader_dispose)(a);
|
||||
w._runtimeEffect_create=a=>(w._runtimeEffect_create=W.runtimeEffect_create)(a);w._runtimeEffect_dispose=a=>(w._runtimeEffect_dispose=W.runtimeEffect_dispose)(a);w._runtimeEffect_getUniformSize=a=>(w._runtimeEffect_getUniformSize=W.runtimeEffect_getUniformSize)(a);w._shader_createRuntimeEffectShader=(a,b,c,e)=>(w._shader_createRuntimeEffectShader=W.shader_createRuntimeEffectShader)(a,b,c,e);w._shader_createFromImage=(a,b,c,e,f)=>(w._shader_createFromImage=W.shader_createFromImage)(a,b,c,e,f);
|
||||
w._uniformData_create=a=>(w._uniformData_create=W.uniformData_create)(a);w._uniformData_dispose=a=>(w._uniformData_dispose=W.uniformData_dispose)(a);w._uniformData_getPointer=a=>(w._uniformData_getPointer=W.uniformData_getPointer)(a);w._skString_allocate=a=>(w._skString_allocate=W.skString_allocate)(a);w._skString_getData=a=>(w._skString_getData=W.skString_getData)(a);w._skString_getLength=a=>(w._skString_getLength=W.skString_getLength)(a);w._skString_free=a=>(w._skString_free=W.skString_free)(a);
|
||||
w._skString16_allocate=a=>(w._skString16_allocate=W.skString16_allocate)(a);w._skString16_getData=a=>(w._skString16_getData=W.skString16_getData)(a);w._skString16_free=a=>(w._skString16_free=W.skString16_free)(a);w._surface_create=()=>(w._surface_create=W.surface_create)();w._surface_setCanvas=(a,b)=>(w._surface_setCanvas=W.surface_setCanvas)(a,b);
|
||||
var pc=w._surface_receiveCanvasOnWorker=(a,b,c)=>(pc=w._surface_receiveCanvasOnWorker=W.surface_receiveCanvasOnWorker)(a,b,c),qc=w._surface_onInitialized=(a,b)=>(qc=w._surface_onInitialized=W.surface_onInitialized)(a,b);w._surface_setSize=(a,b,c)=>(w._surface_setSize=W.surface_setSize)(a,b,c);
|
||||
var rc=w._surface_resizeOnWorker=(a,b,c,e)=>(rc=w._surface_resizeOnWorker=W.surface_resizeOnWorker)(a,b,c,e),sc=w._surface_onResizeComplete=(a,b)=>(sc=w._surface_onResizeComplete=W.surface_onResizeComplete)(a,b);w._surface_getThreadId=a=>(w._surface_getThreadId=W.surface_getThreadId)(a);w._surface_getGlContext=a=>(w._surface_getGlContext=W.surface_getGlContext)(a);w._surface_triggerContextLoss=a=>(w._surface_triggerContextLoss=W.surface_triggerContextLoss)(a);
|
||||
var tc=w._surface_triggerContextLossOnWorker=(a,b)=>(tc=w._surface_triggerContextLossOnWorker=W.surface_triggerContextLossOnWorker)(a,b),uc=w._surface_onContextLossTriggered=(a,b)=>(uc=w._surface_onContextLossTriggered=W.surface_onContextLossTriggered)(a,b),vc=w._surface_reportContextLost=(a,b)=>(vc=w._surface_reportContextLost=W.surface_reportContextLost)(a,b);w._surface_setCallbackHandler=(a,b)=>(w._surface_setCallbackHandler=W.surface_setCallbackHandler)(a,b);
|
||||
w._surface_destroy=a=>(w._surface_destroy=W.surface_destroy)(a);var yc=w._surface_dispose=a=>(yc=w._surface_dispose=W.surface_dispose)(a);w._surface_setResourceCacheLimitBytes=(a,b)=>(w._surface_setResourceCacheLimitBytes=W.surface_setResourceCacheLimitBytes)(a,b);w._surface_renderPictures=(a,b,c)=>(w._surface_renderPictures=W.surface_renderPictures)(a,b,c);var wc=w._surface_renderPicturesOnWorker=(a,b,c,e,f)=>(wc=w._surface_renderPicturesOnWorker=W.surface_renderPicturesOnWorker)(a,b,c,e,f);
|
||||
w._surface_rasterizeImage=(a,b,c)=>(w._surface_rasterizeImage=W.surface_rasterizeImage)(a,b,c);
|
||||
var zc=w._surface_rasterizeImageOnWorker=(a,b,c,e)=>(zc=w._surface_rasterizeImageOnWorker=W.surface_rasterizeImageOnWorker)(a,b,c,e),xc=w._surface_onRenderComplete=(a,b,c)=>(xc=w._surface_onRenderComplete=W.surface_onRenderComplete)(a,b,c),Ac=w._surface_onRasterizeComplete=(a,b,c)=>(Ac=w._surface_onRasterizeComplete=W.surface_onRasterizeComplete)(a,b,c),Bc=w._surface_onContextLost=a=>(Bc=w._surface_onContextLost=W.surface_onContextLost)(a);
|
||||
w._skwasm_isMultiThreaded=()=>(w._skwasm_isMultiThreaded=W.skwasm_isMultiThreaded)();w._lineMetrics_create=(a,b,c,e,f,h,l,m,p)=>(w._lineMetrics_create=W.lineMetrics_create)(a,b,c,e,f,h,l,m,p);w._lineMetrics_dispose=a=>(w._lineMetrics_dispose=W.lineMetrics_dispose)(a);w._lineMetrics_getHardBreak=a=>(w._lineMetrics_getHardBreak=W.lineMetrics_getHardBreak)(a);w._lineMetrics_getAscent=a=>(w._lineMetrics_getAscent=W.lineMetrics_getAscent)(a);w._lineMetrics_getDescent=a=>(w._lineMetrics_getDescent=W.lineMetrics_getDescent)(a);
|
||||
w._lineMetrics_getUnscaledAscent=a=>(w._lineMetrics_getUnscaledAscent=W.lineMetrics_getUnscaledAscent)(a);w._lineMetrics_getHeight=a=>(w._lineMetrics_getHeight=W.lineMetrics_getHeight)(a);w._lineMetrics_getWidth=a=>(w._lineMetrics_getWidth=W.lineMetrics_getWidth)(a);w._lineMetrics_getLeft=a=>(w._lineMetrics_getLeft=W.lineMetrics_getLeft)(a);w._lineMetrics_getBaseline=a=>(w._lineMetrics_getBaseline=W.lineMetrics_getBaseline)(a);w._lineMetrics_getLineNumber=a=>(w._lineMetrics_getLineNumber=W.lineMetrics_getLineNumber)(a);
|
||||
w._lineMetrics_getStartIndex=a=>(w._lineMetrics_getStartIndex=W.lineMetrics_getStartIndex)(a);w._lineMetrics_getEndIndex=a=>(w._lineMetrics_getEndIndex=W.lineMetrics_getEndIndex)(a);w._paragraph_dispose=a=>(w._paragraph_dispose=W.paragraph_dispose)(a);w._paragraph_getWidth=a=>(w._paragraph_getWidth=W.paragraph_getWidth)(a);w._paragraph_getHeight=a=>(w._paragraph_getHeight=W.paragraph_getHeight)(a);w._paragraph_getLongestLine=a=>(w._paragraph_getLongestLine=W.paragraph_getLongestLine)(a);
|
||||
w._paragraph_getMinIntrinsicWidth=a=>(w._paragraph_getMinIntrinsicWidth=W.paragraph_getMinIntrinsicWidth)(a);w._paragraph_getMaxIntrinsicWidth=a=>(w._paragraph_getMaxIntrinsicWidth=W.paragraph_getMaxIntrinsicWidth)(a);w._paragraph_getAlphabeticBaseline=a=>(w._paragraph_getAlphabeticBaseline=W.paragraph_getAlphabeticBaseline)(a);w._paragraph_getIdeographicBaseline=a=>(w._paragraph_getIdeographicBaseline=W.paragraph_getIdeographicBaseline)(a);
|
||||
w._paragraph_getDidExceedMaxLines=a=>(w._paragraph_getDidExceedMaxLines=W.paragraph_getDidExceedMaxLines)(a);w._paragraph_layout=(a,b)=>(w._paragraph_layout=W.paragraph_layout)(a,b);w._paragraph_getPositionForOffset=(a,b,c,e)=>(w._paragraph_getPositionForOffset=W.paragraph_getPositionForOffset)(a,b,c,e);w._paragraph_getClosestGlyphInfoAtCoordinate=(a,b,c,e,f,h)=>(w._paragraph_getClosestGlyphInfoAtCoordinate=W.paragraph_getClosestGlyphInfoAtCoordinate)(a,b,c,e,f,h);
|
||||
w._paragraph_getGlyphInfoAt=(a,b,c,e,f)=>(w._paragraph_getGlyphInfoAt=W.paragraph_getGlyphInfoAt)(a,b,c,e,f);w._paragraph_getWordBoundary=(a,b,c)=>(w._paragraph_getWordBoundary=W.paragraph_getWordBoundary)(a,b,c);w._paragraph_getLineCount=a=>(w._paragraph_getLineCount=W.paragraph_getLineCount)(a);w._paragraph_getLineNumberAt=(a,b)=>(w._paragraph_getLineNumberAt=W.paragraph_getLineNumberAt)(a,b);
|
||||
w._paragraph_getLineMetricsAtIndex=(a,b)=>(w._paragraph_getLineMetricsAtIndex=W.paragraph_getLineMetricsAtIndex)(a,b);w._textBoxList_dispose=a=>(w._textBoxList_dispose=W.textBoxList_dispose)(a);w._textBoxList_getLength=a=>(w._textBoxList_getLength=W.textBoxList_getLength)(a);w._textBoxList_getBoxAtIndex=(a,b,c)=>(w._textBoxList_getBoxAtIndex=W.textBoxList_getBoxAtIndex)(a,b,c);w._paragraph_getBoxesForRange=(a,b,c,e,f)=>(w._paragraph_getBoxesForRange=W.paragraph_getBoxesForRange)(a,b,c,e,f);
|
||||
w._paragraph_getBoxesForPlaceholders=a=>(w._paragraph_getBoxesForPlaceholders=W.paragraph_getBoxesForPlaceholders)(a);w._paragraph_getUnresolvedCodePoints=(a,b,c)=>(w._paragraph_getUnresolvedCodePoints=W.paragraph_getUnresolvedCodePoints)(a,b,c);w._paragraphBuilder_dispose=a=>(w._paragraphBuilder_dispose=W.paragraphBuilder_dispose)(a);w._paragraphBuilder_addPlaceholder=(a,b,c,e,f,h)=>(w._paragraphBuilder_addPlaceholder=W.paragraphBuilder_addPlaceholder)(a,b,c,e,f,h);
|
||||
w._paragraphBuilder_addText=(a,b)=>(w._paragraphBuilder_addText=W.paragraphBuilder_addText)(a,b);w._paragraphBuilder_getUtf8Text=(a,b)=>(w._paragraphBuilder_getUtf8Text=W.paragraphBuilder_getUtf8Text)(a,b);w._paragraphBuilder_pushStyle=(a,b)=>(w._paragraphBuilder_pushStyle=W.paragraphBuilder_pushStyle)(a,b);w._paragraphBuilder_pop=a=>(w._paragraphBuilder_pop=W.paragraphBuilder_pop)(a);w._unicodePositionBuffer_create=a=>(w._unicodePositionBuffer_create=W.unicodePositionBuffer_create)(a);
|
||||
w._unicodePositionBuffer_getDataPointer=a=>(w._unicodePositionBuffer_getDataPointer=W.unicodePositionBuffer_getDataPointer)(a);w._unicodePositionBuffer_free=a=>(w._unicodePositionBuffer_free=W.unicodePositionBuffer_free)(a);w._lineBreakBuffer_create=a=>(w._lineBreakBuffer_create=W.lineBreakBuffer_create)(a);w._lineBreakBuffer_getDataPointer=a=>(w._lineBreakBuffer_getDataPointer=W.lineBreakBuffer_getDataPointer)(a);w._lineBreakBuffer_free=a=>(w._lineBreakBuffer_free=W.lineBreakBuffer_free)(a);
|
||||
w._paragraphStyle_create=()=>(w._paragraphStyle_create=W.paragraphStyle_create)();w._paragraphStyle_dispose=a=>(w._paragraphStyle_dispose=W.paragraphStyle_dispose)(a);w._paragraphStyle_setTextAlign=(a,b)=>(w._paragraphStyle_setTextAlign=W.paragraphStyle_setTextAlign)(a,b);w._paragraphStyle_setTextDirection=(a,b)=>(w._paragraphStyle_setTextDirection=W.paragraphStyle_setTextDirection)(a,b);w._paragraphStyle_setMaxLines=(a,b)=>(w._paragraphStyle_setMaxLines=W.paragraphStyle_setMaxLines)(a,b);
|
||||
w._paragraphStyle_setHeight=(a,b)=>(w._paragraphStyle_setHeight=W.paragraphStyle_setHeight)(a,b);w._paragraphStyle_setTextHeightBehavior=(a,b,c)=>(w._paragraphStyle_setTextHeightBehavior=W.paragraphStyle_setTextHeightBehavior)(a,b,c);w._paragraphStyle_setEllipsis=(a,b)=>(w._paragraphStyle_setEllipsis=W.paragraphStyle_setEllipsis)(a,b);w._paragraphStyle_setStrutStyle=(a,b)=>(w._paragraphStyle_setStrutStyle=W.paragraphStyle_setStrutStyle)(a,b);
|
||||
w._paragraphStyle_setTextStyle=(a,b)=>(w._paragraphStyle_setTextStyle=W.paragraphStyle_setTextStyle)(a,b);w._paragraphStyle_setApplyRoundingHack=(a,b)=>(w._paragraphStyle_setApplyRoundingHack=W.paragraphStyle_setApplyRoundingHack)(a,b);w._strutStyle_create=()=>(w._strutStyle_create=W.strutStyle_create)();w._strutStyle_dispose=a=>(w._strutStyle_dispose=W.strutStyle_dispose)(a);w._strutStyle_setFontFamilies=(a,b,c)=>(w._strutStyle_setFontFamilies=W.strutStyle_setFontFamilies)(a,b,c);
|
||||
w._strutStyle_setFontSize=(a,b)=>(w._strutStyle_setFontSize=W.strutStyle_setFontSize)(a,b);w._strutStyle_setHeight=(a,b)=>(w._strutStyle_setHeight=W.strutStyle_setHeight)(a,b);w._strutStyle_setHalfLeading=(a,b)=>(w._strutStyle_setHalfLeading=W.strutStyle_setHalfLeading)(a,b);w._strutStyle_setLeading=(a,b)=>(w._strutStyle_setLeading=W.strutStyle_setLeading)(a,b);w._strutStyle_setFontStyle=(a,b,c)=>(w._strutStyle_setFontStyle=W.strutStyle_setFontStyle)(a,b,c);
|
||||
w._strutStyle_setForceStrutHeight=(a,b)=>(w._strutStyle_setForceStrutHeight=W.strutStyle_setForceStrutHeight)(a,b);w._textStyle_create=()=>(w._textStyle_create=W.textStyle_create)();w._textStyle_copy=a=>(w._textStyle_copy=W.textStyle_copy)(a);w._textStyle_dispose=a=>(w._textStyle_dispose=W.textStyle_dispose)(a);w._textStyle_setColor=(a,b)=>(w._textStyle_setColor=W.textStyle_setColor)(a,b);w._textStyle_setDecoration=(a,b)=>(w._textStyle_setDecoration=W.textStyle_setDecoration)(a,b);
|
||||
w._textStyle_setDecorationColor=(a,b)=>(w._textStyle_setDecorationColor=W.textStyle_setDecorationColor)(a,b);w._textStyle_setDecorationStyle=(a,b)=>(w._textStyle_setDecorationStyle=W.textStyle_setDecorationStyle)(a,b);w._textStyle_setDecorationThickness=(a,b)=>(w._textStyle_setDecorationThickness=W.textStyle_setDecorationThickness)(a,b);w._textStyle_setFontStyle=(a,b,c)=>(w._textStyle_setFontStyle=W.textStyle_setFontStyle)(a,b,c);
|
||||
w._textStyle_setTextBaseline=(a,b)=>(w._textStyle_setTextBaseline=W.textStyle_setTextBaseline)(a,b);w._textStyle_clearFontFamilies=a=>(w._textStyle_clearFontFamilies=W.textStyle_clearFontFamilies)(a);w._textStyle_addFontFamilies=(a,b,c)=>(w._textStyle_addFontFamilies=W.textStyle_addFontFamilies)(a,b,c);w._textStyle_setFontSize=(a,b)=>(w._textStyle_setFontSize=W.textStyle_setFontSize)(a,b);w._textStyle_setLetterSpacing=(a,b)=>(w._textStyle_setLetterSpacing=W.textStyle_setLetterSpacing)(a,b);
|
||||
w._textStyle_setWordSpacing=(a,b)=>(w._textStyle_setWordSpacing=W.textStyle_setWordSpacing)(a,b);w._textStyle_setHeight=(a,b)=>(w._textStyle_setHeight=W.textStyle_setHeight)(a,b);w._textStyle_setHalfLeading=(a,b)=>(w._textStyle_setHalfLeading=W.textStyle_setHalfLeading)(a,b);w._textStyle_setLocale=(a,b)=>(w._textStyle_setLocale=W.textStyle_setLocale)(a,b);w._textStyle_setBackground=(a,b)=>(w._textStyle_setBackground=W.textStyle_setBackground)(a,b);
|
||||
w._textStyle_setForeground=(a,b)=>(w._textStyle_setForeground=W.textStyle_setForeground)(a,b);w._textStyle_addShadow=(a,b,c,e,f)=>(w._textStyle_addShadow=W.textStyle_addShadow)(a,b,c,e,f);w._textStyle_addFontFeature=(a,b,c)=>(w._textStyle_addFontFeature=W.textStyle_addFontFeature)(a,b,c);w._textStyle_setFontVariations=(a,b,c,e)=>(w._textStyle_setFontVariations=W.textStyle_setFontVariations)(a,b,c,e);w._vertices_create=(a,b,c,e,f,h,l)=>(w._vertices_create=W.vertices_create)(a,b,c,e,f,h,l);
|
||||
w._vertices_dispose=a=>(w._vertices_dispose=W.vertices_dispose)(a);w._animatedImage_create=(a,b,c)=>(w._animatedImage_create=W.animatedImage_create)(a,b,c);w._animatedImage_dispose=a=>(w._animatedImage_dispose=W.animatedImage_dispose)(a);w._animatedImage_getFrameCount=a=>(w._animatedImage_getFrameCount=W.animatedImage_getFrameCount)(a);w._animatedImage_getRepetitionCount=a=>(w._animatedImage_getRepetitionCount=W.animatedImage_getRepetitionCount)(a);
|
||||
w._animatedImage_getCurrentFrameDurationMilliseconds=a=>(w._animatedImage_getCurrentFrameDurationMilliseconds=W.animatedImage_getCurrentFrameDurationMilliseconds)(a);w._animatedImage_decodeNextFrame=a=>(w._animatedImage_decodeNextFrame=W.animatedImage_decodeNextFrame)(a);w._animatedImage_getCurrentFrame=a=>(w._animatedImage_getCurrentFrame=W.animatedImage_getCurrentFrame)(a);w._skwasm_isHeavy=()=>(w._skwasm_isHeavy=W.skwasm_isHeavy)();
|
||||
w._paragraphBuilder_create=(a,b)=>(w._paragraphBuilder_create=W.paragraphBuilder_create)(a,b);w._paragraphBuilder_build=a=>(w._paragraphBuilder_build=W.paragraphBuilder_build)(a);w._paragraphBuilder_setGraphemeBreaksUtf16=(a,b)=>(w._paragraphBuilder_setGraphemeBreaksUtf16=W.paragraphBuilder_setGraphemeBreaksUtf16)(a,b);w._paragraphBuilder_setWordBreaksUtf16=(a,b)=>(w._paragraphBuilder_setWordBreaksUtf16=W.paragraphBuilder_setWordBreaksUtf16)(a,b);
|
||||
w._paragraphBuilder_setLineBreaksUtf16=(a,b)=>(w._paragraphBuilder_setLineBreaksUtf16=W.paragraphBuilder_setLineBreaksUtf16)(a,b);w._skwasm_isWimp=()=>(w._skwasm_isWimp=W.skwasm_isWimp)();var Ab=a=>(Ab=W.malloc)(a),Cc=(a,b)=>(Cc=W._emscripten_timeout)(a,b),X=(a,b)=>(X=W.setThrew)(a,b),Y=a=>(Y=W._emscripten_stack_restore)(a),lc=a=>(lc=W._emscripten_stack_alloc)(a),Z=()=>(Z=W.emscripten_stack_get_current)(),Aa=(a,b)=>(Aa=W._emscripten_wasm_worker_initialize)(a,b);
|
||||
function Ec(a,b,c){var e=Z();try{return B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Jc(a,b,c){var e=Z();try{B.get(a)(b,c)}catch(f){Y(e);if(f!==f+0)throw f;X(1,0)}}function Dc(a,b){var c=Z();try{return B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Kc(a,b,c,e){var f=Z();try{B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}function Fc(a,b,c,e){var f=Z();try{return B.get(a)(b,c,e)}catch(h){Y(f);if(h!==h+0)throw h;X(1,0)}}
|
||||
function Gc(a,b,c,e,f){var h=Z();try{return B.get(a)(b,c,e,f)}catch(l){Y(h);if(l!==l+0)throw l;X(1,0)}}function Lc(a,b,c,e,f,h,l,m){var p=Z();try{B.get(a)(b,c,e,f,h,l,m)}catch(v){Y(p);if(v!==v+0)throw v;X(1,0)}}function Ic(a,b){var c=Z();try{B.get(a)(b)}catch(e){Y(c);if(e!==e+0)throw e;X(1,0)}}function Hc(a,b,c,e,f,h,l){var m=Z();try{return B.get(a)(b,c,e,f,h,l)}catch(p){Y(m);if(p!==p+0)throw p;X(1,0)}}w.wasmMemory=g;w.wasmExports=W;w.stackAlloc=mc;
|
||||
w.addFunction=(a,b)=>{if(!T){T=new WeakMap;var c=B.length;if(T)for(var e=0;e<0+c;e++){var f=B.get(e);f&&T.set(f,e)}}if(c=T.get(a)||0)return c;if(kc.length)c=kc.pop();else{try{B.grow(1)}catch(m){if(!(m instanceof RangeError))throw m;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";}c=B.length-1}try{B.set(c,a)}catch(m){if(!(m instanceof TypeError))throw m;if("function"==typeof WebAssembly.Function){e=WebAssembly.Function;f={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"};for(var h={parameters:[],
|
||||
results:"v"==b[0]?[]:[f[b[0]]]},l=1;l<b.length;++l)h.parameters.push(f[b[l]]);b=new e(h,a)}else{e=[1];f=b.slice(0,1);b=b.slice(1);h={i:127,p:127,j:126,f:125,d:124,e:111};e.push(96);l=b.length;128>l?e.push(l):e.push(l%128|128,l>>7);for(l=0;l<b.length;++l)e.push(h[b[l]]);"v"==f?e.push(0):e.push(1,h[f]);b=[0,97,115,109,1,0,0,0,1];f=e.length;128>f?b.push(f):b.push(f%128|128,f>>7);b.push(...e);b.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);b=new WebAssembly.Module(new Uint8Array(b));b=(new WebAssembly.Instance(b,
|
||||
{e:{f:a}})).exports.f}B.set(c,b)}T.set(a,c);return c};var Nc,Oc;A=function Pc(){Nc||Qc();Nc||(A=Pc)};function Qc(){if(!(0<z))if(ka)ea(w),ya();else{if(!Oc&&(Oc=1,Ea(va),0<z))return;Nc||(Nc=1,w.calledRun=1,ra||(ya(),ea(w),Ea(xa)))}}Qc();moduleRtn=ha;
|
||||
|
||||
|
||||
return moduleRtn;
|
||||
}
|
||||
);
|
||||
})();
|
||||
export default skwasm_heavy;
|
||||